鱼C论坛

 找回密码
 立即注册
查看: 1694|回复: 12

关于用数组排列大小。

[复制链接]
发表于 2015-2-19 09:02:17 | 显示全部楼层 |阅读模式
20鱼币
#include <stdio.h>
void main()
{
        int a[5],x,y,temp;
        printf("input 5 numbers please:\n");
        for(x=0;x<=4;x++)
        {
                scanf("%d",&a[x]);
        }
        for(y=0;y<4;y++)
        {
                for(x=0;x<4-y;x++)
                {
                        if(a[x]>a[x+1]);
                        {
                                temp=a[x];
                                a[x]=a[x+1];
                                a[x+1]=temp;
                        }
                }
        }
        for(x=0;x<=4;x++)
        {
                printf("\n%d",a[x]);
        }
} 
想把5个数从小到大依次排列并打印出来,可总是不对。。看不出教程里面的代码和以上我写的代码本质上有啥区别。。(以下教程里面代码亲测可用)
#include <stdio.h>
void main()
{
        int a[10],i,j,t;
        printf("input 10 numbers please:\n");
        for(i=0;i<=9;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<=9;i++)
        {
                printf("\n%d",a[i]);
        }
        printf("\n");
}
求相助,不甚感激!

最佳答案

查看完整内容

错误出现在第十四行。楼主原码为 if(a[x]>a[x+1]);,然后在后面加了一个J将a[x]与a[x+1]进行交换的代码块。 if(a[x]>a[x+1]); 这句的意思是,如果a[x]>a[x+1]则不进行任何操作。然后执行下面用大括号括起来的代码块,将a[x]与a[x+1]进行交换。这样,for循环中不管满不满足a[x]>a[x+1]都会交换a[x]与a[x+1].而冒泡排序的核心是,只有满足条件才交换。 总之:删掉第十四行的后面的冒号就是一个冒泡排序了。祝你好运!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-19 09:02:18 | 显示全部楼层
错误出现在第十四行。楼主原码为 if(a[x]>a[x+1]);,然后在后面加了一个J将a[x]与a[x+1]进行交换的代码块。
if(a[x]>a[x+1]); 这句的意思是,如果a[x]>a[x+1]则不进行任何操作。然后执行下面用大括号括起来的代码块,将a[x]与a[x+1]进行交换。这样,for循环中不管满不满足a[x]>a[x+1]都会交换a[x]与a[x+1].而冒泡排序的核心是,只有满足条件才交换。  总之:删掉第十四行的后面的冒号就是一个冒泡排序了。祝你好运!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-19 23:20:11 | 显示全部楼层
两个代码都是错的。。。测试过了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-20 11:09:01 | 显示全部楼层
没问题的 都测试过了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-20 12:05:44 | 显示全部楼层
if(a[x]>a[x+1]);
多了个分号

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
~风介~ + 3 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-20 17:43:07 From FishC Mobile | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-23 16:12:37 | 显示全部楼层
if(a[x]>a[x+1])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-24 10:25:21 | 显示全部楼层
if(a[x]>a[x+1]);
多了个分号
应该是 if(a[x]>a[x+1])
你加分号表示这个if语句结束了,这个程序的结果就是反序输出数组啦

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
~风介~ + 3 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-24 11:53:58 | 显示全部楼层
if(a[x]>a[x+1]);这句里你多加了一个分号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[x]>a[x+1]);

15.                        {

16.                                temp=a[x];

17.                                a[x]=a[x+1];

18.                                a[x+1]=temp;

19.                        }

20.                }

21.        }

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

11.        {

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-12 19:02:24 | 显示全部楼层
楼主,第十四行if语句后面加分号就循环不了了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-15 13:45:54 | 显示全部楼层
14行的 ;  错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-25 13:13:11 | 显示全部楼层
混鱼币!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 03:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表