以正整数输入若干个学生的成绩,以负数作为输入结束标志,统计并输出输入成绩的个数,用交换法对成绩进行排序,要求输出每趟排序的结果,每个数据占4列宽度,右对齐。
输入
以整数输入,每个整数用空格隔开
输出
输出输入数据的个数,在排序过程中输出每趟交换法排序的结果,在排序结束后,再输出一遍排序后的结果。
样例输入
50 60 90 33 75 -1
样例输出
5
90 50 60 33 75
90 75 50 33 60
90 75 60 33 50
90 75 60 50 33
90 75 60 50 33
提示
课本例题练习,为避免干扰,去掉提示信息的输出,输出结果的格式为:"%4d" 。
⋮
1
#include "stdio.h"
void main()
{
int a[10];
int i,j,t,k;
int n;
scanf("%d",&n);
for(i=0;<n;i++){
scanf("%d",&k);
if(k != -1)
a[i] = k;
}
printf("排序之前:\n");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
printf("\n");
for(i=0;i<n;i++)
{
printf("i=%d,第%d轮:\n",i,i+1);
for(j=i+1;j<=n-1;j++)
{
if(a[i]>a[j])
{
t=a[i]; //t是临时变量
a[i]=a[j];
a[j]=t;
}
//打印排序过程:
printf("j=%d\t",j);
for(k=0;k<n;k++)
printf("%d\t",a[k]);
printf("\n");
//---------------
}
}
printf("排序之后:\n");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
printf("\n");
}