当前位置: 代码迷 >> C语言 >> 不能排序的问题?
  详细解决方案

不能排序的问题?

热度:157   发布时间:2008-04-14 22:19:11.0
不能排序的问题?
#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--;

}
搜索更多相关的解决方案: void  float  ans  printf  

----------------解决方案--------------------------------------------------------
你的这个帖子也没有说明有什么问题,到底你是想做什么?问题没有说清楚怎么解决?
----------------解决方案--------------------------------------------------------
[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;
            }
        }
    }
多了个分号
----------------解决方案--------------------------------------------------------
  相关解决方案