c语言,先冒泡排序,然后插入数字并使这个一维数组仍然有序(非常感谢有大佬能回答我的问题) - 爱问答

(爱问答)

c语言,先冒泡排序,然后插入数字并使这个一维数组仍然有序(非常感谢有大佬能回答我的问题)

#include<stdio.h>

int sort(int a [])

{

    int i,j,x=0;

    for(i=0; i<10; i++)

    {

        for(j=0; j<10-i; j++)

        {

            if(a[j]>a[j+1])

            {

                x=a[j+1];

                a[j+1]=a[j];

                a[j]=x;

            }

        }

    }

    return a;

}

 

int main()

{

    int a[10]= {1,5,6,7,8,9,10,2,3,4};

    int b,i,j;

    for(j=0; j<10; j++)

        printf("%d ",a[j]);

    printf(" ");

    sort(a);

    for(i=0; i<10; i++)

    {

        printf("%d ",a[i]);

    }

    printf("请输入要插入的数字");

    scanf("%d",&b);

                              //我想知道为什么下面的代码没有执行//


    for(i=1; i<10; i++)

    {

        if(a[i]>=b)

        {

            break;

        }

    }

    for(j=10; j>i; j--)

    {

        a[j]=a[j-1];

    }

 

    a[i]=b;

    for(j=0; j<11; j++)

        printf("%d ",a[j]);

}


//同样的问题将代码稍微改一下却可以执行,这是为什么//

#include<stdio.h>

int sort(int a [])

{

    int i,j,x=0;

    for(i=0; i<10; i++)

    {

        for(j=0; j<10-i; j++)

        {

            if(a[j]>a[j+1])

            {

                x=a[j+1];

                a[j+1]=a[j];

                a[j]=x;

            }

        }

    }

    for(i=0; i<10; i++)

    {

        printf("%d ",a[i]);

    }

    return a;

}

int insert(int b,int a[])

{

    int i,j;

    for(i=1; i<10; i++)

    {

        if(a[i]>=b)

        {

            break;

        }

    }

    for(j=10; j>i; j--)

    {

        a[j]=a[j-1];

    }

 

    a[i]=b;

    for(j=0; j<11; j++)

        printf("%d ",a[j]);

}

 

int main()

{

    int a[10]= {1,5,6,7,8,9,10,2,3,4};

    int b;

    sort(a);

    printf("请输入要插入的数字");

    scanf("%d",&b);

    insert(b,a);

 

}


二个程序都有一个明显的错

   int a[10]= {1,5,6,7,8,9,10,2,3,4};

其中的变量a,只能存储10个int数,你插入了一个,要存储11个数,下标溢出了,第二个程序能运行只是运气问题(下标溢出的结果是“不可预见的”)

你改为

   int a[11]= {1,5,6,7,8,9,10,2,3,4};

至少在我电脑上,第一个程序也能出正确的结果


相关标签:c语言

下一篇:工业铝型材框架如果在安装过程中遇到问题,拆卸会不会很麻烦?

上一篇:这要怎么处理,总是弹窗出来,求大神帮忙

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?