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

一个学习小组有5个人,每个人有三门课的考试成绩。求小组分科的平均成绩和各同学平均成绩;同时将各位同学的平均成绩按照从高到低的顺序排名后输出其姓名、平均成绩以及排序号。张王... 一个学习小组有5个人,每个人有三门课的考试成绩。求小组分科的平均成绩和各同学平均成绩;同时将各位同学的平均成绩按照从高到低的顺序排名后输出其姓名、平均成绩以及排序号。
张 王 李 赵 周
Math 80 61 59 85 76
C 75 65 63 87 77
Eng 92 71 70 90 85
一定要用二维数组来,因为我们刚学到二维数组,函数什么的不要用
展开
 我来答
x120765121
2011-04-08 · TA获得超过701个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:46.3万
展开全部
其实这个用结构体更加的好,如果要用二维数组的话可以
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数。祝你进步!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b452582
2011-04-08 · TA获得超过2581个赞
知道小有建树答主
回答量:953
采纳率:100%
帮助的人:337万
展开全部
#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();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lchn_kyd
2011-04-08 · TA获得超过299个赞
知道小有建树答主
回答量:559
采纳率:0%
帮助的人:298万
展开全部
int result[5][3]={{80,75,92},{61,65,71},{59.63,70},{85,87,90},{76,77,85}};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式