C++ for循环未输出正确整数是否为语法错误?
代码存在的问题
- 变量重名逻辑混乱:你将循环计数器和存储输入数量的变量都命名为
inCount,两个完全不同作用的变量互相覆盖,完全背离了题目要求的执行流程。 - 执行流程错误:题目要求先单独读取
inCount的取值(即后续要输入的整数总个数),再循环读取对应个数的整数输出;你的代码是在循环内部每次读取值覆盖inCount,循环条件还额外限制了inCount <=90,逻辑完全不符合需求。 - 以你给出的第一组测试用例为例:第一组输入第一个值是
5(即正确的inCount为5,后续要读5个整数输出),你的代码执行流程如下:- 循环初始化
inCount=0,满足<=90进入循环,读入5覆盖inCount,输出number-5,循环末尾inCount自增为6 - 第二次循环读入30覆盖
inCount,输出number-30,自增为31 - 第三次循环读入85覆盖
inCount,输出number-85,自增为86 - 第四次循环读入90覆盖
inCount,输出number-90,自增为91,此时不满足<=90的循环条件直接结束
最终多输出了本不该输出的数量值5,还少输出了2个后续输入的整数,和预期结果不符。
- 循环初始化
修正后的代码
// 先单独读取输入的整数总个数 int inCount; cin >> inCount; // 用独立的计数器控制循环次数,每次读入要输出的整数 for (int i = 0; i < inCount; i++) { int num; cin >> num; cout << "number-" << num << endl; }
内容的提问来源于stack exchange,提问作者mladic
相关产品推荐
相关产品推荐

