| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 254 人关注过本帖
标题:冒泡法的疑惑
收藏  订阅  推荐  打印
zhangzhongxu
Rank: 1
等级:新手上路
帖子:23
积分:370
注册:2008-7-20
冒泡法的疑惑

用冒泡法对6个数排序(由小到大)
#include <stdio.h>
void main()
{ int i,j,t,a[6];
printf("enter the number:");
scanf("%d",&a[i]);
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
printf("%d\t",a[j]);
}
输出结果总是为1246,请教高手这是怎么回事?
2008-8-1 21:45
很远的那颗星
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:466
积分:4217
注册:2008-6-30

scanf("%d",&a[i]);
怎么可以这样子初始化数组...

Fighting~~~~~~~~
2008-8-1 21:57
blueboy82006
Rank: 12Rank: 12Rank: 12
来自:幻想世界
等级:版主
威望:16
帖子:1212
积分:12084
注册:2007-7-23

scanf("%d",&a[i]);//???
你少写个for循环吧

闭关修炼中!......
2008-8-1 21:58
blueboy82006
Rank: 12Rank: 12Rank: 12
来自:幻想世界
等级:版主
威望:16
帖子:1212
积分:12084
注册:2007-7-23

输出时也不对吧?

闭关修炼中!......
2008-8-1 22:01
blueboy82006
Rank: 12Rank: 12Rank: 12
来自:幻想世界
等级:版主
威望:16
帖子:1212
积分:12084
注册:2007-7-23

算法没问题!
改一下就好。。。
#include <stdio.h>
void main()
{
    int i,j,t,a[6];
    printf("enter the number:");
    for(i=0;i<6;i++)
        scanf("%d",&a[i]);
    for(i=0;i<5;i++)
        for(j=0;j<5-i;j++)
            if(a[j]>a[j+1])
            {t=a[j];a[j]=a[j+1];a[j+1]=t;}
    for(i=0;i<6;i++)
        printf("%d\t",a[i]);
}

闭关修炼中!......
2008-8-1 22:03
很远的那颗星
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:466
积分:4217
注册:2008-6-30

//彻底一点
引用:
#include <stdio.h>
int main(void)
{
    int i,j,t,a[6];
    printf("enter the number:");
    for (i=0;i<6;i++)
        scanf("%d",&a[i]);
    for (i=0;i<5;i++)
        for (j=0;j<5-i;j++)
            if (a[j]>a[j+1]) {t=a[j]; a[j]=a[j+1]; a[j+1]=t;}
    for (i=0;i<6;i++)
        printf("%d\t",a[i]);
    return 0;
}

Fighting~~~~~~~~
2008-8-1 22:32
netstriker
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:256
积分:2700
注册:2007-3-24

还没有初始化完数组a ,我运行的时候是出错的,或者参考一下我改的程序,
#include <stdio.h>

void main()
{    
    int i,j,t,a[6];
    for(i=0;i<6;i++)
    {
        printf("print %d Num:",i+1);
        scanf("%d",&a[i]);
        printf("\n");
    }
    t=5;
    for(i=0;t!=0;++i)
    {
        if(i==t)
        {
            --t;
            i=0;
        }
        if(a[i]>a[i+1])
        {
            int temp = a[i];
            a[i] = a[i+1];
            a[i+1] = temp;
        }

    }
    for(j=0;j<6;j++)
    {
        printf("%d\t \n",a[j]);
    }
}
2008-8-1 22:54
共有 253 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.052853 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved