定义个二维数组用来存放3个学生语文、数学、英语和历史的成绩,定义个Average函数(用行指针做参数)计算每个学生的平均成绩,定义个Show函数(用列指针微参数)输出每个学生的每门课的成绩和平均成绩

定义个二维数组用来存放3个学生语文、数学、英语和历史的成绩,定义个Average函数(用行指针做参数)计算每个学生的平均成绩,定义个Show函数(用列指针微参数)输出每个学生的每门课的成绩和平均成绩

问题描述:

img

一个简单的实现:

#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;
}