标题:C语言冒泡问题我做了几遍都不行
只看楼主
专打小拉拉啊
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-12-6
结帖率:50%
已结贴  问题点数:20 回复次数:9 
C语言冒泡问题我做了几遍都不行
#include<stdio.h>
main()
{
   int a[10],i,j,t;
   for(i=0;i<10;i++)
      scanf("%d",&a[i]);
   for(i=0;i<9;i++)
   for(j=0;j<10;j++)
   {   
        if(a[i]>a[j+1])
        t=a[i];
        a[i]=a[j+1];
        a[j+1]=t;
        }   for(i=0;i<10;i++)
     {  printf("%d",a[i]);}
}               
输入10个数为什么不能按输入的数从小到大排列啊
搜索更多相关主题的帖子: C语言 冒泡 
2010-12-07 13:29
五当家
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:2
帖 子:1112
专家分:3674
注 册:2010-10-20
得分:5 
#include<stdio.h>
main()
{
   int a[10],i,j,t;
   for(i=0;i<10;i++)
      scanf("%d",&a[i]);
   printf("\n");
   for(j=0;j<10;j++)        //这里有改动
        for(i=0;i<9;i++)
            if(a[i]>a[i+1])
            {
                t=a[i];        //这里有改动.你自己看看吧.
                a[i]=a[i+1];
                a[i+1]=t;
            }
   for(i=0;i<10;i++)
   {
            printf("%d\t",a[i]);
   }
}
改为这样吧.

经验积累中............
2010-12-07 13:42
Mr黑绵羊
Rank: 2
等 级:论坛游民
帖 子:24
专家分:30
注 册:2010-12-7
得分:0 
for(i=0;i<9;i++)
   for(j=0;j<10;j++)
这个换了两次啦,所以又变回去了....改下条件
2010-12-07 13:43
xx123321
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2010-12-1
得分:0 
好基本的錯誤啊~
樓主細心點看清楚代碼吧!
2樓正解!
2010-12-07 15:17
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:15 
for(j=0;j<9;j++)      
        for(i=0;i<9-j;i++)
            if(a[i]>a[i+1])
            {
                t=a[i];        //这才是冒泡法
                a[i]=a[i+1];
                a[i+1]=t;
            }

                                         
===========深入<----------------->浅出============
2010-12-07 19:11
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
得分:0 
见这里对冒泡的讲解
https://bbs.bccn.net/thread-321967-1-1.html

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-12-07 19:17
专打小拉拉啊
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-12-6
得分:0 
回复 5楼 laoyang103
我按你这样改了但我输入0 9 8 7 6 5 4 3 2 1 得到的是1 2 3 4 5 6 7 8 9 72 输入10 11 12 13 14 15 16 17 18 19 得到的却是19 72 72 72 72 72 72 72 72 72 为什么这样?代码如下
#include<stdio.h>
main()
{
   int a[10],i,j,t;
   for(i=0;i<10;i++)
      scanf("%d",&a[i]);
   for(j=0;j<9;j++)
   for(i=0;i<9-j;i++)
   {   
        if(a[i]>a[i+1])
        t=a[i];
        a[i]=a[i+1];
        a[i+1]=t;
        }   for(i=0;i<10;i++)
     {  printf("%d",a[i]);}
}  
2010-12-08 22:53
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
我说楼主啊  我那只是个伪代码  你就照着抄上去啦??????
你没看见
if(a[i]>a[i+1])
        t=a[i];
        a[i]=a[i+1];
        a[i+1]=t;
这段话缺两个花括号吗?   你把它改成这样不就可以了吗
if(a[i]>a[i+1])
{
      t=a[i];
      a[i]=a[i+1];
      a[i+1]=t;
 }

                                         
===========深入<----------------->浅出============
2010-12-09 13:06
gaochizhen33
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:114
专家分:101
注 册:2010-11-4
得分:0 
错误蛮多的
2010-12-09 13:12
jianghong_02
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:143
专家分:476
注 册:2010-10-2
得分:0 
程序代码:
for(j=0;j<9;j++)     
        for(i=0;i<9-j;i++)
            if(a[i]>a[i+1])
            {
                t=[i];     
                a[i]=a[i+1];
                a[i+1]=t;
            }

 for(i=0;i<10;i++)
     {  printf("%d",a[i]);}
2010-12-09 13:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-328225-1-1.html




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

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