212
社区成员
发帖
与我相关
我的任务
分享
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。
在每一行中输出排序过程中对应步骤的中间结果,即每一步后a[0]〜 a[n−1]的值,相邻数字间有一个空格,行末不得有多余空格。
#include<stdio.h>
int main(){
int i,j,n,flag=0,k;
int a[10];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}if(n==1)
printf("%d",a[0]);
for(i=1;i<=n-1;i++){
flag++;
for(j=0;j<n-flag;j++){
if(a[j]>a[j+1]){
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}for(j=0;j<n;j++){
printf("%d",a[j]);
if(j!=n-1){
printf(" ");
}
}
printf("\n");
}return 0;
}
注意考虑n==1的情况,以flag作为标志,标记数据循环发生的变化,因为要输出每一次交换后的结果,要注意输出语气放置的位置。
同时注意一些细节,比如"printf"中不能加"&".
最后:
结论:注意循环细节。