C++ 阶乘
#include<stdio.h>void main()
{
int i,n,j;
double Sn=0;
printf("请输入n的值(0<n<100):");
scanf("%d",&n);
if(0<n<100)
{
for(i=1;0<i<=n;i++)
{
for(j=1;j<=i;j++)
{Sn+=1.0/j;}
}
}
printf("Sn=%lf",Sn);
}
为什么我输入数据后,卡住,无法显示结果 if(0<n<100)
{
for(i=1;0<i<=n;i++)
{
for(j=1;j<=i;j++)
{Sn+=1.0/j;}
}
}
printf("Sn=%lf",Sn);
}
再回去好好看视频或者查资料,谁的if语句和for循环是你这样用的 我给你一个图,你说说为什么卡住。
解决办法,且不谈你的结果是否正确:
话说,你那真的是C++吗?
如果说是C++的话,编译会出问题呢,main 函数必须返回整数
'::main' must return 'int'
按照C 来编译才没报错呢。
本帖最后由 jackz007 于 2019-11-16 11:14 编辑
楼主写的代码算法显然不对,下面是我写的代码,楼主可以参考:
#include<stdio.h>
int main(void)
{
int i , n ;
double Sn = 0 ;
printf("请输入 n 的值 (1 - 99) : ") ;
scanf("%d" , & n) ;
if(n > 0 && n < 100) {
for(Sn = 1.0 , i = 0 ; i < n ; i ++) Sn = Sn * (i + 1) ;
printf("%.0lf\n" , Sn) ;
}
return 0 ;
}
编译运行实况:
C:\Bin>g++ -o x x.c
C:\Bin>x
请输入 n 的值 (1 - 99) : 99
93326215443944096000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
C:\Bin>python x.py
93326215443944152681699238856266700490715968264381621468592963895217599993229915
6089414639761565182862536979208272237582511852109168640000000000000000000000
C:\Bin>
同样都是计算 99 的阶乘,前面是 C 的计算结果,后面是 Python 的计算结果。可以看出,前者计算误差很大,只有前 14 位是正确的。
页:
[1]