C++循环输出缺失问题:读取指定数值时少一条打印
问题分析与修复
你的问题核心是:第一个读取的数值没有被输出。
拆解代码逻辑就能找到原因:
- 输入
valCount=2后,程序先读取第一个数值(355)并直接赋值给smallestVal,但这一步没有添加输出语句; - 循环从
i=1开始,条件是i < valCount,所以只会执行1次,仅读取并输出第二个数值(380),导致第一个数的输出缺失。
修复方案1:补全第一个数值的输出
在读取smallestVal后直接添加输出语句,最简单直接:
#include <iostream> using namespace std; int main() { int valCount; int inVal; int smallestVal; int i; cin >> valCount; cin >> smallestVal; // 新增:输出第一个读取的数值 cout << "Value read: " << smallestVal << endl; for (i = 1; i < valCount; ++i) { cin >> inVal; cout << "Value read: " << inVal << endl; if (inVal < smallestVal) { smallestVal = inVal; } } cout << "Smallest: " << smallestVal<< endl; return 0; }
修复方案2:统一循环内处理所有数值(更规范)
把所有数值的读取、输出逻辑都放在循环体系里,避免单独处理第一个数的遗漏:
#include <iostream> using namespace std; int main() { int valCount; int inVal; int smallestVal; int i; cin >> valCount; // 先读第一个数初始化最小值并输出 cin >> inVal; cout << "Value read: " << inVal << endl; smallestVal = inVal; for (i = 1; i < valCount; ++i) { cin >> inVal; cout << "Value read: " << inVal << endl; if (inVal < smallestVal) { smallestVal = inVal; } } cout << "Smallest: " << smallestVal<< endl; return 0; }
两种方案都能实现预期效果:输入2后,会依次输出两个数值的读取信息,最后输出最小值。
内容的提问来源于stack exchange,提问作者surplxs
相关产品推荐
相关产品推荐

