c语言编程把学生成绩用数组表示

以正整数输入若干个学生的成绩,以负数作为输入结束标志,统计并输出输入成绩的个数,用交换法对成绩进行排序,要求输出每趟排序的结果,每个数据占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");
    
}