求平均值的简单C程序始终输出0,求助排查代码问题
C语言平均值计算代码错误排查
你的代码存在以下4处核心问题,是导致输出结果异常的原因:
- 变量未初始化:
sum定义后没有赋值为0,初始值是内存中的随机垃圾值,累加逻辑从起始就不符合预期。 - 循环变量被异常覆盖:你将
for循环的计数变量list同时用来接收用户输入的数值,会直接打乱循环计数逻辑,无法按照输入的total值执行对应次数的取值操作。 - 累加逻辑颠倒:你写的
list += sum逻辑完全错误,正确的逻辑是把用户输入的数值加到总和sum上,而非操作循环计数变量。 - 输出格式符不匹配:
avg是浮点型变量,你使用了仅用于输出整型的%d格式符,会直接导致输出内容错误。
以下是修正后的可正常运行代码:
#include <stdio.h> int main() { // 初始化sum为0,新增单独变量num接收用户输入的数值 int sum = 0, num, total; float avg; printf("Enter total number of values: "); scanf("%d", &total); for (int list = 0; list < total; list++) { printf("Enter the values: "); scanf("%d", &num); // 将输入值累加到总和 sum += num; } avg = (float) sum / (float) total; // 浮点型使用%f格式符输出,此处保留2位小数可读性更强 printf("The average of such values shall be: %.2f", avg); return 0; }
内容的提问来源于stack exchange,提问作者Milind Goel
相关产品推荐
相关产品推荐

