鱼C论坛

 找回密码
 立即注册
查看: 2105|回复: 3

C++ 阶乘

[复制链接]
发表于 2019-11-15 23:32:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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);
}
为什么我输入数据后,卡住,无法显示结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-15 23:41:15 | 显示全部楼层
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循环是你这样用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-15 23:56:21 | 显示全部楼层
我给你一个图,你说说为什么卡住。
有问题的.png
解决办法,且不谈你的结果是否正确:
好使的.png

话说,你那真的是C++吗?
如果说是C++的话,编译会出问题呢,main 函数必须返回整数
[Error] '::main' must return 'int'
按照C 来编译才没报错呢。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-16 00:26:01 | 显示全部楼层
本帖最后由 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 位是正确的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-4 21:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表