C++自定义函数引用二维数组

用二维数组int[20][2]存放一个班级的20名同学的物理和数学成绩,先设计一个函数输入同学的成绩,再设计一个函数求全班的总平均分和每一门课的平均分。
#include "stdafx.h"
#include "iostream"
using namespace std;
inline int shuru(int[20][2]);
inline int pingjun(int[20][2],char);
int main()
{
int chengji[20][2];
int sums=0,sumw=0;
sums=pingjun(chengji,'s');
sumw=pingjun(chengji,'w');
cout<<"全班的总平均分为:"<<(sums+sumw)/40
<<"\n物理平均分为:"<<sumw/20
<<"\n数学平均分为:"<<sums/20;
return 0;
}
int shuru(int chengji[20][2])
{
int i;
for(i=0;i<=19;i++)
{
cout<<"请输入第"<<i+1<<"个同学的数学成绩:";
cin>>chengji[i][0];
cout<<"请输入第"<<i+1<<"个同学的物理成绩:";
cin>>chengji[i][1];
}
}
int pingjun(int chengji[20][2],char a)
{
int i,sum;
for(i=0;i<=19;i++)
{
if(a=='s')
sum+=chengji[i][0];
if(a=='w')
sum+=chengji[i][1];
}
return sum;
}
我只能写成这样,实在不知道怎么做了,有高手另编一个也行,在在这上面改动最好,谢谢!

#include "stdafx.h"
#include "iostream"
using namespace std;
inline int shuru(int[20][2]);
inline int pingjun(int[20][2],char);
int main()
{
int chengji[20][2];
int sums=0,sumw=0;
shuru(chengji); //调用shuru()函数
sums=pingjun(chengji,'s');
sumw=pingjun(chengji,'w');
cout<<"全班的总平均分为:"<<(sums+sumw)/40
<<"\n物理平均分为:"<<sumw/20
<<"\n数学平均分为:"<<sums/20;
return 0;
}
int shuru(int chengji[20][2])
{
int i;
for(i=0;i<=19;i++)
{
cout<<"请输入第"<<i+1<<"个同学的数学成绩:";
cin>>chengji[i][0];
cout<<"请输入第"<<i+1<<"个同学的物理成绩:";
cin>>chengji[i][1];
}
return 0; //定义了int返回,就要返回一个值,即使这个返回值没什么用
}
int pingjun(int chengji[20][2],char a)
{
int i,sum=0; //sum要初始化
for(i=0;i<=19;i++)
{
if(a=='s')
sum+=chengji[i][0];
if(a=='w')
sum+=chengji[i][1];
}
return sum;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-27
#include<iostream>
using namespace std;
void input(int s[][2])
{
for(int i = 0;i != 20;i++)
{
cout<<"第"<<i+1<<"位学生的 物理 和 数学 成绩分别为:"<<endl;
for(int j = 0;j != 2;j++)
cin>>s[i][j];
}
cout<<"输入完毕!"<<endl;
}
void average(int s[][2])
{
double sum = 0;
for(int i = 0;i != 20;i++)
for(int j = 0;j != 2;j++)
sum += s[i][j];
sum /= 40;
cout<<"总平均分为:"<<sum<<endl;
}
void average_(int s[][2])
{
double sum_shuxue = 0;
double sum_wuli = 0;
for(int i = 0;i != 20;i++)
{
sum_shuxue += s[i][0];
sum_wuli += s[i][1];
}
cout<<"数学平均分为:"<<sum_shuxue/20<<endl;
cout<<"物理平均分为:"<<sum_wuli/20<<endl;
}
int main()
{
int score[20][2];
input(score);
average(score);
average_(score);
system("pause");
return 0;
}
第2个回答  2012-05-26
函数传递二维数组的时侯不能直接提供数组大小,(一维数组不是也不能提供大小吗),比如你的第一个函数应该是int shuru(int chengji[][2],int size),然后数组的行数20通过第二个参数传递
相似回答