定义个二维数组用来存放3个学生语文、数学、英语和历史的成绩,定义个Average函数(用行指针做参数)计算每个学生的平均成绩,定义个Show函数(用列指针微参数)输出每个学生的每门课的成绩和平均成绩
问题描述:
答
一个简单的实现:
#include <stdio.h>
void Average(int gradeRow[] [4],int row,int * ave ){
int i=0;
while(i<row){
//下面第二个*取grade指向的行的第一个的位置,第一个*取后面运算式表示的位置存储的成绩
ave[i]+=*(*gradeRow+0);
ave[i]+=*(*gradeRow+1);
ave[i]+=*(*gradeRow+2);
ave[i]+=*(*gradeRow+3);
ave[i]=(ave[i]/4);
//printf("ave[%d]=%d\n",i,ave[i]);
i++;
gradeRow++;
}
}
void show(int * gradeCol,int row,int col,int * ave){
int i=0;
int j =0;
while(i<row*col){
printf("第%d个学生的成绩:\n",(j+1));
printf("语文:%d\n",gradeCol[i]);
printf("数学:%d\n",gradeCol[i+1]);
printf("英语:%d\n",gradeCol[i+2]);
printf("历史:%d\n",gradeCol[i+3]);
printf("平均成绩:%d\n",ave[j]);
i+=4;
j++;
}
}
int main(void){
int grade[3][4]={
{80,78,98,79},
{65,76,98,78},
{87,68,94,83},
};
int ave[3]={0,0,0};
Average(grade,3,ave);
show(&grade[0][0],3,4,ave);
return 0;
}