数组列表打印错误的数字

时间:2013-04-05 13:20:16

标签: c++

我是C ++的新手,我正在尝试编写一个程序来接受一组考试结果并将其打印出来直方图。我正在分阶段编写代码,此时我正试图让它接受考试标记,然后在列表中打印出来,以确保它在继续直方图之前工作。

我的问题是,当我将数字输入到我的数组然后打印出来时,我会得到一个奇怪的数字,例如我输入数字1,2,3,4

预期的控制台输出: 1 2 3 4

实际输出: -858993460 1 2 3 4

所以我知道这对我的代码一定有问题,但我不确定有什么能帮到你的吗?

代码:

void readExamMarks(int examMarks[], int sizeOfArray){

   cout << "Please enter a set of exam marks to see a histogram for:" << endl;
   for( int x = 0; x < sizeOfArray; x++){
      cin >> x;
      examMarks[x] = x;
   }
}

void printExamMarks(int examMarks[], int sizeOfArray){

    system("cls");
    for(int x = 0; x < sizeOfArray; x++){

        cout << examMarks[x] << endl;
    }
}

int main() 
{ 
    int examMarks[5];

    readExamMarks(examMarks, 5);
    printExamMarks(examMarks,5);

    system("PAUSE");
}

3 个答案:

答案 0 :(得分:3)

您正在重复使用x数组索引和数据:

for( int x = 0; x < sizeOfArray; x++){
    cin >> x;
    examMarks[x] = x;
}

您需要为数组索引使用单独的变量:

int x = 0;
for( int idx = 0; idx < sizeOfArray; idx++){
    cin >> x;
    examMarks[idx] = x;
}

答案 1 :(得分:1)

问题出在这里:

for( int x = 0; x < sizeOfArray; x++){
   cin >> x;
   examMarks[x] = x;
}

您使用x作为数组索引,并始终接受x作为输入值。

答案 2 :(得分:1)

for( int x = 0; x < sizeOfArray; x++){
    cin >> x;

您正在阅读循环迭代器。它应该是

int temp
for( int x = 0; x < sizeOfArray; x++){
    cin >> temp;
    examMarks[x] = temp;