某班级有10名同学,每名同学的信息有座位号(整数)、语文成绩、数学成绩、英语成绩,请编写程序完成如下功能:
1.录入并保存10位同学的信息。
2.按照便于查看的方式输出10位同学的信息。
3.根据用户输出的座位号,科目序号(1:语文成绩,2:数学成绩,3:英语成绩)修改成绩。
4.输出每门课程的最高成绩及对应学生座位号。
5.输出总成绩最高学生的所有信息。
6.输出每门课程的总分和平均分。
7.按照总分由高到低对所有学生进行排序并输出。
运行结果:
代码:
#include <stdio.h>
#include <stdlib.h>
void getmax(int grad[][3],int max[3],int s[3])
{
for(int m=0;m<3;m++)
{
max[m] = grad[0][m];
s[m] = 1;
for(int n = 0;n<10;n++)
{
if(grad[n][m] > max[m])
{
max[m] = grad[n][m];
s[m] = n+1;
}
}
}
}
void allmax(int grade[10][3])
{
int all[10];
int tmax,number,max1,max2,max3;
for(int i=0;i<10;i++)
{
for(int a=0;a<3;a++)
{
all[i]=all[i]+grade[i][a];
}
}
tmax=all[0];
number=1;
max1=grade[0][0];max2=grade[0][1];max3=grade[0][2];
for(int j=1;j<10;j++)
{
if(all[j]>tmax)
{
tmax=all[j];
number=j+1;
max1=grade[j][0];max2=grade[j][1];max3=grade[j][2];
}
}
printf("总成绩最高的学生信息为座位号:%d 语文:%d 数学:%d 英语:%d\n",number,max1,max2,max3);
}
//6
void average(int grad[10][3])
{
int s[3]={0};
for(int i=0;i<3;i++)
{
s[i] = 0;
for(int j = 0;j<10;j++)
s[i] += grad[i][j];
}
printf("语文总分:%d 平均分:%.2f\n",s[0],s[0]/10.0);
printf("数学总分:%d 平均分:%.2f\n",s[1],s[1]/10.0);
printf("英语总分:%d 平均分:%.2f\n",s[2],s[2]/10.0);
}
//7
void sort(int grad[][3])
{
int zh[10]; //座位号
for(int i=1;i<=10;i++)
zh[i-1] = i;
for(int i=0;i<9;i++)
{
for(int j=0;j<9-i;j++)
{
int s1 = grad[j][0] + grad[j][1] + grad[j][2];
int s2 = grad[j+1][0] + grad[j+1][1] + grad[j+1][2];
if(s1 < s2)
{
//交换座位号
int t = zh[j];
zh[j] = zh[j+1];
zh[j+1] = t;
//交换成绩
for(int k = 0;k<3;k++)
{
t = grad[j][k];
grad[j][k] = grad[j+1][k];
grad[j+1][k] = t;
}
}
}
}
//输出
for(int i=0;i<10;i++)
{
int s = grad[i][0] + grad[i][1]+grad[i][2];
printf("座位号:%d 总分:%d 语文成绩:%d 数学成绩:%d 英语成绩:%d\n",zh[i],s,grad[i][0],grad[i][1],grad[i][2]);
}
}
int main()
{
int grad[10][3]; //成绩
int zh[10]; //座位号
//1
printf("请按座位号输入三门课的成绩\n");
for(int i = 0;i<10;i++)
{
zh[i] = i+1; //座位号
scanf("%d,%d,%d",&grad[i][0],&grad[i][1],&grad[i][2]);
}
//2
for(int i=1;i<=10;i++)
{
printf("%d,%d,%d,%d",i,grad[i-1][0],grad[i-1][1],grad[i-1][2]);
printf("\n");
}
//3
printf("请输入所需修改成绩的同学的座位号、成绩标号和分数,输入0表示不用修改\n");
int a,b,c,d;
scanf("%d",&a);
while(a!=0) //输入座位号,输入0表示结束
{
scanf("%d,%d",&b,&c);
grad[a-1][b-1] = c;
scanf("%d",&a);
}
//4
int s[3];
int max[3];
getmax(grad,max,s);
printf("座位号:%d 语文成绩max: %d\n",s[0],max[0]);
printf("座位号:%d 数学成绩max: %d\n",s[0],max[1]);
printf("座位号:%d 英语成绩max: %d\n",s[0],max[2]);
//5
allmax(grad);
//6
average(grad);
//7.
sort(grad);
return 0;
}
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int grade[10][3];
printf("请按座位号输入三门课的成绩\n");
for(int i=0;i<10;i++)
{
scanf("%d ,%d,%d",&grade[i][0],&grade[i][1],&grade[i][2]);
}
for(int i=1;i<=10;i++)
{
printf("%d,%d ,%d,%d",i,grade[i-1][0],grade[i-1][1],grade[i-1][2]);
printf("\n");
}
printf("请输入所需修改成绩的同学的座位号、成绩标号和分数,输入0表示不用修改\n");
int a,b,c;
scanf("%d",&a);
while(a!=0){
scanf("%d,%d,%d",&a,&b,&c);
grade[a][b-1]=c;
}
int s[3];
int max[3];
getmax(grade,max,s);
printf("座位号:%d 语文成绩max:%d\n",s[0],max[0]);
printf("座位号:%d 数学成绩max:%d\n",s[1],max[1]);
printf("座位号:%d 英语成绩max:%d\n",s[2],max[2]);
int all[10];
int tmax,number,max1,max2,max3;
allgrade(grade,all);
allmax(all,grade,tmax,number,max1,max2,max3);
return 0;
}
void getmax(int grade[][3],int max[3],int s[3])
{
for(int m=0;m<3;m++)
{ max[m]=grade[0][m];
for(int n=0;n<10;n++)
{ if(grade[n][m]>max[m])
{ max[m]=grade[n][m];
s[m]=n+1;
}
else
{
max[m]=grade[0][m];
s[m]=1;
}
}
}
}
int allgrade(int grade[10][3],int all[10])
{ for(int i=0;i<10;i++)
{
for(int a=0;a<3;a++)
{
all[i]=all[i]+grade[i][a];
}
}
return all;
}
void allmax(int all[10],int grade[10][3],int tmax,int number,int max1,int max2,int max3)
{ for(int i=0;i<10;i++)
{
for(int a=0;a<3;a++)
{
all[i]=all[i]+grade[i][a];
}
}
tmax=all[0];
for(int j=1;j<10;j++)
{
if(all[j]>tmax)
{
tmax=all[j];
number=j+1;
max1=grade[j][0];max2=grade[j][1];max3=grade[j][2];
}
else
{tmax=all[0];
number=1;
max1=grade[0][0];max2=grade[0][1];max3=grade[0][2];}
}
printf("总成绩最高的学生信息为座位号:%d 语文:%d 数学:%d 英语:%d\n",number,max1,max2,max3);
}
```
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!