c语言编程问题:有3个学生4门课程的成绩,用函数计算每个学生的平均成绩,然后输出。

编写一个求3个学生的平均成绩的程序,学生成绩存放在a数组中,而求平均成绩需调用函数float aver(int (*p)[4],int n),n为学生数,每个学生有4门成绩。其中a数组为:
A=┌ ┐
│65 67 70 60 │
│80 87 90 81 │
│90 99 100 98│
└ ┘

#include "stdio.h"

float aver(int (*p)[4],int n)
{
int i;
float sum=0;
for (i=0; i<4; i++)
{
sum += p[n][i];
}
return sum/4.;
}

void main()
{
int A[][4] = { { 65, 67,  70, 60 },
               { 80, 87,  90, 81 },
               { 90, 99, 100, 98 }};

int i;
for (i=0; i<3; i++)
{
printf("第%d个学生平均成绩为%.2f\n", i+1, aver(A, i));
}
}

运行结果如下:


请采纳

追问

腻害,太谢谢了!!

追答

不客气

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-20
#include<stdio.h>
void xsaver(float (*p1)[4],int n) //每个学生的平均分
{
float stud[n];int i,j;
stud[0]=0;stud[1]=0;stud[2]=0;
for(i=0;i<n;i++)
{
for(j=0;j<4;j++)
stud[i]+=*(*(p1+i)+j);
printf("stud[%d]=%5.2f\t",i,stud[i]/4);
}
printf("\n");
}
void kcaver(float (*p)[4],int n)//每门课程的平均分
{
int i,j;float course[n];
course[0]=0;course[1]=0;course[2]=0;course[3]=0;
for(j=0;j<n;j++)
{
for(i=0;i<3;i++)
course[j]+=*(*(p+i)+j);
printf("course[%d]=%5.2f\t",j,course[j]/3);
}
}
void max(float *p,int n)//p=*score=score[0],score[0]是个列指针,p也是列指针
{
float max=*p;int maxi,maxj,k=0;
for(int j=0;j<=n-1;j++)
if(*(p+j)>max){max=*(p+j);k=j;}
maxi=k/4;maxj=k%4;
printf("\nk=%d maxi=%d maxj=%d max=%5.2f\n",k,maxi,maxj,max);
}
int main()
{
float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};
xsaver(score,3);//每个学生的平均分
kcaver(score,4);//每门课程的平均分
max(*score,12);//求最高分
return 0;
}