不能排序的问题?
#include<stdio.h>#define N 50
struct student
{
int xuehao;
char xing[6];
float a;
float b;
float c;
float p;
}stu[N];
void luru();
void display();
void paixu();
/*void cha();*/
void del();
int m=0;
void main()
{
char ans='y';
printf("\n请输入学员的信息\n");
do
{
luru();
printf("是否继续(y or n)\n");
fflush(stdin);
ans=getchar();
}while(ans=='y');//输入
printf("排序前的学员信息如下\n");
display();
printf("排序后的学员信息如下\n");
paixu();
display();//排序
printf("是否要插入新学员(y or n)");
while((ans=getchar())=='y')
{
printf("\n请输入要插入学员的信息\n");
luru();
fflush(stdin);
printf("是否继续插入新学员(y or n)");
}
printf("\n输出新学员后的信息\n");
paixu();
display();//插入
printf("是否要删除某个学员(y or n)\n");
while((ans=getchar())=='y')
{
int n;
printf("\n请输入要删除学员的学号\n");
scanf("%d",&n);
del(n);
fflush(stdin);
printf("是否继续删除新学员(y or n)");
}
printf("删除后学员信息如下");
paixu();
display();//删除
}
void luru()//输入
{
printf("\n学号\n");
scanf("%d",&stu[m].xuehao);
printf("姓名\n");
fflush(stdin);
gets(stu[m].xing);
printf("三门成绩\n");
printf("成绩1:\n");
scanf("%f",&stu[m].a);
printf("成绩2:\n");
scanf("%f",&stu[m].b);
printf("成绩3:\n");
scanf("%f",&stu[m].c);
stu[m].p=(stu[m].a+stu[m].b+stu[m].c)/3;
m++;
}
void display()//输出
{
int i;
for(i=0;i<m;i++)
{
printf("\n学号\t姓名\t平均成绩\n");
printf("%d\t",stu[i].xuehao);
printf("%s\t",stu[i].xing);
printf("%.1f\t",stu[i].p);
}
printf("\n");
}
void paixu()//排序
{
int i,j;
struct student stu2;
for(i=0;i<m-1;i++)
{
for(j=0;j<m-i-1;j++)
{
if((stu[j].p)<(stu[j+1].p));
{
stu2=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stu2;
}
}
}
}
/*void cha()//插入
{
printf("\n学号\n");
scanf("%d",&stu[k].xuehao);
printf("姓名\n");
fflush(stdin);
gets(stu[k].xing);
printf("三门成绩\n");
printf("成绩1:\n");
scanf("%f",&stu[k].a);
printf("成绩2:\n");
scanf("%f",&stu[k].b);
printf("成绩3:\n");
scanf("%f",&stu[k].c);
stu[k].p=(stu[k].a+stu[k].a+stu[k].a)/3;
k++;
}*/
void del(int n)//删除
{
int i,j;
for(i=0;i<m;i++)
{
if(n==stu[i].xuehao)
{
break;
}
}
for(j=i;j<m;j++)
{
stu[j]=stu[j+1];
}
m--;
}
----------------解决方案--------------------------------------------------------
你的这个帖子也没有说明有什么问题,到底你是想做什么?问题没有说清楚怎么解决?
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]303770957[/un] 在 2008-4-14 22:21 的发言:[/bo]
你的这个帖子也没有说明有什么问题,到底你是想做什么?问题没有说清楚怎么解决?
你的这个帖子也没有说明有什么问题,到底你是想做什么?问题没有说清楚怎么解决?
输入信息之后不能正确的排序
----------------解决方案--------------------------------------------------------
HOHO wenti 已经解决 灌下水
----------------解决方案--------------------------------------------------------
作业又不用写了
----------------解决方案--------------------------------------------------------
晕---
----------------解决方案--------------------------------------------------------
说着玩呢 12点多再写
----------------解决方案--------------------------------------------------------
来总结下把 排序中这样
for(i=0;i<m;i++)
{
for(j=0;j<m-i-1;j++) 少循环一次
----------------解决方案--------------------------------------------------------
for(i=0;i<m-1;i++)
{
for(j=0;j<m-i-1;j++)
{
if((stu[j].p)<(stu[j+1].p));
{
stu2=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stu2;
}
}
}
多了个分号
----------------解决方案--------------------------------------------------------