C程序训练:阶乘与溢出

已知n是整数,计算1+2!+3!+...+n!,并给出最大能够计算的n值是多少?

1. 假设n是int类型,系统用32位表示int类型。代码如下:

#include <stdio.h>
int main()
{int n,sum1,sum=1,fact=1;int step;for(n=2; n<100; n++) {step = fact;fact *= n;if( step>fact) break;sum1 = sum;sum += fact;    if (sum1>sum) {sum = sum1;break;}}printf("sum=%d\n", sum);  printf("n=%d\n", n-1);  return 0;
}

程序运行结果如下图所示。

图片

2. 假设n是long long int类型,即64位整数。代码如下:


#include <stdio.h>
int main()
{long long int sum1,sum=1,fact=1;long long int step;int n;for(n=2; n<100; n++) {step = fact;fact *= n;if( step>fact) break;sum1 = sum;sum += fact;    if (sum1>sum) {sum = sum1;break;}}printf("sum=%lld\n", sum);  printf("n=%d\n", n-1);  return 0;
}

程序运行结果如下图所示。

图片

3. 假设n是unsigned int类型,即32位无符号整数。代码如下:


#include <stdio.h>
int main()
{unsigned int n,sum1,sum=1,fact=1;unsigned int step;for(n=2; n<100; n++) {step = fact;fact *= n;if( step>fact) break;sum1 = sum;sum += fact;    if (sum1>sum) {sum = sum1;break;}}printf("sum=%u\n", sum);  printf("n=%d\n", n-1);  printf("%d!=%u\n", n-1, step);  return 0;
}

程序运行结果如下图所示。

图片

4. 假设n是unsigned long long int类型,即64位无符号整数。代码如下:


#include <stdio.h>
int main()
{unsigned long long int sum1,sum=1,fact=1;unsigned long long int step;int n;for(n=2; n<100; n++) {step = fact;fact *= n;if( step>fact) break;sum1 = sum;sum += fact;    if (sum1>sum) {sum = sum1;break;}}printf("sum=%llu\n", sum);  printf("n=%d\n", n-1);  printf("%d!=%llu\n", n-1, step);  return 0;return 0;
}

程序运行结果如下图所示。

图片

参考文献:

[1]李红卫,李秉璋. C程序设计与训练(第四版)[M],大连,大连理工大学出版社,2003.

[2]https://pan.baidu.com/s/17ZXphwqySNIsIgcGtYMjvg?pwd=lhwc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/345309.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UCB Data100:数据科学的原理和技巧:第二十一章到第二十六章

二十一、SQL II 原文&#xff1a;SQL II 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 学习成果 介绍过滤组的能力 在 SQL 中执行数据清理和文本操作 跨表连接数据 在本讲座中&#xff0c;我们将继续上次的工作&#xff0c;介绍一些高级的 SQL 语法。 首先&…

3d建模软件有哪些?3d云渲染推荐

3D建模软件有很多&#xff0c;有的非常复杂难以上手&#xff0c;那么适合新手的有哪些呢&#xff1f;一起来看看吧。 1、SketchUp SketchUp是一个用户友好且直观的建模软件&#xff0c;能与V-Ray渲染器一起使用&#xff0c;适合初学者。2、Blender Blender是一个功能强大且免费…

高级JavaScript。如何用JavaScript手撸一个富文本编辑器?

要素过多建议收藏 - 富文本编辑 基本的技术就是在空白 HTML 文件中嵌入一个 iframe 。通过 designMode 属性&#xff0c;可以将这个空白文档变成可以编辑的&#xff0c;实际编辑的则是 <body> 元素 的 HTML 。 designMode 属性有两个可能的值&#xff1a; "…

文件恢复工具推荐!这三款轻松恢复数据!

“大家保存在电脑上的文件丢失后有什么比较好的恢复方法或者工具推荐吗&#xff1f;对于我这种电脑小白来说&#xff0c;真的太需要一个好用的工具了&#xff01;谢谢&#xff01;” 在我们的日常工作中&#xff0c;可能都遇到过文件误删或丢失的情况。这有时会让我们感到很不安…

【模型评估 07】过拟合与欠拟合

在模型评估与调整的过程中&#xff0c;我们往往会遇到“过拟合”或“欠拟合”的情况。如何有效地识别“过拟合”和“欠拟合”现象&#xff0c;并有针对性地进行模型调整&#xff0c;是不断改进机器学习模型的关键。特别是在实际项目中&#xff0c;采用多种方法、从多个角度降低…

将.NET应用转换成Window服务

写在前面 本文介绍了将.NET8.0应用程序转换成Windows服务。 需要在NuGet中获取并安装&#xff1a;Microsoft.Extensions.Hosting.WindowsServices 包 代码实现 using System.Runtime.InteropServices; using WorkerService1;public class Program {public static void Main…

免费的数据恢复软件哪个好?这11个数据恢复软件可以试试

许多免费的数据恢复程序可以帮助恢复或“取消删除”您意外删除的文件。您已删除的文件通常仍存在于您的硬盘驱动器&#xff08;或 USB 驱动器、媒体卡、智能手机等&#xff09;上&#xff0c;并且可以使用数据恢复软件进行恢复。 11个数据恢复软件榜单 使用这些免费软件数据恢…

Nacos下载与安装【windows】

&#x1f95a;今日鸡汤&#x1f95a; 我不知将去何方&#xff0c;但我已经在路上。 ——宫崎骏《千与千寻》 目录 &#x1f95e;1.Nacosdi地址 &#x1f32d;2.GitHub下载 &#x1f37f;3.目录结构 &#x1f953;4.启动nacos &#x1f9c2;5.客户端登陆 &#x1f9c8…

kotlin运行

1.使用android studio 由于我本身是做android的&#xff0c;android studio本身有内置kotlin的插件。但若只是想跑kotlin的程序&#xff0c;并不像和android程序绑在一起&#xff0c;可以创建一个kt文件&#xff0c;在里面写一个main函数&#xff0c;就可以直接运行kotlin程序…

MathType绝对是我数学编辑的首选工具!

去年&#xff0c;微软曾说&#xff0c;要去掉Office里的公式编辑器&#xff0c;建议用户使用MathType编辑公式。目前Office用户可以到微软官网安装MathType的插件&#xff0c;现在免费使用&#xff0c;以后要收费。Word里安装这个插件以后&#xff0c;就会出现MathType的菜单。…

公考方法论

听课 B站或淘宝等平台搜索网课购买 行测 粉笔最便宜980网课 先做两套真题熟悉结构&#xff0c;听课做真题针对性加强 学习强国近三年的《理论热点面对面》 字迹田英章正楷 冲刺&#xff1a;粉笔app练习真题&#xff0c;每周两三套练手 笔迹端正很重要 申论 基本看字&#…

debian12部署Gitea服务

首先安装git、wget、sqlite&#xff0c;然后进行用户和组的相关设置 sudo apt install -y git wget sqlite3 新增一个git用户与一个git组 sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos Git Version Control git 给git用户设…