C语言 为什么我的程序只打印出最后一个数字?[已关闭]

4ioopgfo  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(146)

已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
14天前关闭
Improve this question
我的作业是打印出10个数中最大的一个。
我想我已经确定了正确的结构,但是我的程序只输出最后插入的数字:D

#include <stdio.h>

int main()
{
    printf("Give 10 numbers > \n");
    int n;
    int largest = 0;

    for(int i=0; i<10; i++){
        scanf("%d", &n);
    }
    if(n > largest){
       largest = n;
    }
    printf("Your largest number is %d", largest);

return 0;
}

有什么需要帮忙的吗?

a9wyjsp7

a9wyjsp71#

问题是for循环在到达if语句之前运行了10次。在循环的前9次中,您只需在n中输入一个值,然后获得一个新的n值并覆盖它。尝试将if语句移到for循环中,这样它就可以测试n的每次迭代。

qybjjes1

qybjjes12#

有什么需要帮忙的吗?
除了@Delta_G好答案:

错误的最大值,只有负输入

通过移动>测试修复代码后,如果所有输入值都为负值,则max将错误地报告为0。@克里斯
各种方法来修复。
一种是用最负的largest初始化max

// int largest = 0;
int largest = INT_MIN;  // found in <limits.h>

高级问题

如果输入的值超出int范围、非数字、不完整等,该怎么办?
改天再说吧

m4pnthwp

m4pnthwp3#

感谢各位的帮助!
我终于做对了,看来我还有很多东西要学:)

相关问题