C语言
#include<stdio.h>int main()
{
int i,j;
double sum = 0,num = 1;
for(i = 1; i <= 100; i++)
{
for(j = 1; j <= i; j++)
{
num = num * j;
}
sum = sum + num;
}
printf("总数是%e",sum);
}
上面这段代码是哪里有错误吗?为什么输出乱码?
double 类型不能用 %e来输出,请改为 %lf BngThea 发表于 2020-3-26 18:57
double 类型不能用 %e来输出,请改为 %lf
%lf也不行。在Dev C++上,你那可以? INF表示超出浮点数表示范围(值溢出);
当值很大或很小时会输出INF:1.0/0.0,-1.0/0.0,0.0+inf=inf;log(0); 良弓无箭 发表于 2020-3-26 19:27
%lf也不行。在Dev C++上,你那可以?
那就用 %f 试试 你这是超范围了吧{:10_248:} 你这外层循环100次每次让内部循环他的阶乘,外部再计算每次循环阶乘的总和
循环阶乘到12就已经快5亿了你着循环这么多怎么可能不超出范围{:5_99:} 双层循环,num一直在增大。num最后是100以内所有数的阶乘的乘积,早就撑爆啦!
怎么可能输出正确的结果。
你要计算的是100以内阶乘的和吧?
外层循环需要给num复原为1
#include<stdio.h>
int main()
{
int i,j;
double sum = 0,num = 1;
for(i = 1; i <= 100; i++)
{
num=1;
for(j = 1; j <= i; j++)
{
num = num * j;
}
sum = sum + num;
}
printf("总数是%e",sum);
}
页:
[1]