程序代码:
#include <stdio.h>
#include <string.h>
struct chengji
{
char name[20];
float math;
float chinese;
float english;
float sum;
int rank;
};
struct fenshu
{
int jiushi;
int bashi;
int qishi;
int liushi;
int bujige;
};
int main()
{
struct chengji list[1000]={0};
struct fenshu mark={0};
char name[20]={0};
int n,i,j;
printf("请输入学生总数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\n请输入第%d个学生姓名机成绩:",i);
scanf("%s%f%f%f",list[i].name,&list[i].math,&list[i].chinese,&list[i].english);
list[i].sum=list[i].math+list[i].chinese+list[i].english;
}
for (j=0;j<n-1;j++)
{
for (i=1;i<n-j;i++)
{
if(list[i].sum<list[i+1].sum)
{
memcpy(&list[0],&list[i+1],sizeof(list)/1000);
memcpy(&list[i+1],&list[i],sizeof(list)/1000);
memcpy(&list[i],&list[0],sizeof(list)/1000);
}
}
}
for (i=1;i<=n;i++)
{
list[i].rank=i;
printf("\n第%d名 姓名:%s,数学:%.2f,语文:%.2f,英语:%.2f,总分:%.2f\n",list[i].rank,list[i].name,list[i].math,list[i].chinese,list[i].english,list[i].sum);
switch((int)(list[i].sum/3/10))
{
case 9:mark.jiushi++;break;
case 8:mark.bashi++;break;
case 7:mark.qishi++;break;
case 6:mark.liushi++;break;
default:mark.bujige++;break;
}
}
printf("\n平均分大于90分的有%d人,平均分80~90分的有%d人,平均分70~80分的有%d人,平均分60~70分的有%d人,平均分小于60分的有%d人。\n",mark.jiushi,mark.bashi,mark.qishi,mark.liushi,mark.bujige);
printf("\n请输入学生姓名:");
scanf("%s",name);
for(i=1;i<=n;i++)
{
if(strstr(list[i].name,name))
{
printf("\n第%d名 姓名:%s,数学:%.2f,语文:%.2f,英语:%.2f,总分:%.2f\n",list[i].rank,list[i].name,list[i].math,list[i].chinese,list[i].english,list[i].sum);
break;
}
}
return 0;
}