标题:冒泡排序
只看楼主
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
得分:2 
回复 13楼 s18270722463
把九个数都排好了,剩下的就是最小的嘛,冒泡就是有这特点。
2012-06-24 20:23
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
得分:0 
我算是服了 ,这么基本的东西自己好好理解一下,万一不行就自己像机器一样模拟运行一下 .
2012-06-24 20:33
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
程序代码:
#include<stdio.h>
int main()
{
    int i ,j ,k,a[10];
    printf("输入10个数:\n");
    for(i=0;i<=9;i++)
        scanf("%d",&a[i]);
    printf("from small to larg:");
    for(i=0;i<=9;i++)
    for(j=0;j<=9-i-1;j++)
    {
        if(a[j]>a[j+1])
        {
            k=a[j];
            a[j]=a[j+1];
            a[j+1]=k;
        }
    }
    for(i = 0; i < 10; printf("%d ", a[i++]));//这句是我加的。总得看看排序结果吧
    return 0;
}

重剑无锋,大巧不工
2012-06-24 20:35
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
得分:0 
回复 23楼 beyondyf
#include<stdio.h>
 int main()
 {
     int i ,j ,k,a[10];
     printf("输入10个数:\n");
     for(i=0;i<=9;i++)
         scanf("%d",&a[i]);
     printf("from small to larg:");
     for(i=0;i<=9;i++)这里改为i<9 也是可以的.
     for(j=0;j<=9-i-1;j++)
     {
         if(a[j]>a[j+1])
         {
             k=a[j];
             a[j]=a[j+1];
             a[j+1]=k;
         }
     }
     for(i = 0; i < 10; printf("%d ", a[i++]));//这句是我加的。总得看看排序结果吧
     return 0;
2012-06-24 20:37
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:2 
回复 24楼 cuijunchao
呵呵,i也没必要从0开始循环。上面的代码是楼主的,我只改了必须改的地方。那也不是我的编码风格。

重剑无锋,大巧不工
2012-06-24 20:40
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:2 
回复 25楼 beyondyf
确实 杨大哥的代码就俩字 :简练 唉 小弟还是很菜


喜欢睡觉 却经常熬夜
2012-06-24 20:57
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
得分:2 
内存不能为read,多半是溢出,在网上看了对溢出的解释还是不太明白,如果定义一个数组a[3],在输入的时候写成for(i=0;i<=3;i++)   {scanf("%d",&a[i]);}这样就超出了数组的范围算是溢出吗?
2012-06-24 22:48
玉面狂龙
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:156
注 册:2012-2-23
得分:2 
#include<stdio.h>
int main(void)
{
    int a[10],i,k,j;
      printf("输入10个数:\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);

    printf("\n");
   
    for(i=0;i<9;i++)
    {
        for(j=0;j<9;j++)
            if(a[j]>a[j+1])
            {
                k=a[j];//这里k的地址没有确定,所以不能用数组来定义;
                a[j]=a[j+1];
                a[j+1]=k;
            }

    }
    for(i=0;i<10;i++)
        printf("%d\n",a[i]);
return 0;
}
2012-06-24 23:26
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:2 
回复 27楼 小赵q1
溢出的原因很简单,我觉得你应该能看出来。
for(i=0;i<=9.;i++);
scanf("%d",&a[i]);

楼主的代码在for循环后面多了个分号,那么这个for循环就是个空循环,而且循环完后i的值是多少?i等于10,下面那句&a[i]不溢出才怪呢

总有那身价贱的人给作业贴回复完整的代码
2012-06-25 05:59
s18270722463
Rank: 2
等 级:论坛游民
帖 子:53
专家分:28
注 册:2012-6-11
得分:0 
谢谢各位啊
2012-06-25 18:51



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




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

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