C语言成绩排序

2020-05-09  本文已影响0人  psh_11

这是对《啊哈!算法》第一节第一个桶排序的程序的改进。
输入的成绩只能是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);
}
上一篇 下一篇

猜你喜欢

热点阅读