从键盘输入-批学生的成绩,计算平均成绩(保留2位小数),并统计不及格学生人数。
测试用例:
输入:6788735 482-1
输出:
平均成绩:72.80
不及格学生人数:1
从键盘输入-批学生的成绩,计算平均成绩(保留2位小数),并统计不及格学生人数。 测试用例: 输入:6788735 482-1 输出: 平均成绩:72.80 不及格学生人数:1
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
为了实现这个功能,你需要编写一个简单的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分。如果输入格式不符合这些要求,可能需要额外的错误检查。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥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设置打印机首选项