编辑代码

#include <stdio.h>

#define NUMBER  20

int main(void)
{
    /*实际的人数*/
    int num;
    int i, j, k, l;
    /*储存学生分数的数组tensu[NUMBER]*/
    int tensu[NUMBER];
    /*储存分布图数据的数组fbt[11],初始值为0*/
    int fbt[11] = {0};

    printf("确定学生的数量(20以内):");

    do
    {
        scanf("%d", &num);

        if (num < 1 || num > NUMBER)
            printf("\a 请输入1 ~%d之间的数:", NUMBER);
    } while (num < 1 || num > NUMBER);

    printf("请依次输入成绩↓\n\n");

    for (i = 0; i < num; i++)
    {
        printf("%d号:", i + 1);

        do
        {
            scanf("%d", &tensu[i]);
            if (tensu[i] < 0 || tensu[i] > 100)
                printf("\a 成绩值应在0~100之间:");
        }while (tensu[i] < 0 || tensu[i] > 100);

        /*分布图内,每10分为一档,每输入一个成绩,便除以10然后记入分布图内各档+1*/
        fbt[tensu[i] / 10]++;
    }

    /*显示分布图*/
    puts("\n---分布图---");

    for(j = 0; j < 11; j++)
    {        
        if(j == 10)
        {
            printf("    100:");
            for(k = 0; k < fbt[10]; k++)
                putchar('*');
            putchar('\n');
        }
        else
        {
            printf("%3d~%3d:", j * 10, j * 10 + 9);
            for(l = 0; l < fbt[j]; l++)
                putchar('*');
            putchar('\n');
        }
            
            
    }


    return 0;
}