#include <stdio.h>
#include <string.h>
struct Student
{
char num[20];
char name[20];
double Gaoshu;
double Puwu;
double Yingyu;
double Tiyu;
double Zhexue;
double average;
double best;
double var;
int flag;
}stu[5];
double grade[5],best[5];
int flag[5];
int main()
{
int i,fun;
double tmp;
char obj[20];
printf("请按照提示输入5位同学的信息...\n\n");
for(i=0;i<5;i++)
{
tmp=0;
printf("请输入第%d位同学的学号:",i+1);
scanf("%s",stu[i].num);
printf("请输入该同学的姓名:");
scanf("%s",stu[i].name);
printf("请输入该同学高数成绩:");
scanf("%lf",&stu[i].Gaoshu);
if(tmp<stu[i].Gaoshu)
{
tmp=stu[i].Gaoshu;
stu[i].flag=0;
}
if(best[0]<stu[i].Gaoshu)
{
best[0]=stu[i].Gaoshu;
flag[0]=i;
}
grade[0]+=stu[i].Gaoshu;
printf("请输入该同学普物成绩:");
scanf("%lf",&stu[i].Puwu);
if(tmp<stu[i].Puwu)
{
tmp=stu[i].Puwu;
stu[i].flag=1;
}
if(best[1]<stu[i].Puwu)
{
best[1]=stu[i].Puwu;
flag[1]=i;
}
grade[1]+=stu[i].Puwu;
printf("请输入该同学英语成绩:");
scanf("%lf",&stu[i].Yingyu);
if(tmp<stu[i].Yingyu)
{
tmp=stu[i].Yingyu;
stu[i].flag=2;
}
if(best[2]<stu[i].Yingyu)
{
best[2]=stu[i].Yingyu;
flag[2]=i;
}
grade[2]+=stu[i].Yingyu;
printf("请输入该同学体育成绩:");
scanf("%lf",&stu[i].Tiyu);
if(tmp<stu[i].Tiyu)
{
tmp=stu[i].Tiyu;
stu[i].flag=3;
}
if(best[3]<stu[i].Tiyu)
{
best[3]=stu[i].Tiyu;
flag[3]=i;
}
grade[3]+=stu[i].Tiyu;
printf("请输入该同学哲学成绩:");
scanf("%lf",&stu[i].Zhexue);
if(tmp<stu[i].Zhexue)
{
tmp=stu[i].Zhexue;
stu[i].flag=4;
}
if(best[4]<stu[i].Zhexue)
{
best[4]=stu[i].Zhexue;
flag[4]=i;
}
grade[4]+=stu[i].Zhexue;
stu[i].average=(stu[i].Gaoshu+stu[i].Puwu+stu[i].Yingyu+stu[i].Tiyu+stu[i].Zhexue)/5.0;
stu[i].var=((stu[i].Gaoshu-stu[i].average)*(stu[i].Gaoshu-stu[i].average)+(stu[i].Puwu-stu[i].average)*(stu[i].Puwu-stu[i].average)+(stu[i].Yingyu-stu[i].average)*(stu[i].Yingyu-stu[i].average)+(stu[i].Tiyu-stu[i].average)*(stu[i].Tiyu-stu[i].average)+(stu[i].Zhexue-stu[i].average)*(stu[i].Zhexue-stu[i].average))/5.0;
putchar('\n');
}
printf("\n信息已录入完毕,请选择操作...\n\n\n");
for(i=0;i<5;i++)
grade[i]/=5.0;
while(1)
{
printf(" 功能菜单\n\n");
printf("1 - 显示每个同学5科的平均成绩\n");
printf("2 - 查询科目平均成绩\n");
printf("3 - 查询科目最优成绩\n");
printf("4 - 查询指定同学的最优单科成绩\n");
printf("5 - 查询指定同学的各科成绩方差\n");
printf("0 - 退出\n\n");
printf("请输入操作指令:");
scanf("%d",&fun);
printf("\n");
if(fun==6)
{
printf("您已安全退出...\n\n");
break;
}
switch(fun)
{
case 1:
{
for(i=0;i<5;i++)
printf("%d %s %s %.2lf\n",i+1,stu[i].num,stu[i].name,stu[i].average);
putchar('\n');
}break;
case 2:
{
printf("请输入所要查询的科目:");
scanf("%s",&obj);
putchar('\n');
if(strcmp(obj,"Gaoshu")==0||strcmp(obj,"高数")==0) printf("Gaoshu:%.2lf\n",grade[0]);
else if(strcmp(obj,"Puwu")==0||strcmp(obj,"普物")==0) printf("Puwu:%.2lf\n",grade[1]);
else if(strcmp(obj,"Yingyu")==0||strcmp(obj,"英语")==0) printf("Yingyu:%.2lf\n",grade[2]);
else if(strcmp(obj,"Tiyu")==0||strcmp(obj,"体育")==0) printf("Tiyu:%.2lf\n",grade[3]);
else printf("Zhexue:%.2lf\n",grade[4]);
putchar('\n');
}break;
case 3:
{
printf("请输入所要查询的科目:");
scanf("%s",&obj);
putchar('\n');
if(strcmp(obj,"Gaoshu")==0||strcmp(obj,"高数")==0) printf("%s %s %.2lf\n",stu[flag[0]].num,stu[flag[0]].name,stu[flag[0]].Gaoshu);
else if(strcmp(obj,"Puwu")==0||strcmp(obj,"普物")==0) printf("%s %s %.2lf\n",stu[flag[1]].num,stu[flag[1]].name,stu[flag[1]].Puwu);
else if(strcmp(obj,"Yingyu")==0||strcmp(obj,"英语")==0) printf("%s %s %.2lf\n",stu[flag[2]].num,stu[flag[2]].name,stu[flag[2]].Yingyu);
else if(strcmp(obj,"Tiyu")==0||strcmp(obj,"体育")==0) printf("%s %s %.2lf\n",stu[flag[3]].num,stu[flag[3]].name,stu[flag[3]].Tiyu);
else printf("%s %s %.2lf\n",stu[flag[4]].num,stu[flag[4]].name,stu[flag[4]].Zhexue);
putchar('\n');
}break;
case 4:
{
printf("请输入所要查询的同学学号:");
scanf("%s",&obj);
putchar('\n');
for(i=0;i<5;i++)
if(strcmp(stu[i].num,obj)==0)
{
printf("%s %s ",stu[i].num,stu[i].name);
switch(stu[i].flag)
{
case 0:printf("Gaoshu %.2lf\n",stu[i].Gaoshu);break;
case 1:printf("Puwu %.2lf\n",stu[i].Puwu);break;
case 2:printf("Yingyu %.2lf\n",stu[i].Yingyu);break;
case 3:printf("Tiyu %.2lf\n",stu[i].Tiyu);break;
case 4:printf("Zhexue %.2lf\n",stu[i].Zhexue);break;
}
break;
}
putchar('\n');
}break;
case 5:
{
printf("请输入所要查询的同学学号:");
scanf("%s",&obj);
putchar('\n');
for(i=0;i<5;i++)
if(strcmp(stu[i].num,obj)==0)
{
printf("%s %s %.2lf\n",stu[i].num,stu[i].name,stu[i].var);
break;
}
putchar('\n');
}break;
}
}
return 0;
}
那个方差没看明白你什么意思,我想的是:先求A同学各科的平均分,然后用他各科的分数减去他的平均分再平方,然后求和,最后除以5。如果不对你自己改改吧。或者把公式告诉我,我再改。
话说,您这10分不好赚啊,花了我老半天呢。
求好评!!!
追问....看不懂。。。