C语言新手求助:输入n个整数计算总和、平均值及平方和的实现
修改方案
你只需要做3处简单调整即可实现平方和计算逻辑:
- 先在开头的变量声明段新增用于存储平方和的变量,代码如下:
int i,n,Sum=0,numbers, square_sum = 0; float Average; - 在循环读取输入数字的逻辑中,累加总和的同时累加当前数字的平方值:
for(i=0;i<n;++i) { scanf("%d", &numbers); Sum = Sum +numbers; square_sum += numbers * numbers; // 新增平方累加逻辑 } - 取消平方和输出语句的注释,补全输出参数:
printf("\nSum of the Square of %d Numbers = %d",n, square_sum);
完整可运行代码
#include <stdio.h> int main() { int i,n,Sum=0,numbers, square_sum = 0; float Average; printf("\nPlease Enter How many Numbers you want?\n"); scanf("%d",&n); printf("\nPlease Enter the Number(s) one by one\n"); for(i=0;i<n;++i) { scanf("%d", &numbers); Sum = Sum +numbers; square_sum += numbers * numbers; } Average = Sum/(float)n; // 修复整数除法丢失小数精度的问题 printf("\nSum of the %d Numbers = %d",n,Sum); printf("\nAverage of the %d Numbers = %.2f",n, Average); printf("\nSum of the Square of %d Numbers = %d",n, square_sum); return 0; }
补充说明
你原本的平均值计算逻辑存在小缺陷:当Sum和n都是整型时,C语言默认按整数除法运算,会丢失小数精度,比如输入2个数字1和2,总和为3,3/2会得到1而非1.5,上述完整代码中已经通过强转n为float类型修复了该问题。
如果后续需要处理数值较大的输入,避免平方值超出int类型的存储范围,可以把square_sum的类型改为long long,对应的输出占位符同步改为%lld即可。
内容的提问来源于stack exchange,提问作者Ryuutorii
相关产品推荐
相关产品推荐

