| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 481 人关注过本帖, 1 人收藏
标题:请看看这个冒泡排序
取消只看楼主 加入收藏
HSU
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2010-1-3
结帖率:83.33%
收藏(1)
已结贴  问题点数:10 回复次数:1 
请看看这个冒泡排序
# include <stdio.h>
# include <string.h>
/*结构体定义*/
struct books
{
    char name[30], publisher[15];
    int num;
    float price;
}book[50];
void rank(books book[], int n);
int main()
{
    int i,n;
    printf("请输入图书数量:");
    scanf("%d",&n);
    printf("请分别输入书名、出版社、数量、单价(以空格分开):\n");
    for (i=0 ; i<n ; i++)
        {
            scanf("%s%s%d%f",&book[i].name,&book[i].publisher,&book[i].num,&book[i].price);
        }
    printf("\n");
    rank(book,n);
    return 0;
}

/*排序,输出函数rank*/
void rank(books book[], int n)
{
    int i,j,tnum;
    char tname[30],tpublisher[15];
    float tprice;
    for (i=0 ; i<n-1 ; i++)
    {
        for (j=0 ; j<n-i-1 ; j++)
            if(book[i].price>book[i+1].price)
            {
                strcpy(tname,book[i].name), strcpy(book[i].name,book[i+1].name), strcpy(book[i+1].name,tname);//交换书名
                strcpy(tpublisher,book[i].publisher), strcpy(book[i].publisher,book[i+1].publisher), strcpy(book[i+1].publisher,tpublisher);//交换出版商
                tnum=book[i].num, book[i].num=book[i+1].num, book[i+1].num=tnum;//交换数目
                tprice=book[i].price, book[i].price=book[i+1].price, book[i+1].price=tprice;//交换单价
            }
    }
    for (i=0 ; i<n ; i++)
        {
            printf("%s %s %d %.2f\n",book[i].name,book[i].publisher,book[i].num,book[i].price);
        }
}


按说输入以下内容:
3
a aa 50 25.5
b bb 30 31.55
c cc 60 18.3
时应该出现的结果是:
c cc 60 18.3
a aa 50 25.5
b bb 30 31.55
可为何却出现:
a aa 50 25.5
c cc 60 18.3
b bb 30 31.55
搜索更多相关主题的帖子: 冒泡 
2010-03-20 22:28
HSU
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2010-1-3
收藏
得分:0 
我试过这样的确可以,但是能否解释一下为什么我那个就会出现我所说的问题么
2010-03-21 00:09
快速回复:请看看这个冒泡排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015196 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved