m0_61800796 2021-10-01 19:28 采纳率: 93.9%
浏览 63
已结题

c语言冒泡排序相关问题

img

img

img


想问下为什么有时对有时不对啊,数一大就会把最大的那个数自动换成26然后进行排序,感觉好奇怪

  • 写回答

2条回答 默认 最新

  • 19ty53 2021-10-01 19:33
    关注

    既然你开的数组是10,那么你应该使用0-9的下标。不过当溢出量不多时C++会自动申请后面的很少的连续地址。
    不过我想告诉你的是,如果你在主函数里面开数组。那就是从栈中开空间,但是栈中是会有上一次别的进程的残余,所以如果你没有输入,就一定要初始化,不然就会出现一些你不知道的东西(别的进程的垃圾),你用的是地址1-10。0地址你没有用,然而你只是给1~10的地址输入赋了初值,0地址没有,所以就会出现上一次的垃圾,这个遗留垃圾的ASCLL码是26

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 19ty53 2021-10-01 20:02
    关注
    
    #include<stdio.h>
    int main(){
        long int i,j,a,b,c;
        int number=10;
        long int sum[10];
        for(i=0;i<10;i++){
            scanf("%d",&sum[i]);
        }
        for(number=10;number>0;number--){
            a=0;
            for(a=0;a<number;a++){
                if(sum[a]>sum[a+1]){
                    b=sum[a];
                    sum[a]=sum[a+1];
                    sum[a+1]=b;
                }
            }
        }
        for(c=0;c<10;c++){
            printf("%d ",sum[c]);
        }
        return 0;
    }
    

    如果我用你的代码。
    就会出现垃圾内存34

    img

    如果我改成这个

    #include<stdio.h>
    int main(){
        long int i,j,a,b,c;
        int number=10;
        long int sum[10];
        for(i=0;i<10;i++){
            scanf("%d",&sum[i]);
        }
        for(number=9/*这里*/;number>0;number--){
            a=0;
            for(a=0;a<number;a++){
                if(sum[a]>sum[a+1]){
                    b=sum[a];
                    sum[a]=sum[a+1];
                    sum[a+1]=b;
                }
            }
        }
        for(c=0;c<10;c++){
            printf("%d ",sum[c]);
        }
        return 0;
    }
    

    那就是正确答案

    img

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月9日
  • 已采纳回答 10月1日
  • 创建了问题 10月1日

悬赏问题

  • ¥15 I350 Gigabit Network
  • ¥15 关于#abap#的问题,请各位专家解答!
  • ¥20 内网通过公网访问外网问题
  • ¥20 谁有这个东西 继续教育的
  • ¥15 怎么使请求通过cors
  • ¥15 WDM 驱动ACPI 相关疑问
  • ¥15 prism 跨窗体共享数据绑定 wpf
  • ¥15 hdl designer突然用不了系统的moduleware组件,请问有人遇到或者怎么解决吗?
  • ¥15 0基础计算机毕设,应该从哪开始?
  • ¥60 使用DKT40脑图划分ROI区域