#include<stdio.h>
#define N 3
#define M 3
void cal(int x[][M+1]) ;//M+1是因为从M科 加上一个总分 共M+1个元素
void cout(int x[][M+1],double);
int main()
{
int i,j,a[N][M+1]={0},imax,imin,max,min,cnt;
double avg;
for(i=1;i<=N;i++) //?应该有N行才对吧
{
for(j=1;j<=M;j++)//输入前面M科的成绩
{
scanf("%d",&a[i][j]);
}
}
cal(a);//计算总分
max=a[0][M];//先随便定一个最高分/最低分
avg=a[0][M];
imax=0;//随便定一个学生为第一名/最后一名
for(int i=1;i<=N;i++)//开始遍历每个人的总分 选出最高分
{
if(a[i][M+1]>max)
{
max=a[i][M+1];
imax=i;
}
avg=avg+a[i][M+1];
}
avg=avg/N;
printf("学生各科成绩和总分:\n");
for(int i=1;i<=N;i++) {
for(int j=1;j<=M+1;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
cout(a,avg);
printf("最高分学生的信息为:\n");
for(int j=1;j<=M+1;j++)
{
printf("%4d",a[imax][j]);
}
printf("\n");
cout(a,avg);
printf("总分超过平均分的有:%d个同学",cnt);
return 0;
}
void cal(int x[][M+1])
{
for(int i=1;i<=N;i++)
{
for(int j=1;j<=M+1;j++)
{
x[i][M+1]=x[i][j]+x[i][M+1];//计算总分
}
}
}
void cout(int x[][M+1],double n)
{ int cnt=0;
for(int i=1;i<=N;i++)
{
if (x[i][M+1]>=n)
{
cnt++;
}
}
}
*/
我的解答有点错误 以后更正