C++中for循环未遍历数组元素,仅重复输出同一值求助
解决C++二维数组循环输出全为同一值的问题
嘿,我碰到过好几个同学遇到这种情况,大概率是你在循环输出的时候没正确使用动态索引,一直访问了数组里的同一个元素!
先给你看看最常见的错误写法——比如你可能在输出循环里固定写死了索引,像这样:
#include <iostream> using namespace std; int main() { double prices[3][3] = {10.95, 16.32, 12.15, 8.22, 15.98, 26.22, 13.54, 6.45, 17.59}; // 这里犯了关键错误:一直访问prices[0][0] for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cout << prices[0][0] << " "; } cout << endl; } return 0; }
这段代码里,不管外层和内层循环怎么跑,你始终在输出数组的第一个元素prices[0][0],自然所有位置都是10.95啦!
下面是修正后的正确代码,我还加了一些细节让输出更规范:
#include <iostream> #include <iomanip> // 用来设置输出精度,保证价格显示两位小数 using namespace std; int main() { // 用嵌套大括号初始化二维数组,结构更清晰 double prices[3][3] = { {10.95, 16.32, 12.15}, {8.22, 15.98, 26.22}, {13.54, 6.45, 17.59} }; cout << "3x3价格数组输出结果:" << endl; // 正确使用循环变量i和j作为索引,遍历每个元素 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cout << fixed << setprecision(2) << prices[i][j] << " "; } cout << endl; } return 0; }
重点要注意这几点:
- 输出时一定要用
prices[i][j],让i和j随着循环动态变化,这样才能遍历到数组的每一个元素 - 用嵌套大括号初始化二维数组,能更直观地对应3行3列的结构,也不容易出错
- 加上
fixed和setprecision(2)可以让价格始终显示两位小数,符合实际需求
如果你的问题不是输出循环的问题,而是输入时的错误(比如所有输入都存到了同一个索引),那只要把输入循环里的索引改成prices[i][j]就行啦!
内容的提问来源于stack exchange,提问作者Gina Cucchiara
相关产品推荐
相关产品推荐

