若先后输入4、1、5、3、7,以下程序的输出结果为( )?

#define MAX 100
main()
{
int i,j,n,flag,t,a[MAX];
printf(“输入数据个数:”);
scanf(“%d\n”,&n);
for(i=1;i<=n;i++) scanf(“%d”,&a[i]);
for(i=1;i<n;i++)
{flag=1;
for(j=1;j<=n-i;j++)
if(a[j]>a[j+1])
{flag=0;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
if(flag) break;
}
for(i=1;i<=n;i++) printf(“%-3d”,a[i]);
printf(“\n”);
}

程序运行后的输出结果是:
1 3 5 7追问

求详解可以嘛谢谢🙏

追答

#include
#define MAX 100
main()
{
int i,j,n,flag,t,a[MAX];
printf("输入数据个数:");
scanf("%d\n",&n);
for(i=1;ia[j+1]) //若待排序范围内相邻数大小顺序不对
{flag=0; //就交换这两个元素,并用flag记录已交换
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
if(flag) break; //若一轮外循环中没有交换,说明排序已完成,提前结束
}
for(i=1;i<=n;i++) printf("%-3d",a[i]); //输出排序后的元素
printf("\n");
}

就是输出数字,指定3位宽度,不足3位时,右面补空格。

温馨提示:答案为网友推荐,仅供参考
相似回答