2017-04-27 51 views
-1

我只想要一个程序,用户输入a和b的值,并会问如果值a小于b,则用户重复此过程。 这里是我的程序:我刚刚开始学习循环在C编程,并试图创建一个简单的程序来测试我的知识,但它不会工作


#include <stdio.h> 
#include <math.h> 
int main(void) 
{ 
     int a, b ,c; 

while (a<=b) 
{ 
     printf("Please enter a value for a:\n"); 
     scanf("%d", &a); 
     printf("Please enter a value for b:\n"); 
     scanf("%d", &b); 

     if (a<=b) 
       printf("a must be greater than b:\n"); 
} 
     c=a+b; 
     printf("The answer of c is: %d\n", c); 
return 0; 
} 

我只要一运行程序,它打印:“C的答案是:1829030” (请注意,最后一个数字始终是随机的)

请帮我运行这个程序。

回答

0

未初始化的非静态局部变量的值是不确定的。这意味着该值可以是运行时的任何值。在这种情况下,a,b,c的值是随机的,并且循环可以或不可以基于a,b,c的随机值输入。

尝试 -

int a = 0, b = 0, c; 
0

您声明变量a, b, c但你不给他们一个初始值。这意味着他们有一个不确定的价值。 在声明a and b没有给出任何值之后,您继续并在while (a <= b)条件下比较它们。 C不知道如何比较这些无价值变量显然,所以它完全跳过你的循环。 您可以通过最初给出int a = 0, b = 1值来避免此问题。 这样你就可以确保循环至少运行一次。

与未初始化的变量会发生什么事在这个其他SO answer

+0

解释谢谢! 但是我用程序没有声明a和b的值和程序的工作。你能解释一下当你应该用值来声明这些吗? –

+0

请在SO上阅读其他答案:http://stackoverflow.com/questions/4532871/define-integer-int-whats-the-default-value –

相关问题