C 冒泡法排序出现问题,菜鸟一个,求各位大神解惑

Doxie 发布于 2012/12/29 17:15
阅读 263
收藏 1
一旦参与排序的数字大于三个,立马就不好使了,各种乱码,百思不得其解,求各位大神们解惑



void main()
{
typedef struct
{
    char name[20];
    float total;
    struct
    {
    int day;
    int mouth;
    int year;
    }date;


} h;






    h a[10];
    int i,j;
    /*读取数据*/
    printf("please input ten sudents' name,birthday,and total score\n");


    for(i=0;i<10;i++)
    {
        scanf("%s %d.%d.%d %f",
              a[i].name,
              &a[i].date.day,
              &a[i].date.mouth,
              &a[i].date.year,
              &a[i].total);






        printf("%s %d %d %d %f\n",
                     a[i].name,
                     a[i].date.day,
                     a[i].date.mouth,
                     a[i].date.year,
                     a[i].total);
    }
    /*冒泡法排序*/
    h temp;


    for(i=0;i<9;i++)
    {
        for(j=i+1;j<10;j++)
        {
            if(a[j].total>a[i].total)
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;


            }


        }
    }
    /*输出结果*/
    printf("成绩由高到低为\n");
    for(i=0;i<10;i++)
    {
        printf("%s %d %d %d %f\n",
                     a[i].name,
                     a[i].date.day,
                     a[i].date.mouth,
                     a[i].date.year,
                     a[i].total);
    }


}






























加载中
0
Midnight
Midnight
代码格式能改改吗? 
0
OscerSong
OscerSong
仔细看看内部的for   循环次数,比较的两个数    是冒泡 ?
loki_lan
loki_lan
回复 @Doxie : 嗯,我没注意到是数组
Doxie
Doxie
回复 @铂金小猫 : 额,那个是数组,不用&取址啊
loki_lan
loki_lan
回复 @Doxie : 其次,你循环次数应该里外互换。
loki_lan
loki_lan
回复 @Doxie : 你输入那部分就少了个&取址符号
Doxie
Doxie
额,能具体点么?循环的问题?
0
Doxie
Doxie
@ openlinux,额,能具体点吗?问题是三个数以下的时候都好使,一旦大于三个就乱了
0
loki_lan
loki_lan

循环要用这种形式:

for (i=1; i<n; i++)
 {
  for (j=0; j<n-i; j++)
  {
}
}

Doxie
Doxie
恩,我试试,非常感谢~
返回顶部
顶部