能帮看一下这哪错了

#include<stdio.h>

int main()

{

    int a[10],i,j,t;

    printf("请输入十个数\n");

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

    scanf("%d",&a[j]);

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

    {

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

        {

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

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

        }

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

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

        printf("\n");

    }

}


吴宥
浏览 1070回答 1
1回答

Absolute_Duo

你这个是冒泡排序吧,有两个问题:1、 if(a[j]>a[j+1])                t=a[j];a[j]=a[j+1];a[j+1]=t;这个if语句后面的内容应用{}括上 if(a[j]>a[j+1])             {   t=a[j];a[j]=a[j+1];a[j+1]=t;   }2、冒泡的二重循环应该是for(i=1;i<10;i++)             //如果i从0开始那么内循环为for(j=0;j<10;j++)则最后j=9然而a[j+1]就是a[10]超出数组范围    {        for(j=0;j<10-i;j++)        {
打开App,查看更多内容
随时随地看视频慕课网APP