如何获取分数变量并计算平均分?(C代码修改求助)
问题解决:获取分数并计算平均分
你的代码已经完成了获取用户输入的分数数量和每个分数的部分,但计算平均分的逻辑存在明显问题,以下是修正后的实现:
原代码的核心问题
- 你在计算时重复调用
score[n],但数组的有效索引范围是0到n-1,score[n]属于越界访问,会触发未定义行为。 - 固定除以
3.0,没有根据用户输入的实际分数数量n计算,完全不符合平均分的逻辑。
修正后的完整代码
#include <stdio.h> #include <cs50.h> int main(void) { int n = get_int("How many scores you have? "); int score[n]; int total = 0; // 初始化总和变量,用于累加所有分数 for(int i = 0; i < n; i++) { score[i] = get_int("Score: "); total += score[i]; // 每输入一个分数,就累加到总和中 } // 将总和强制转换为double类型,避免整数除法丢失精度,再除以分数数量n printf("Average: %.2f\n", (double)total / n); }
关键修改说明
- 新增
int total = 0;:专门用来存储所有分数的累加总和。 - 循环内添加
total += score[i];:在输入每个分数的同时完成累加,避免后续再遍历数组。 - 修改平均分计算逻辑:用
(double)total / n替代原错误写法,强制转换为浮点数后再做除法,保证结果的精度。
内容的提问来源于stack exchange,提问作者oopscatus
相关产品推荐
相关产品推荐

