程序仅输出最后输入数字问题排查:求10个数最大值的代码错误
问题排查:找出10个数字最大值的程序错误
你的代码存在两个关键问题,导致程序只能输出最后输入的数字:
1. 最大值判断逻辑位置错误
你把if(n > largest)放在了for循环的外面,这意味着循环结束后,只会拿最后一次输入的数字和初始值largest=0做比较,前面9次输入的数字根本没有参与最大值的判断。
2. 最大值初始值设置不合理
largest初始化为0,如果输入的10个数字全是负数,程序会错误地输出0,而不是实际的最大负数。
修正后的代码
#include <stdio.h> int main() { printf("Give 10 numbers > \n"); int n; // 读取第一个数字作为最大值的初始值,适配正负输入场景 scanf("%d", &n); int largest = n; // 循环处理剩下的9个数字 for(int i=1; i<10; i++){ scanf("%d", &n); // 每次输入后立即比较并更新最大值 if(n > largest){ largest = n; } } printf("Your largest number is %d", largest); return 0; }
修正说明
- 先读取第一个输入数字作为
largest的初始值,确保初始值来自输入集合,避免全负数场景的错误。 - 将最大值判断逻辑移入
for循环内部,每次输入新数字后立刻与当前最大值比较,实时更新最大值,确保所有输入数字都参与判断。
内容的提问来源于stack exchange,提问作者Jessica S
相关产品推荐
相关产品推荐

