各位帮帮改改程序!排序和统计运行错误
/* Note:Your choice is C IDE */#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "ctype.h"
char name[6];
int i,num[6];
float yuwen[6],shuxue[6],yingyu[6];
input(int go)
{
char name[6];
int i,num[6];
float yuwen[6],shuxue[6],yingyu[6];
for(i=0;i<6;i++)
{
printf("请输入第[%d]学生的姓名\n",i+1);
scanf("%s",name);
printf("请输入第[%d]学生的学号\n",i+1);
scanf("%d",&num[i]);
printf("请输入第[%d]学生的语文成绩\n",i+1);
scanf("%f",&yuwen[i]);
printf("请输入第[%d]学生的数学成绩\n",i+1);
scanf("%f",&shuxue[i]);
printf("请输入第[%d]学生的英语成绩\n",i+1);
scanf("%f",&yingyu[i]);
}
return(i);
}
sort1()
{ int n;
float t;
int i;
char a[10];
for(i=0;i<6;i++)
{
if(num[i]>num[i+1]) /*条件成立,交换前后学号*/
n=num[i+1];
num[i+1]=num[i];
num[i]=n;
strcpy(&a[10],&name[i+1]); /*交换前后姓名,使与学号相对应*/
strcpy(&name[i+1],&name[i]);
strcpy(&name[i],&a[10]);
t=yuwen[i+1]; /*交换前后语文成绩,使与学号想对应*/
yuwen[i+1]=yuwen[i];
yuwen[i]=t;
t=shuxue[i+1]; /*交换前后数学成绩,使与学号想对应*/
shuxue[i+1]=shuxue[i];
shuxue[i]=t;
t=yingyu[i+1]; /*交换前后英语成绩,使与学号想对应*/
yingyu[i+1]=yingyu[i];
yingyu[i]=t;
}
printf("学生成绩按学号排序:\n");
printf("姓名\t学号\t语文成绩\t数学成绩\t英语成绩\n");
for(i=0;i<6;i++)
printf("%s\t%d\t%.2f\t\t%.2f\t\t%.2f\n",name[i],num[i],yuwen[i],shuxue[i],yingyu[i]);
}
sort2()
{
int i;
float t;
char a[10];
int b;
for(i=0;i<6;i++)
{
if(yuwen[i+1]+shuxue[i+1]+yingyu[i+1]>yuwen[i]+shuxue[i]+yingyu[i])
b=num[i];
num[i]=num[i+1];
num[i+1]=b;
strcpy(&a[10],&name[i+1]);/*交换前后姓名,使与学号相对应*/
strcpy(&name[i],&name[i+1]);
strcpy(&name[i+1],&a[10]);
t=yuwen[i]; /*交换前后语文成绩,使与学号想对应*/
yuwen[i]=yuwen[i+1];
yuwen[i+1]=t;
t=shuxue[i]; /*交换前后数学成绩,使与学号想对应*/
shuxue[i]=shuxue[i+1];
shuxue[i+1]=t;
t=yingyu[i]; /*交换前后英语成绩,使与学号想对应*/
yingyu[i]=yingyu[i+1];
yingyu[i+1]=t;
}
printf("学生成绩按总分排序:\n");
printf("姓名\t学号\t总分\n");
for(i=0;i<6;i++)
{
printf("%s\t%d\t%.2f",name[i],num[i],yuwen[i]+shuxue[i]+yingyu[i]);
printf("\n");
}
}
stat()
{ int i;
float sum1=0.0,sum2=0.0,sum3=0.0;
float aver1,aver2,aver3;
printf("姓名\t学号\t语文\t数学\t英语\t总分\t平均分\n");
for(i=0;i<6;i++)
{
printf("%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f",name[i],yuwen[i],shuxue[i],yingyu[i],
yuwen[i]+shuxue[i]+yingyu[i],(yuwen[i]+shuxue[i]+yingyu[i])/3);
printf("\n");
}
for(i=0;i<6;i++) /*求总分*/
{
sum1=sum1+yuwen[i];
sum2=sum2+shuxue[i];
sum3=sum3+yingyu[i];
}
{
aver1=sum1/6;/*求平均分*/
aver2=sum2/6;
aver3=sum3/6;
}
{
float max1,max2,max3,min1,min2,min3,t;
int i,j;
for(i=0;i<6;i++) /*求语文成绩的最高分和最低分*/
{
for(j=0;j<6-i;j++)
if(yuwen[j+1]<yuwen[j])
{
t=yuwen[j+1];
yuwen[j+1]=yuwen[j];
yuwen[j]=t;
}
}
max1=yuwen[5];min1=yuwen[0];
for(i=0;i<6;i++) /*求数学成绩的最高分和最低分*/
{
for(j=0;j<6-i;j++)
if(shuxue[j+1]<shuxue[j])
{
t=shuxue[j+1];
shuxue[j+1]=shuxue[j];
yuwen[j]=t;
}
}
max2=shuxue[5];min2=shuxue[0];
for(i=0;i<6;i++) /*求英语成绩的最高分和最低分*/
{
for(j=0;j<6-i;j++)
if(yingyu[j+1]<yingyu[j])
{
t=yingyu[j+1];
yingyu[j+1]=yingyu[j];
yingyu[j]=t;
}
max3=yingyu[5];min3=yingyu[0];
}
printf("语文成绩统计:\n");
printf("平均分:%.2f\t""最高分:%.2f\t""最低分:%.2f\n",aver1,max1,min1);
printf("数学成绩统计:\n");
printf("平均分:%.2f\t""最高分:%.2f\t""最低分:%.2f\n",aver2,max2,min2);
printf("英语成绩统计:\n");
printf("平均分:%.2f\t""最高分:%.2f\t""最低分:%.2f\n",aver3,max3,min3);
}
}
void main()
{ int go=0;
int k;
while(1)
{ printf("*******************学生成绩管理系统*********************\n");
printf("\t\t | 1. 输入学生资料 |\n");
printf("\t\t | 2. 学生成绩排序 |\n");
printf("\t\t | 3. 学生成绩统计 |\n");
printf("\t\t | 0. 退出 |\n");
printf("********************************************************\n");
printf("请输入(0~3)选择:");
scanf("%d",&k);
switch(k) /*用switch语句实现功能选择*/
{
case 1: go=input(go);break;/*输入学生资料函数*/
case 2: sort1();sort2();break;/*成绩排序函数*/
case 3: stat();break;/*成绩统计函数*/
case 0: exit(0);break;/*退出*/
}
}}