C语言中基于现有while循环实现1到n数字乘积的方法问询
解决1到n乘积计算的问题
你的问题出在两个核心点:未正确初始化乘积变量,以及**result *= i;的执行位置错误**,以下是具体修改方案:
先在while循环前声明并初始化乘积变量:
乘法的初始值必须设为1(若初始为0,结果永远是0),如果n较大(比如超过12),建议用long long避免整数溢出:// 小n用int足够,大n换long long int result = 1;调整
result *= i;的位置到i++;之前,确保每次循环先计算当前i的乘积,再让i自增。修改后的完整代码:// 假设i和n已提前声明初始化,比如int i=1, n=5; int result = 1; while( i <= n ) { printf("%d\n",i); result *= i; // 先乘当前i的值 i++; } // 循环结束后输出乘积结果 printf("1到%d的乘积是:%d\n", n, result);
如果之前你把result *= i;放在i++;之后,第一次循环i会先变成2,乘积从2开始计算,漏掉了1,自然得不到正确结果。
内容的提问来源于stack exchange,提问作者legoships
相关产品推荐
相关产品推荐

