2015-10-06 169 views
-4

这个问题是关于SPOJ教程问题:为什么不能使用此代码?

你的程序是使用蛮力的方法,以找到答案生命,宇宙以及一切。更确切地说...重写从输入到输出的小数字。在读入数字42后停止处理输入。输入处的所有数字都是一位或两位数的整数。

我想在没有if-else语句的情况下运行该程序,但该程序不起作用。有人可以告诉我我做错了什么吗?

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
    int i; 

    while (i != 42) 
    { 
    putchar(i); 
    i = getchar(); 
    } 

    exit(0); 
} 
+2

'i'在第一次迭代期间未初始化 - 其值为* indeterminate *。 –

+0

在得到i的值等于42后,程序是否应该检测退出语句? – shikhar

+1

42不是一个单独的字符 –

回答

1

下面是一个快速和肮脏的方式来获得你想要的结果。

由于您希望用户输入号码(由多个字符组成),因此您需要使用scanf()而不是getchar()

scanf()的文档http://www.cplusplus.com/reference/cstdio/scanf/

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
    int i = 0; 

    while (i != 42) 
    { 
    scanf("%d", &i); 
    printf("You have entered : %d\n", i); 
    } 

    printf("You have successfuly entered 42!\n"); 
    exit(0); 
} 

希望这有助于。

+0

我不认为你应该为在线挑战提供正确的答案,而你没有! –

相关问题