我是C ++的新手,需要一些帮助来理解这个程序的输出:
#include<iostream.h>
int main(){
int totalAge = 0;
int age[10];
for(int j= 1; j<10; j++){
age[j] = j;
cout << age[j] << endl;
}
for(int i = 0; i<10; i++){
totalAge = age[i];
cout << "Total Age is : " << totalAge << endl;
}
system("pause");
}
命令提示符下的输出为:
1 2 3 4 5 6 7 8 9
Total Age is : 1700868285
Total Age is : 1
Total Age is : 2
Total Age is : 3
Total Age is : 4
Total Age is : 5
Total Age is : 6
Total Age is : 7
Total Age is : 8
Total Age is : 9
Press any key to continue . . .
为什么会显示Total Age is : 1700868285
?我认为它应该是Total Age is : 0
。
答案 0 :(得分:1)
您永远不会设置age[0]
。您的第一个循环从j = 1
开始。当你从未设置时,你如何期望编译器神奇地确定你想要age[0] = 0
?
答案 1 :(得分:1)
//将此处更改为
#include<iostream>
using namespace std;
int main(){
int totalAge = 0;
int age[10];
//Changed here from 1 to 0
for(int j= 0 ; j<10; j++){
age[j] = j;
cout << age[j] << endl;
}
for(int i = 0; i<10; i++){
totalAge = age[i];
cout << "Total Age is : " << totalAge << endl;
}
}
这是我的结果
0
1
2
3
4
5
6
7
8
9
Total Age is : 0
Total Age is : 1
Total Age is : 2
Total Age is : 3
Total Age is : 4
Total Age is : 5
Total Age is : 6
Total Age is : 7
Total Age is : 8
Total Age is : 9
答案 2 :(得分:0)
你的第一个循环从1开始。因此,数组的第一个阀门包含垃圾值,因为它没有初始化。
您使用从0开始的第二个循环读取并打印未初始化的数组的第一个值。说明导致问题的原因
答案 3 :(得分:0)
目前你循环就是这个
for(int j= 1; j<10; j++){
age[j] = j;
cout << age[j] << endl;
}
这意味着您已跳过此位置年龄[0],因为从第一次迭代开始j = 1。这就是编译器在那里显示垃圾的原因。 所以你需要做这个改变
for(int j= 0; j<10; j++){
age[j] = j;
cout << age[j] << endl;
}
意味着你只需要做j = 0,剩下的事情已经完成了。