2

我是 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");
}
4

3 回答 3

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;
}
于 2013-04-05T13:22:12.783 回答
1

问题在这里:

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

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

于 2013-04-05T13:23:26.303 回答
1
for( int x = 0; x < sizeOfArray; x++){
    cin >> x;

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

int temp
for( int x = 0; x < sizeOfArray; x++){
    cin >> temp;
    examMarks[x] = temp;
于 2013-04-05T13:23:27.877 回答