C语言典型例题52

news2024/12/23 6:35:37

《C程序设计教程(第四版)——谭浩强》

题目:


例题4.4 相传古代印度国王舍罕要褒奖他聪明能干的宰相达依尔(国际象棋发明者),问他需要什么,达依尔回答说:“国王只要在国际象棋的棋盘的第一个格子里放一粒小麦,第二个格子里放两粒小麦,第三个格子里放四粒小麦,以后按照此比例每一格加一倍,一直放第64格(国际象棋的棋盘是64*64),我就感激不尽了,其他的我什么也不要。”国王想:“这能有多少,太容易了!”让人扛了一袋小麦,但不到一会就用完了,再来一袋也很快就用完了,结果全印度的粮食还完还不够,国王纳闷,怎么也算不清这笔账。
请编写程序,帮国王算算一共需要多少麦子。


解题思路:

(1)解读题目:

每一个格子放要求放的麦子

(要求:后一格麦子的数量前一格麦子数量的一倍,且第一格麦子数量为1,第二格麦子数量为2……)

格子麦子数推导规律
111(2ⁿ,n=0)2ⁿ,n=第几个格子-1
22
34
48
5162ⁿ(n=4)
6322ⁿ(n=5)
…………
642ⁿ(n=64-1)

(2)代码思路解析:

1.需要有一个数(x)表示每一项的麦子数

int x=0;

2.需要有一个数(sum)来储存麦子数的和

int sum=0;

3.需要一个循环,这个循环需要实现循环64次,并且x的每一项为2ⁿ,然后还要将每一项相加求出和

代码:

//《C程序设计教程(第四版)——谭浩强》
//例题4.4 相传古代印度国王舍罕要褒奖他聪明能干的宰相达依尔(国际象棋发明者),问他需要什么,
//达依尔回答说:“国王只要在国际象棋的棋盘的第一个格子里放一粒小麦,第二个格子里放两粒小麦,第三个格子里放四粒小麦,以后按照此比例每一格加一倍,一直放第64格(国际象棋的棋盘是64*64),我就感激不尽了,其他的我什么也不要。”
//国王想:“这能有多少,太容易了!”让人扛了一袋小麦,但不到一会就用完了,再来一袋也很快就用完了,结果全印度的粮食还完还不够,国王纳闷,怎么也算不清这笔账。
//请编写程序,帮国王算算一共需要多少麦子。

#include <stdio.h>
#include <math.h>

int main()
{
	double x=0;//64项中每一项的大小
	double sum=0;//64项的总和
	
	int i=0;
	for(i=0;i<=63;i++)
	{
		x=pow(2,i);

		sum=sum+x;
	}
	
	printf("第64格的麦子数为\n%22.16e\n",sum);
	
	return 0;
}

运行结果:

结果分析:

麦子数为:1.84467441*10的19次方

代码编写过程中遇到的问题:

麦子数结果的表示:

初始代码:
//*******错误代码*******//
#include < stdio.h>
#include < math.h>

int main()
{
 long long int x=0;//64项中每一项的大小
 long long int sum=0;//64项的总和
 
int i=0;
 for(i=0;i<=63;i++)
 {
 x=(long long int)pow(2,i);//错误1

sum=sum+x;
 }
 
printf(“%lld\n”,sum);//错误2
 
返回 0;
}
错误1:

pow函数是表示指数的函数,它的返回值默认是一个double类型的数,如果需要的值是其他类型的,需要对其进行强制类型转换

错误2:

(1)如果是longlongint类型的数,输出是用%lld

(2)long long int类型的数的最大值:9223372036854775807
                                      最小值:-9223372036854775808

(3)结果特别特别大的时候超越了longlongint的上限,就会产生整数溢出

怎么解决??

将特别大的数打印出来的时候写成科学计数法的形式,即用%e来打印,但是这时,它的类型必须为double类型,e后面是什么数字,e前面的那个数的10的多少次方

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shader 中的渲染顺序

1、深度测试和深度写入 有了深度测试和深度写入发挥作用让我们不需要关心不透明物体的渲染顺序比如一个物体A 挡住了 物体B&#xff0c;即使底层逻辑中 先渲染A&#xff0c;后渲染B&#xff0c;我们也不用担心 B的颜色会把A覆盖&#xff0c;因为在进行深度测试时&#xff0c;远…

电池管理系统SOX算法资料优化目录2024.8.26

这篇文章主要写一下这一次更新的几个地方&#xff0c;有对原来的代码及模型进行优化的部分&#xff0c;也有新增加的代码和模型&#xff0c;我就把几个比较典型的给列了出来。但是还有好多的更新没有在下面展示出来&#xff0c;因为一个个展示出来太复杂了。如果你对更新的内容…

如何使用ssm实现基于 SSM 框架的宠物用品电子商务平台设计与实现+vue

TOC ssm258基于 SSM 框架的宠物用品电子商务平台设计与实现vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科…

黑神话悟空妖怪平生录

黑神话悟空是一部特别好玩的单机游戏。上一个我这么喜欢的国产单机还是古剑奇谭三。 虽然黑神话的战斗系统和地图系统尚不完善&#xff0c;但是这里面的游记是真的做得很认真。 203个妖怪&#xff0c;203首小诗&#xff0c;203个妖生故事&#xff0c;带你去看妖怪的喜怒哀乐。…

freemarker模版注入

Freemarker模版注入漏洞 模版注入漏洞根因&#xff08;SSTI&#xff0c;服务器端模版注入&#xff09;freemarker介绍Freemarker模版注入漏洞关键点漏洞复现环境引入依赖poc 修复方案完整代码&#xff08;包含修复&#xff09;参考 模版注入漏洞根因&#xff08;SSTI&#xff0…

乾坤大挪移--将一个混乱的excel分类整理的辅助VBA代码

excel 乾坤大挪移 你不需要将工作表手动分类&#xff1b; 只需要在”已整理“的标题行增加标题列&#xff0c; listbox会自动获取”已整理“sheet中的标题列&#xff0c;并列出来 你只需要选中同一列中的单元格&#xff0c;点击想移动到的列表的类别&#xff0c;双击或者点…

【云故事探索】NO.7:「越用越上瘾」,中华财险 60% 研发人员用通义灵码提效

云布道师 中华联合财产保险股份有限公司运用“云大模型”技术革新业务&#xff0c;通过阿里云的通义灵码大幅提升编码效率&#xff0c;近60%的研发人员采用&#xff0c;采纳的生成代码占比约20%&#xff0c;显著提升了团队创新能力与代码质量&#xff0c;并积极探索大模型在更多…

基于SpringBoot的智慧党建系统+uniapp移动端+LW示例参考

1.项目介绍 技术栈环境&#xff1a;SpringBootthymeleafuniappIDEA NavicatMySQL 功能介绍&#xff1a; 后端功能&#xff1a;首页管理&#xff08;轮播图、通知公告、新闻管理&#xff09;、用户管理&#xff08;用户信息、用户反馈、用户订单、用户动态&#xff09;、其他…

一文搞定MybatisPlus

Mybatis简介 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 &#xff08;来自官网&#xff09; 体验Mybatisplus 1.创建SpringBoot工程&#xff0c;导入m…

HarmonyOS--认证服务-操作步骤

HarmonyOS–认证服务 文章目录 一、注册华为账号开通认证服务二、添加项目&#xff1a;*包名要与项目的包名保持一致三、获取需要的文件四、创建项目&#xff1a;*包名要与项目的包名保持一致五、添加json文件六、加入请求权限七、加入依赖八、修改构建配置文件&#xff1a;bui…

【UDS诊断】——0x34、0x36、0x37服务

&#x1f64b;‍♂️【UDS诊断服务介绍合集】系列&#x1f481;‍♂️点击跳转 文章目录 一、服务概述1.0x34服务——请求下载数据1.1.0x34格式 2.0x36服务——数据传输2.1.0x36格式 3.0x37服务——退出上传下载3.1.0x37格式 一、服务概述 Client端使用Routine Control服务来…

WIN32实现远程桌面监控

文章目录 完整代码API简介调试代码 后记reference 完整代码 server.cpp #include <winsock2.h> #include <Ws2tcpip.h> #include <windows.h> #include <stdio.h> #include <vector> #pragma comment(lib, "ws2_32.lib")LRESULT CAL…

什么是韦恩图,怎么制作?用这款软件在线绘制,简单又好用!

在日常工作和学习中&#xff0c;我们经常需要用图表来可视化呈现复杂的信息和关系。其中&#xff0c;韦恩图是一种简洁而强大的可视化工具&#xff0c;能够清晰地展现集合之间的关系&#xff0c;诸如包含与被包含、互斥、并列等。 不过对刚接触韦恩图的人而言&#xff0c;或多…

traceroute命令这样用,追踪主机路由没烦恼

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 晚上好&#xff0c;我的网工朋友。 网络的稳定性和可靠性对于业务连续性至关重要。当涉及到网络连接问题时&#xff0c;有一个强大的工具就是 tr…

Certum Domain Validation CA SHA2

Certum是波兰的一家数字证书厂家&#xff0c;该机构也是目前世界第四家兼容性在99%机构&#xff08;包括历史版本浏览器&#xff09;&#xff0c;目前在国内有授权提供商&#xff1a;Gworg提供签发和认证&#xff0c;拥有二级代理划分&#xff0c;适合长期做SSL证书业务或者集成…

年薪100K入职字节测试岗现在分享下我常背的软件测试面试题

800道软件测试面试真题&#xff0c;高清打印版打包带走&#xff0c;横扫软件测试面试高频问题&#xff0c;涵盖测试理论、Linux、MySQL、Web测试、接口测试、APP测试、Python、Selenium、性能测试、LordRunner、计算机网络、数据结构与算法、逻辑思维、人力资源等模块面试题&am…

Linux文件编程(系统API调用)

文章目录 Linux文件编程标注C的IO缓存类型代码示例--缓存区的存在 文件I/O系统调用标准C库关于文件的输入输出函数FILE结构体文件描述符文件描述符与文件指针的相互转换 系统调用常用函数open函数&#xff08;打开或者创建文件&#xff09;creat函数&#xff08;创建一个现有文…

JAVA-封装

目录 一、封装的概念 二、封装扩展之包 1. 包的概念 2.导入包中的类 3.自定义包 4.常见的包 三、访问限定符 在同一包中&#xff1a; 在不同包中&#xff1a;​编辑 一、封装的概念 面向对象程序三大特性&#xff1a;封装、继承、多态。而类和对象阶段&#xff0c;主…

ESP32修改分区表

修改分区表 官方参考 在工程目录文件夹新建分区表&#xff0c;参考官方的写就行&#xff0c;我这里改成了8M的FLASH&#xff0c;所以新建的分区表为名字是 default_8MB.csv &#xff0c;内容如下&#xff1a; # Name, Type, SubType, Offset, Size, Flags nvs, data, …

后端微服务与分布式系统

编写一篇关于后端微服务和分布式系统的文档&#xff0c;需要详细讨论微服务架构的核心概念、优缺点、关键技术&#xff0c;以及在分布式系统中的应用。以下是文档的大纲和内容概述&#xff1a; 后端微服务与分布式系统 1. 简介 微服务架构是一种将大型应用程序分解为一系列小…