C语言关于二维数组的一道题,题目见补充。

一个学习小组有5个人,每个人有三门课的考试成绩。求小组分科的平均成绩和各同学平均成绩;同时将各位同学的平均成绩按照从高到低的顺序排名后输出其姓名、平均成绩以及排序号。
张 王 李 赵 周
Math 80 61 59 85 76
C 75 65 63 87 77
Eng 92 71 70 90 85
一定要用二维数组来,因为我们刚学到二维数组,函数什么的不要用

第1个回答  2011-04-08
其实这个用结构体更加的好,如果要用二维数组的话可以
int Student[5][4];
5表示 5个人
4表示 3门成绩 和 每个人的平均成绩
存储的时候这样,假设你要存储 张 的成绩
Student[0][0] = 80, student[0][1] = 75,student[0][2]=92;student[0][3]=平均成绩;
同理 王的成绩
Student1][0] = 80, student[1][1] = 75,student[1][2]=92,student[1][3]=平均成绩;
其他的也一样,如果要按平均成绩输出,即对平均成绩比较即可,即比较
student[0][3],student[1][3],student[2][3],student[3][3],student[4][3],
其实一维数组就像是一排格子
二维数组就像是很多排格子,他包含个很多个一排格子。我们把每个人的成绩存储在其中一排,每人占一排。他的容量就是5*3=15个int数。祝你进步!
第2个回答  2011-04-08
#include<conio.h>
#include<stdio.h>
main()
{ int data[4][6]={{80,61,59,85,76,0},{75,65,63,87,77,0},{92,70,71,90,85,0},{0,0,0,0,0,0}};
int i,j,k;
for(i=0;i<3;i++)
{ for(j=0;j<5;j++)
{ data[i][5]+=data[i][j]; //在第3行和第5列中求每位学生和
data[3][j]+=data[i][j]; } //每门课程的成绩总和
}
for(k=0;k<3;k++)
data[k][5]=data[k][5]/5; //在第5列中计算每门课程平均分
for(k=0;k<5;k++)
data[3][k]=data[3][k]/3; //在第3列中计算每位学生的平均分
printf("平均成绩计算结果:\n");
for(i=0;i<4;i++)
{ for(j=0;j<6;j++)
printf("%2d ",data[i][j]); //输出统计结果
printf("\n");
}
getch();
}追问

貌似结果不对呀,还有排序号那个你没做出来。。姓名这个也没输出

追答

#include
#include
main()
{ int data[4][6]={{80,61,59,85,76,0},{75,65,63,87,77,0},{92,70,71,90,85,0},{0,0,0,0,0,0}};
char name[5][10]={"zhang","wang","li","zhao","zhou"}, t[10];
int i,j,k,d,temp,kk;
for(i=0;i<3;i++)
{ for(j=0;j<5;j++)
{ data[i][5]+=data[i][j]; /*在第3行和第5列中求每位学生和*/
data[3][j]+=data[i][j]; } /*每门课程的成绩总和*/
}
for(k=0;k<3;k++)
data[k][5]=data[k][5]/5; /*在第5列中计算每门课程平均分*/
for(k=0;k<5;k++)
data[3][k]=data[3][k]/3; /*在第3列中计算每位学生的平均分 */

printf("\n\n");
for(i=0;i<5;i++)
printf("%8s ",name[i]);
printf("\n");
for(i=0;i<4;i++)
{ for(j=0;j<6;j++)
printf("%8d ",data[i][j]); /*输出统计结果*/
printf("\n");
}

/*Sort*/
for(i=0;i<4;i++)
{ d=data[3][i]; k=i; /* 按列排序 */

for(j=i+1;j<5;j++)
if(d<data[3][j]){ d=data[3][j]; k=j; }
for(j=0;j<4;j++)
{ temp=data[j][k]; data[j][k]=data[j][i]; data[j][i]=temp; }
strcpy(t,name[i]); strcpy(name[i],name[k]); strcpy(name[k],t);
}

printf("平均成绩计算结果:\n");
for(i=0;i<5;i++)
printf("%8s ",name[i]);
printf("\n");
for(i=0;i<4;i++)
{ for(j=0;j<6;j++)
printf("%8d ",data[i][j]); /*/输出统计结果*/
printf("\n");
}
getch();
}

本回答被提问者采纳
第3个回答  2011-04-08
int result[5][3]={{80,75,92},{61,65,71},{59.63,70},{85,87,90},{76,77,85}};
相似回答