weixin_54717929
weixin_54717929
采纳率62.5%
2021-02-28 11:35

冒泡排序法求解释错误

#include "stdio.h"
int main()
{
int i,j,t;
int a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[10]);
}    
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("%d",a[i]);    
}    
    return 0;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • qq_43414873 小白小白你好菜 2月前

    首先,你的scanf("%d", &a[10])有问题,你这个不仅下标越界,而且每次输入的值都作为越界那个元素的值去了,应该用&a[i]。

    其次,在比较的那个循环体中,你的第二个循环判断条件有误,当j = 0时,i会比较到i<9,那么你的i+1=10>9又越界了。你可以用8-i,或者用我的那个判断条件也行

    点赞 评论 复制链接分享
  • qq_43414873 小白小白你好菜 2月前

    修改代码如下:

    #include "stdio.h"
    int main()
    {
        int i, j, t;
        int a[10];
        for(i = 0; i < 9; i++)
        {
            scanf("%d", &a[i]);
        }    
        for(j = 1; 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("%d", a[i]);    
        }    
        return 0;
    }

    点赞 评论 复制链接分享

为你推荐