鱼C论坛

 找回密码
 立即注册
查看: 2608|回复: 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);
}
为什么我输入数据后,卡住,无法显示结果
小甲鱼最新课程 -> https://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循环是你这样用的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-16 00:26:01 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-16 11:14 编辑

    楼主写的代码算法显然不对,下面是我写的代码,楼主可以参考:
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.         int i , n                                                      ;
  5.         double Sn = 0                                                  ;
  6.         printf("请输入 n 的值 (1 - 99) : ")                            ;
  7.         scanf("%d" , & n)                                              ;
  8.         if(n > 0 && n < 100) {
  9.                 for(Sn = 1.0 , i = 0 ; i < n ; i ++) Sn = Sn * (i + 1) ;
  10.                 printf("%.0lf\n" , Sn)                                 ;
  11.         }
  12.         return 0                                                       ;
  13. }
复制代码


      编译运行实况:
  1. C:\Bin>g++ -o x x.c

  2. C:\Bin>x
  3. 请输入 n 的值 (1 - 99) : 99
  4. 93326215443944096000000000000000000000000000000000000000000000000000000000000000
  5. 0000000000000000000000000000000000000000000000000000000000000000000000000000

  6. C:\Bin>python x.py
  7. 93326215443944152681699238856266700490715968264381621468592963895217599993229915
  8. 6089414639761565182862536979208272237582511852109168640000000000000000000000

  9. C:\Bin>
复制代码


          同样都是计算 99 的阶乘,前面是 C 的计算结果,后面是 Python 的计算结果。可以看出,前者计算误差很大,只有前 14 位是正确的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-3 22:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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