C程序check_order无法正常工作

时间:2018-06-08 08:26:18

标签: c loops

我使用在线GeeksforGeeks学习如何编码。我刚刚开始学习,但由于某种原因,当我的输入总和超过3616时,编译器会返回垃圾。任何专家都可以向我解释为什么以及如何改进我的代码?

EG。输入:1 2 3 4 5 0输出:递增顺序//输入和< 3616

输入:1 2 3614 0输出:不增加顺序//输入总和> 3616

这就是问题:

编写程序check_order.c以读入正整数列表。只要输入的整数按递增顺序,程序将继续询问下一个正整数。输入数据不按递增顺序或输入值为零时,输入结束。然后,程序应报告输入数据是否按顺序递增。 您可以假设将输入至少一个正整数。如果列表中只有一个正整数,我们将按顺序处理列表。 您可以在main()函数中编写所有代码。

#include <stdio.h>  

int main(void){
    int input, input2;
    do{
        input2 = input;
        scanf("%d", &input);
        printf("Enter positive integer: %d\n", input);
    }

    while(input> input2);

    if(input< input2){
        if(input == 0){
            printf("Data are in increasing order.");  
        }
        else{
            printf("Data are not in increasing order.");
        }
    }
    else{
        printf("Data are in increasing order.");
    }
    return 0;
}

解决。谢谢大家! :)

1 个答案:

答案 0 :(得分:0)

如果不初始化输入,则会获得垃圾值。它可以是正面的也可以是负面的 - 你永远无法知道哪个值。为避免这种情况,您必须提供初始值,这样您几乎总能完全控制变量。始终建议为变量设置初始值。

#include <stdio.h>  

int main() {
    int input = 0, input2;
    do {
        input2 = input;
        scanf("%d", &input);
        printf("Enter positive integer: %d\n", input);
    }
    while(input > input2);
    if (input < input2) {
        if(input == 0) {
            printf("Data are in increasing order.");  
        }
        else {
        printf("Data are not in increasing order.");
        }
    }
    else {
        printf("Data are in increasing order.");
    }
    return 0;
}