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

编写程序处理10个学生的信息,每个学生的信息包括:学号、姓名、三门成绩。要求从键盘输入学生的数据用一个函数实现,输出成绩表(包括每个学生的学号、姓名、三门成绩及平均分数)用一个函数,再用一个函数输出平均分在前3名的学生姓名及平均分。
不要百度的啊,要自己手打的,谢谢啦!

#include <stdio.h>
#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<NUM; 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<NUM; 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<NUM; 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的值修改显示最高平均分的人数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-16
#include<stdio.h>
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<n;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<n;j++)
for(i=0;i<n;i++)
if(stu[i].ping<stu[i+1].ping)
{
item=stu[i];
stu[i]=stu[i+1];
stu[i+1]=item;
}

for(i=0;i<n;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代表女,还有什么问的。可追问 ,希望是你的满意答案,谢谢追问

void average(struct student stu1[]);和
main()
是两个函数么?

追答

你写的两个都是函数啊,一个main函数是一个程序必不可少的,其余的函数可以自己定义,我的就一个函数吧,用了一个结构体

追问

意思是 那个void 也是一样函数?

追答

void average(struct student stu1[]);,这个吗??这个当然是了,void表示返回类型,函数名是average,后面是参数

本回答被提问者采纳
相似回答