C语言 编写程序处理10个学生的信息,每个学生的信息包括:学号、姓名、三门成绩。平均分 前三名

2025-02-24 09:13:45
推荐回答(2个)
回答1:

#include
#define NUM 10
#define SHOW 3

struct student {
int id; //学号
char name[20]; //名字
float score[3]; //3门成绩
float average; //平均分
}info[NUM];

void getdata() //接受学生数据
{
int i;

for(i=0; i {
printf("please input the %d student infomation like:\n",i+1);
printf("id name score(1) score(2) score(3)\n");
scanf("%d %s %f %f %f",&info[i].id,info[i].name,&info[i].score[0],&info[i].score[1],&info[i].score[2]);
info[i].average = (info[i].score[0] + info[i].score[1] + info[i].score[2])/3.0;
}
return ;
}

void showlist() //输出成绩表
{
int i;

printf("the student information list:\n");
printf("id\tname\tscore(1)\tscore(2)\tscore(3)\taverage\n");
for(i=0; i {
printf("%d\t%s\t%.2f",info[i].id,info[i].name,info[i].score[0]);
printf("\t\t%.2f\t\t%.2f\t\t%.2f\n",info[i].score[1],info[i].score[2],info[i].average);
}

}

void showtop() //平均分前3名的名字和平均分
{
int i,j;
struct student top;

for(i=0; i {
for(j=0; j<(NUM-i); j++)
{
if(info[j].average > info[j+1].average)
{
top = info[j];
info[j] = info[j+1];
info[j+1] = top;
}
}
}

printf("the top three average is:\n");
printf("name\taverage\n");
for(i=NUM; i>NUM-SHOW; i--)
{
printf("%s\t%.2f\n",info[i].name,info[i].average);
}

return;
}

int main()
{
getdata();
showlist();
showtop();
return 0;
}

看到题目现写的,完全按照题目的意思,编译通过,请采纳! 另外可以通过更改宏NUM的值修改学生的个数,更改宏SHOW的值修改显示最高平均分的人数。

回答2:

#include
struct student
{
char name[20];
int xue;
char sex;
int age;
double cheng[4];
double ping;
}stu[1000];
int main()
{
int i,j,n;
double sum;
struct student item;
scanf("%d",&n);
getchar();
for(i=0;i {
sum=0.0;
scanf("%s %d %c %d",stu[i].name,&stu[i].xue,&stu[i].sex,&stu[i].age);
for(j=0;j<4;j++)
scanf("%lf",&stu[i].cheng[j]);
for(j=0;j<4;j++)
sum=sum+stu[i].cheng[j];
stu[i].ping=sum/4;
}
for(j=1;j for(i=0;i if(stu[i].ping {
item=stu[i];
stu[i]=stu[i+1];
stu[i+1]=item;
}

for(i=0;i {
printf("%s %d %c %d ",stu[i].name,stu[i].xue,stu[i].sex,stu[i].age);
for(j=0;j<4;j++)
printf("%lf ",stu[i].cheng[j]);
printf("%lf ",stu[i].ping);
printf("\n");
}
return 0;
}
自己写的,你可以测试下,我的好像多个性别把,用M代表男,W代表女,还有什么问的。可追问 ,希望是你的满意答案,谢谢