C语言冒泡法排序,输出老是错误。请指教0
nlruxm2013.10.01浏览14次分享举报
在C++环境下编了这个程序 #include #define SN 2 //学生人数 struct student { long num; char name[20]; float score[3]; }st[SN]; void bubble(int b,struct student *pst) //冒泡法排序并输出 { int i,j,k; struct student tem;... 在C++环境下编了这个程序
#include
#define SN 2 //学生人数
struct student
{
long num;
char name[20];
float score[3];
}st[SN];
void bubble(int b,struct student *pst) //冒泡法排序并输出
{
int i,j,k;
struct student tem;
for(i=0;i
{for(j=0;j
{if(pst[j].score[b]
{tem=pst[j];
pst[j]=pst[j+1];
pst[j+1]=tem;
}
}
}
printf("\n 学号 姓名 高等数学 大学英语 C语言\n");
for(k=0;k
{printf("%d %s ",pst[k].num,pst[k].name);
for(j=0;j<3;j++)
printf(" %d ",pst[k].score[j]);
printf("\n");
}
}
void rank(struct student *pst)
{
int a,x=1;
while(x)
{
printf("\n请输入要排序的科目代码:\n");
printf("+++++++++++++++++++++++++++++++++\n");
printf("+ 1.C语言 +\n");
printf("+ 2.高数 +\n");
printf("+ 3.大学英语 +\n");
printf("+ 4.退出 +\n");
printf("+++++++++++++++++++++++++++++++++\n");
scanf("%d",&a);
switch(a)
{
case 1:
printf("\nC语言成绩已完成排序:\n");
bubble(0,pst);
break;
case 2:
printf("\n高数成绩已完成排序:\n");
bubble(1,pst);
break;
case 3:
printf("\n大学英语已完成排序:\n");
bubble(2,pst);
break;
case 4:
x=0;
break;
default:
printf("\n输入字符无效!输入错误!\n\n");
}
}
}
void main()
{
int choose;
int i,j;
float t;
printf("请按括号内顺序输入学生的信息(学号后四位、姓名、C语言成绩、高数成绩、大学英语成绩)\n");
for(i=0;i
{scanf("%ld",&st[i].num);
getchar(); //getchar()的作用是吸收输入的回车,以利后面输入字符串
gets(st[i].name);
for(j=0;j<3;j++)
{scanf("%f",&t);
st[i].score[j]=t;
}
}
struct student *pst=st;
rank(pst);
}
发现输出的时候每次成绩栏都是0 0 0,自己查不出原因,希望大家能帮帮忙,谢谢! 展开