首页 > 解决方案 > 用于 check_order 的 C 程序无法正常工作

问题描述

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

例如。输入: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;
}

解决。谢谢大家!!!:)

标签: cloops

解决方案


当您不初始化输入时,它会得到一个垃圾值。它可以是积极的或消极的——你永远不知道哪个值。为了避免这种情况,您必须提供一个初始化值,这样您几乎总是可以完全控制您的变量。始终建议为您的变量设置一个初始化值。

#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;
}

推荐阅读