Michael-Bern 发表于 2015-2-19 09:02:17

关于用数组排列大小。

#include <stdio.h>
void main()
{
        int a,x,y,temp;
        printf("input 5 numbers please:\n");
        for(x=0;x<=4;x++)
        {
                scanf("%d",&a);
        }
        for(y=0;y<4;y++)
        {
                for(x=0;x<4-y;x++)
                {
                        if(a>a);
                        {
                                temp=a;
                                a=a;
                                a=temp;
                        }
                }
        }
        for(x=0;x<=4;x++)
        {
                printf("\n%d",a);
        }
} 想把5个数从小到大依次排列并打印出来,可总是不对。。看不出教程里面的代码和以上我写的代码本质上有啥区别。。(以下教程里面代码亲测可用)
#include <stdio.h>
void main()
{
        int a,i,j,t;
        printf("input 10 numbers please:\n");
        for(i=0;i<=9;i++)
        {
                scanf("%d",&a);
        }
        for(j=0;j<9;j++)
        {
                for(i=0;i<9-j;i++)
                {
                        if(a>a)
                        {
                                t=a;
                                a=a;
                                a=t;
                        }
                }
        }
        for(i=0;i<=9;i++)
        {
                printf("\n%d",a);
        }
        printf("\n");
}求相助,不甚感激!

zhangbin_hunan 发表于 2015-2-19 09:02:18

错误出现在第十四行。楼主原码为 if(a>a);,然后在后面加了一个J将a与a进行交换的代码块。
if(a>a); 这句的意思是,如果a>a则不进行任何操作。然后执行下面用大括号括起来的代码块,将a与a进行交换。这样,for循环中不管满不满足a>a都会交换a与a.而冒泡排序的核心是,只有满足条件才交换。总之:删掉第十四行的后面的冒号就是一个冒泡排序了。祝你好运!

zhujy 发表于 2015-2-19 23:20:11

两个代码都是错的。。。测试过了。。。

李小白 发表于 2015-2-20 11:09:01

没问题的 都测试过了

1123566890 发表于 2015-2-20 12:05:44

if(a>a);
多了个分号

百日维新 发表于 2015-2-20 17:43:07

1123566890 发表于 5 小时前static/image/common/back.gif
if(a>;a);
多了个分号...

真相

youdra 发表于 2015-2-23 16:12:37

if(a>a)

ruixia85 发表于 2015-2-24 10:25:21

if(a>a);
多了个分号
应该是 if(a>a)
你加分号表示这个if语句结束了,这个程序的结果就是反序输出数组啦

傲天 发表于 2015-2-24 11:53:58

if(a>a);这句里你多加了一个分号

yangjiadong 发表于 2015-3-5 10:45:55

for(y=0;y<4;y++)

11.      {

12.                for(x=0;x<4-y;x++)

13.                {

14.                        if(a>a);

15.                        {

16.                              temp=a;

17.                              a=a;

18.                              a=temp;

19.                        }

20.                }

21.      }

这边直接写成
for(y=0;y<4;y++)

11.      {

12.                for(x=0;x<4;x++)
这样应该肯定可以了。

晨念 发表于 2015-6-12 19:02:24

楼主,第十四行if语句后面加分号就循环不了了

caster 发表于 2015-6-15 13:45:54

14行的 ;错了

caster 发表于 2015-6-25 13:13:11

混鱼币!!
页: [1]
查看完整版本: 关于用数组排列大小。