C++实现链表元素求平均值功能出现返回值类型不匹配错误如何修复
问题原因
你的报错核心是函数返回值和声明的类型不匹配,同时存在两处冗余/精度问题:
- 头文件中
medie函数声明返回类型为void(无返回值),但你在函数实现中返回了int类型的media变量,类型完全不符 - 函数声明中定义了不需要用到的float入参,实现中也没有使用该参数
- 平均值变量
media定义为int类型,会丢失除法运算后的小数精度,不符合平均值的计算需求
修复步骤
- 修改头文件中的
medie函数声明,将返回值改为浮点型、去掉无用入参:
把原来的void medie(float);替换为:
float medie();
- 修改cpp文件中的
medie函数实现,对齐声明的返回类型和入参,同时补充空链表判断避免除0错误:
float List::medie() { int count = 0; int sum = 0; float media = 0.0f; Node* temp3 = head; // 空链表直接返回0,避免除以0报错 if (temp3 == NULL) { return media; } while (temp3 != NULL) { count++; sum += temp3->val; temp3 = temp3->next; } media = (float)sum / count; return media; }
验证说明
修改后函数返回值类型为float,和return语句返回的平均值类型匹配,报错就会消失,同时也能正确保留平均值的小数部分。
内容的提问来源于stack exchange,提问作者my_name
相关产品推荐
相关产品推荐

