苏啊苏H 2024-05-27 18:43 采纳率: 71.4%
浏览 15
已结题

从键盘输入-批学生的成绩,计算平均成绩(保留2位小数),并统计不及格学生人数。 测试用例: 输入:6788735 482-1 输出: 平均成绩:72.80 不及格学生人数:1

从键盘输入-批学生的成绩,计算平均成绩(保留2位小数),并统计不及格学生人数。
测试用例:
输入:6788735 482-1
输出:
平均成绩:72.80
不及格学生人数:1

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-27 18:43
    关注

    引自免费微信小程序:皆我百晓生

    为了实现这个功能,你需要编写一个简单的C语言程序,它接收一系列的成绩作为输入,然后计算平均分并统计不及格的学生人数。以下是完整的C语言代码示例:

    #include <stdio.h>
    
    int main() {
        int count = 0, sum = 0, score;
        char input[100];
        int failed_count = 0;
    
        printf("请输入成绩(以空格分隔):");
        fgets(input, sizeof(input), stdin);
    
        // 按空格分割字符串,处理每个成绩
        char* token = strtok(input, " ");
        while (token != NULL) {
            score = atoi(token);
            if (score >= 0 && score <= 100) {
                sum += score;
                count++;
            } else {
                printf("无效成绩: %d\n", score);
            }
            token = strtok(NULL, " ");
        }
    
        // 计算平均分并保留两位小数
        float average = (float)sum / count;
        average = round(average * 100) / 100; // 使用round函数四舍五入到最近的十分位
    
        // 统计不及格学生人数
        for (int i = 0; i < strlen(input); i++) {
            if (input[i] == '-') {
                failed_count++;
            }
        }
    
        printf("平均成绩: %.2f\n", average);
        printf("不及格学生人数: %d\n", failed_count);
    
        return 0;
    }
    

    这个程序首先提示用户输入成绩,并将输入读入到一个字符数组input中。接下来,通过strtok()函数按空格分割字符串,处理每个成绩。对于有效的成绩(在0到100之间),我们将其累加到总分sum中并增加计数器count。如果遇到无效成绩(例如负数),我们会打印一条错误消息。

    在所有成绩处理完成后,我们计算平均分并将结果保留两位小数。这里我们使用了round()函数进行四舍五入。接着,遍历输入字符串,统计以减号-表示的不及格学生人数。

    最后,程序会输出平均成绩和不及格学生人数。请注意,此程序假设输入的成绩是整数且不会超过100分。如果输入格式不符合这些要求,可能需要额外的错误检查。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 创建了问题 5月27日

悬赏问题

  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项