我刚刚开始在c编程中学习循环,并试图创建一个简单的程序来测试我的知识,但它不起作用

时间:2017-04-27 10:09:57

标签: loops

我只想要一个用户输入a和b值的程序,如果值a小于b,则会要求用户重复此过程。 这是我的计划:

#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” (请注意,最后一个数字总是随机的)

请帮我运行这个程序。

2 个答案:

答案 0 :(得分:0)

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

尝试 -

int a = 0, b = 0, c;

答案 1 :(得分:0)

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

其他SO answer

解释了未初始化变量的情况