C语言计算20的阶乘:代码解析与优化
你的代码有一些问题。在每次循环中,你都将'k'的值赋给了's',这会导致's'的值在每次循环中都被更新,最终's'的值将等于20的阶乘的最后一个数。
下面是修改后的代码:
#include<stdio.h>
int main()
{
int i;
double s = 1; // 使用double类型存储结果,以避免溢出
for(i = 1; i <= 20; i++){
s = s * i;
}
printf("20的阶乘:%lf\n", s);
return 0;
}
在这个修改后的代码中,我们将's'的初始值设为1,并在每次循环中将'i'乘以's',从而计算20的阶乘。使用'double'类型可以确保结果的精度。
输出结果为:
20的阶乘:2432902008176640000.000000
注意:由于20的阶乘非常大,所以结果可能无法准确显示。使用'%lf'格式说明符来打印'double'类型的值可以显示更多的小数位数。
原文地址: https://www.cveoy.top/t/topic/TVK 著作权归作者所有。请勿转载和采集!