C语言这题这题错在哪里呀?

img


#include<stdio.h>
int main()
{int i,j,a[11],t;

for(i=0;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
if(a[0]==1)
{for(j=0;j<10;j++)
for(i=0;i<10-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=1;i<=10;i++)
printf("%d",a[i]);
printf("\n");}
else
{for(j=0;j<10;j++)
for(i=0;i<10-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=10;i>0;i--)
printf("%d",a[i]);
printf("\n");}

return 0;

应该是打印排序后的数之间少了个空格,升序和降序排序后两处打印那里加一个空格应该就可以了,因为题目要求两个数之间要打印一个空格, 然后打印的换行如果需要也可以去掉;另外冒泡排序那里的也修改下。

修改如下:

参考链接:
冒泡排序_百度百科

#include<stdio.h>
int main()
{
    int i,j,a[11],t;
    for(i=0;i<11;i++)
        scanf("%d",&a[i]);
//    printf("\n");
    
    if(a[0]==1)
    {
        for(j=1;j<10;j++)
            for(i=1;i<11-j;i++)
                if(a[i]>a[i+1])
                {
                    t=a[i];
                    a[i]=a[i+1];
                    a[i+1]=t;
                }    
        for(i=1;i<=10;i++)
            printf("%d ",a[i]);
    //    printf("\n");
    }
    else
    {
        for(j=1;j<10;j++)
            for(i=1;i<11-j;i++)
                if(a[i]<a[i+1])
                {
                    t=a[i];
                    a[i]=a[i+1];
                    a[i+1]=t;
                }
        for(i=1;i<=10;i++)
            printf("%d ",a[i]);
        //printf("\n");
    }

return 0;

}

img