当我尝试输出2D数组时,它会输出错误的数字。

时间:2016-11-10 02:05:18

标签: c++ multidimensional-array

是我的输入输出还是导致问题的其他因素。我对C ++很陌生,所以如果事情很简单,我会提前感到抱歉。如果您需要更多信息,我已在代码中包含有关问题的更多详细信息。

#include <iostream>
#include <iomanip>

using namespace std;

void input(string names[],int grades[][3]){
    for(int n=0;n<3;n++){//Enter 3 into the grade book
        cout<<"Please enter student name "<<n+1<<endl;
            cin>>names[n];
}
    for(int r=0;r<3;r++){// Enter 4 grades for each of the 3 students you added     to the grade book
        cout<<"Please enter 4 grades for "<<names[r]<<endl;
        for(int c=0;c<4;c++){
            cout<<"Grade "<<c+1<<": ";
                cin>>grades[r][c];
        }
        cout<<endl;
    }
}

//ignore this it wil;l be used to average the grades later
void math(int grades[][3], double average[]){

}
//If I input these number just to test the program
//student 1: 1,1,1,1
//student 2: 2,2,2,2
//student 3: 3,3,3,3
//it give me
//student 1: 1,1,1,2
//student 2: 2,2,2,3
//student 3: 3,3,3,3
void output(string names[],int grades[][3],double average[],char letter[]){
    for(int r=0;r<3;r++){
        cout<<names[r]<<" ";
        for(int c=0;c<4;c++){
            cout<<grades[r][c]<<" ";
        }
            cout<<endl;
    }
}

int main(){

int grades[2][3];
double average[2];
char letter[2];
string names [2];

input(names,grades);
math(grades,average);
output(names,grades,average,letter);


return 0;
}

2 个答案:

答案 0 :(得分:0)

在C ++中,数组声明中使用的数字不是最大索引而是元素数。

你的所有数组声明都缺少一个元素,因此为grades分配一个元素(对于二维,包括参数),averageletter和{{1} }。

答案 1 :(得分:0)

看起来我的经验不如你,但我最近被介绍给了职能部门。

您将下标值传递给grade参数,而不是将两个下标值都留空。尝试从grades参数中取出括号中的3。运行代码,看看会发生什么。