美文网首页
C语言成绩排序

C语言成绩排序

作者: psh_11 | 来源:发表于2020-05-09 13:46 被阅读0次

    这是对《啊哈!算法》第一节第一个桶排序的程序的改进。
    输入的成绩只能是0~10分,可以编译玩一玩。

    #include <stdio.h>
    
    void ducj(int arr[], int);//读成绩
    void dycj(int arr[]);//打印成绩
    
    int main(void)
    {
        int arr[11] = {0};//一共0~10分
        int ncj;//要读多少个人的成绩
        printf("有多少个学生的成绩:");
        scanf("%d", &ncj);
        ducj(arr, ncj);
        dycj(arr);
    }
    
    void ducj(int arr[], int n)
    {
        int cj;
        for(int i = 0; i < n ; i++)
        {
            printf("请输入成绩:");
            scanf("%d", &cj);
            arr[cj]++;//得这个成绩的人+1
            printf("arr[%d] = %d\n", cj, arr[cj]);
        }
    }
    
    void dycj(int arr[])//还没想到更好的
    {
        printf("他们的成绩由小到大排序如下:");
        for(int i = 0; i <= 10; i++)
            for(int j = 1; j <= arr[i]; j++)
                printf("%d ", i);
    }
    

    只是改一下for语句就可以从大到小排序。

    #include <stdio.h>
    
    void ducj(int arr[], int);
    void dycj(int arr[]);
    
    int main(void)
    {
        int arr[11] = {0};//一共0~10分
        int ncj;//要读多少个人的成绩
        printf("有多少个学生的成绩:");
        scanf("%d", &ncj);
        ducj(arr, ncj);
        dycj(arr);
    }
    
    void ducj(int arr[], int n)
    {
        int cj;
        for(int i = 0; i < n ; i++)
        {
            printf("请输入成绩:");
            scanf("%d", &cj);
            arr[cj]++;//得这个成绩的人+1
            printf("arr[%d] = %d\n", cj, arr[cj]);
        }
    }
    
    void dycj(int arr[])//还没想到更好的
    {
        printf("他们的成绩由大到小排序如下:");
        for(int i = 10; i >= 0; i--)
            for(int j = 1; j <= arr[i]; j++)
                printf("%d ", i);
    }
    

    相关文章

      网友评论

          本文标题:C语言成绩排序

          本文链接:https://www.haomeiwen.com/subject/spkknhtx.html