标题:[请教]用C语言统计学生考试成绩的问题
只看楼主
zhu_shengyi
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-10-30
结帖率:0
已结贴  问题点数:20 回复次数:0 
[请教]用C语言统计学生考试成绩的问题
题目如下
编写程序对电信某班C语言程序设计课程期末考试命题情况进行分析。
假设该班有30位学生,期末考试成绩是0~100之间的实数(保留到小数点后两位),数据用例自己设计,试卷满分为100分。
要求根据30位学生该课程成绩计算出最高成绩、最低成绩、平均成绩、各分数段人数及所占比例,以及四项分析指标:标准差、偏态值、区分度和效度。

【备注】
偏态值=3×(平均成绩-中位分数)/标准差
区分度=(前27%高分组的平均分-后27%低分组的平均分)÷试卷满分
效度=(前1/3高分组的平均分-后1/3低分组的平均分)÷试卷满分

输入样例:
请输入学生人数:30
请输入学生分数:40 95 66 71 82 83 98 68 35 79 45 86 59 61 85 91 12 64 60 71 80 60 78 65 88 76 74 84 45 35

输出样例:
最高分:98
最低分:12
平均成绩: 67.87   
90以上:  人,占比:  %
89-80  :  人,占比:  %
79-70  :  人,占比:  %
69-60  :  人,占比:  %
59-30  :  人,占比:  %
29-0   :   人,占比:  %
搜索更多相关主题的帖子: C语言 平均分 成绩 分组 学生 
2021-10-30 15:29
自由而无用
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
得分:0 
https://
2021-10-30 17:03
自由而无用
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
得分:0 
//online parser: https://www.bccn.net/run/
程序代码:
#include <stdio.h>

#define strlize(_s) #_s

int main(int argc, char *argv[])
{
    static int i;
    static unsigned char k, high, low;
    static double sum;
    static unsigned char sta_tbl[10];
    
    argv[0] = strlize(40 95 66 71 82 83 98 68 35 79 45 86 59 61 85 91 12 64 60 71 80 60 78 65 88 76 74 84 45 35);
    
    for (high = 0, low = 100; i < 30 * 3; i += 3) {
#define declize(_s) (_s - 0x30)
#define tenslize(_n) (_n * 10)
        k = tenslize(declize(argv[0][i + 0])) + declize(argv[0][i + 1]);
        high < k ? high = k : 0;
        low  > k ? low  = k : 0;
        sta_tbl[k / 10]++;
//#define PRINT_ON
#ifdef PRINT_ON
        printf("k = %d\n", k);
#endif
        sum += k;
    }
    printf("highest: %d, lowest = %d\n", high, low);
    printf("avr grade: %.2lf\n", sum / 30);
    for (i = 9; i > 0; i--) {
        k = sta_tbl[i];
        if (i == 2 || i == 5) {
            k += sta_tbl[i - 1] + sta_tbl[i - 2];
            i -= 2;
        }
        printf("%d+ = %d\%%\n", i * 10, k * 100 / 30);
    }
    //偏态值=3×(平均成绩-中位分数)/标准差
    /* omit */
    //区分度=(前27%高分组的平均分-后27%低分组的平均分)÷试卷满分
    /* omit */
    //效度=(前1/3高分组的平均分-后1/3低分组的平均分)÷试卷满分
    /* omit */
    
    return 0;
}

output sample:

highest: 98, lowest = 12
avr grade: 67.87
90+ = 10%
80+ = 23%
70+ = 20%
60+ = 23%
30+ = 20%
0+ = 3%

[此贴子已经被作者于2021-10-31 07:44编辑过]

2021-10-30 21:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507340-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014237 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved