C程序设计谭浩强第五版
程序习题
- 第一章
- 1、第5题
- 2、第6题
- 第三章
- 1、第2题
- 2、第2题
- 3、第3题
- 4、第4题
- Tips
第一章
1、第5题
编写一个C程序,运行时输出以下图形:

#include <stdio.h>
int main()
{for (int i = 0; i < 4; i++) // 输出4行循环控制{for (int j = 0; j < i; j++) //第几行就输出几个空格,j从0开始,循环退出条件为j < i{printf("%s", " ");}printf("%s\n", "****");}return 0;
}
2、第6题
编写一个C程序,运行时输人a,b,c三个值,输出其中值最大者。
#include<stdio.h>
int main()
{int a, b, c, max;printf("请输入三个数:\n");scanf("%d%d%d", &a, &b, &c);if (a > b){max = a;}else{max = b;}if (c > max) // c与a\b中的大者比较{max = c;}printf("三个数中最大的数为:%d", max);return 0;
}
第三章
1、第2题
假如我国国民生产总值的年增长率为7%, 计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为 p = ( 1 + r ) n p = (1+r)^n p=(1+r)n ,其中r为年增长率,n为年数,p为与现在相比的倍数。
解析:调用math库幂运算函数pow,传递对应参数即可。
#include<stdio.h>
#include <math.h>int main()
{int n = 10;float p, r;r = 0.07;p = pow(1 + r, n);printf("p=%f\n", p);return 0;
}// 输出结果
p = 1.967152
2、第2题
存款利息的计算。有1000元,想存5年,可按以下5种办法存:
(1)一次存5年期
(2)先存2年期,到期后将本息再存3年期
(3)先存3年期,到期后将本息再存2年期
(4)存1年期,到期后将本息再存1年期,连续存5次
(5)存活期存款,活期利息每一季度结算一次
2017年银行存款利息如下:
1年期定期存款利息为1.5%;
2年期定期存款利息为2.1%;
3年期定期存款利息为2.75%;
5年期定期存款利息为3%;
活期存款利息为0.35%(活期存款每一-季度结算一-次利息)
如果r为年利率,n为存款年数,则计算本息的公式如下:
1年期本息和: P= 1000* (1+r);
n年期本息和: P= 1000* (1+n* r);
存n次1年期的本息和: P = 1000 ∗ ( 1 + r ) n P=1000* (1+r)^n P=1000∗(1+r)n;
活期存款本息和: P= 1000 (1+ r 4 \frac{r}{4} 4r) 4 n ^{4n} 4n;
说明: 1000(1+ r 4 \frac{r}{4} 4r)是一个季度的本息和。
#include<stdio.h>
#include <math.h>
int main()
{int p = 1000;float r5, r3, r2, r1, r0, p1, p2, p3, p4, p5;r5 = 0.0585;r3 = 0.054;r2 = 0.0468;r1 = 0.0414;r0 = 0.0072;p1 = p*((1 + r5) * 5); // 一次存5年期 p2 = p*(1 + 2 * r2)*(1 + 3 * r3); // 先存2年期,到期后将本息再存3年期 p3 = p*(1 + 3 * r3)*(1 + 2 * r2); // 先存3年期,到期后将本息再存2年期 p4 = p*pow(1 + r1, 5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5 = p*pow(1 + r0 / 4, 4 * 5); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n", p1); // 输出按第1方案得到的本息和 printf("p2=%f\n", p2); // 输出按第2方案得到的本息和 printf("p3=%f\n", p3); printf("p4=%f\n", p4); printf("p5=%f\n", p5); return 0;
}// 输出结果
p1 = 5292.500488
p2 = 1270.763062
p3 = 1270.763184
p4 = 1224.863770
p5 = 1036.621094
3、第3题
购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为300 000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位按四舍五人处理。
提示:计算还清月数m的公式如下:
m = l o g ( p ) − l o g ( p − d ∗ r ) l o g ( 1 + r ) \frac{log (p) - log(p - d * r) }{log(1 + r)} log(1+r)log(p)−log(p−d∗r)
可以将公式改写为:
m = l o g ( p p − d ∗ r ) l o g ( 1 + r ) \frac{log(\frac{p} {p - d * r} ) } {log(1 + r)} log(1+r)log(p−d∗rp)
C的库函数中有求对数的函数log10,是求以10为底的对数,log (p)表示log p。
题目解析:
该题的关键主要是利用数学函数库中的log函数进行求解,然后月份要求按照小数点后一位进行四舍五入进行处理,只需要在输出时进行格式控制即可。
#include<stdio.h>
#include <math.h>
int main()
{float d = 300000, p = 6000, r = 0.01, m;m = log10(p / (p - d*r)) / log10(1 + r);printf("m = %3.1f\n", m);return 0;
}
4、第4题
分析下面的程序:
#include<stdio.h>
int main()
{char c1, c2;c1 = 97;c2 = 98;printf("c1=%c, c2=%c\n", c1, c2);printf("c1=%d, c2=%d\n", c1, c2);return 0;
}
(1)运行时会输出什么信息?为什么?
c1=a, c2=b
c1=97, c2=98
print()函数格式输出:
%c --> 字符形式输出,输出相应字符,所以会把97和98当作相应字符的ASCII值,输出的时候按照字符显示
%d --> 整数形式输出,输出对应整数值。
(2)如果将程序第4,5行改为
c1 = 197;
c2 = 198;
运行时会输出什么信息?为什么?
c1=?, c2=?
c1=-59, c2=-58
因为c1和c2为char类型,其保存的数据范围为-128~127,当c1=197,c2=198时,已经超出了char类型所能够保存的数据范围,此时会进行相应的转换为c1=-59,c2=-58
(当整型值用2 byte 表示:197二进制为0000 0000 1100 0101,198二进制为0000 0000 1100 0110,当整型值197赋值给字符型c1时,进行了缩窄转换,高8位被舍弃留下了1100 0101,最高位表示符号位,为1表示为负数,求出其数值即可)。
二进制负值转十进制
二进制、八进制、十进制、十六进制相互转换
只是第一行以字符输出时,c1=-59,c2=-58为不可显示字符,所以输出了?,而第二行以整数输出时就进行了相应的整数显示。
(3)如果将程序第3行改为
int c1, c2;
运行时会输出什么信息?为什么?
c1=?, c2=?
c1=197, c2=198
因为c1和c2为int时,第二行以整形输出自然能够保存的下,但第一行以字符输出时,虽然数据int能够储存,但是在输出时需要准换为字符,转换后数据就超出了范围,此时c1=-59,c2=-58,两者都为不可显示字符,所以就显示了"?"。
Tips
实际编程中也需要多注意类型匹配,否则容易无法得到想要的结果,甚至造成意想不到的错误,引起程序崩溃等,这种问题排查起来也很费劲。
相关文章:
C程序设计谭浩强第五版
程序习题 第一章1、第5题2、第6题 第三章1、第2题2、第2题3、第3题4、第4题Tips 第一章 1、第5题 编写一个C程序,运行时输出以下图形: #include <stdio.h> int main() {for (int i 0; i < 4; i) // 输出4行循环控制{for (int j 0; j < i; j) //第几行就输出几…...
石油化工厂为什么要用专业防爆手机?
防爆手机之所以必须使用专业设计的产品,主要是出于安全考虑,以防止在易燃易爆环境中因手机使用不当引发爆炸事故。以下几点详细解释了使用专业化工防爆手机的必要性: 本质安全设计:顶坚专业防爆手机采用了本质安全(本安…...
文本生成sql模型(PipableAI/pip-sql-1.3b)
安装环境 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install transformers 代码 question "What are the email address, town and county of the customers who are of the least common gender?"sc…...
机器学习中的数学底蕴与设计模式
在说机器学习设计模式之前,想多说几句,在进入软件行业最初的10年,那时候耳熟能详的基本就是多线程编程,互斥同步锁,设计模式,OOA,OOP,常规数组,tree,图的数据…...
【Android面试八股文】性能优化相关面试题:如何查找CPU占用?
文章目录 一、 如何查找CPU的占用问题二、TraceView的使用关于TraceView和Android Studio的Profiler第一步、通过Android studio 打开`Android profiler`第二步、使用步骤第三步、技术说明第四步、CPU占用相关指标说明扩展阅读一、 如何查找CPU的占用问题 在Android开发中,如…...
面试框架一些小结
springcloud的⼯作原理 springcloud由以下⼏个核⼼组件构成: Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表, 从⽽知道其他服务在哪⾥ …...
c# 往window注册表写入数据后,未写入指定的路径
c# 往window注册表写入数据后,未写入指定的路径 最近在用c#开发一个往注册表写入数据的一个项目,发现将输入写入 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell这个路径时,数据并没写入到这个…...
树莓派4B_OpenCv学习笔记13:OpenCv颜色追踪_程序手动调试HSV色彩空间_检测圆
今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1: OpenCv颜色追踪_程序手动调试HSV色彩空间_检测灰度图中的…...
Golang | Leetcode Golang题解之第198题打家劫舍
题目: 题解: func rob(nums []int) int {if len(nums) 0 {return 0}if len(nums) 1 {return nums[0]}first : nums[0]second : max(nums[0], nums[1])for i : 2; i < len(nums); i {first, second second, max(first nums[i], second)}return se…...
基于ruoyi-app的手机短信登录(uniapp)
本篇用于记录h5的框架搭建 组件地址:短信验证码登陆,手机号,验证码倒计时 - DCloud 插件市场 调整后的表单组件代码: <template><view class"login-view"><!-- <input type"tel" confirm-type"确认"…...
机器学习环境搭建
前言 个人笔记,记录框架和小问题,没有太详细记载。。 1、Anaconda安装 下载地址: Free Download | Anaconda (慢) 国内镜像:https://link.csdn.net/?targethttp%3A%2F%2Fitcxy.xyz%2F241.html 下载…...
2095.删除链表的中间节点
给你一个链表的头节点 head 。删除链表的中间节点 ,并返回修改后的链表的头节点 head。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊x⌋ 表示小于或等于 x 的最大整数。 对于 n 1、2、3、4 和…...
Qt QML 坑
Qt QML 坑 QML Listview 1、不定高item 导致item重叠 ListView {id: _cityListViewproperty var _cityArray: [{ type:"A",cityArray:[]},{ type:"B",cityArray:[]},{ type:"C",cityArray:[]},{ type:"D",cityArray:[]}]model: List…...
Chrome浏览器web调试(js调试、css调试、篡改前置)
目录 1. 打开开发者工具(Dev Tool) 2. 打开命令菜单 截图 3. 面板介绍 4. CSS调试 右键检查快速到达元素处 查找DOM数 利用面板Console查找DOM节点 内置函数查找上一个选择点击的元素 5. 调试JS代码(Javascript调试) 日志调试 选择查看日志等级 眼睛观测变量 …...
【Java】Logbook优化接口调用日志输出,优雅!
logbook 简介 很多人可能没有接触过 logbook,但它的确是一个很好用的日志框架。引用官网的介绍 Logbook 是一个可扩展的 Java 库,可以为不同的客户端和服务器端技术启用完整的请求和响应日志记录。它通过以下方式满足了特殊需求: 允许 Web 应…...
LabVIEW电压电流实时监测系统
开发了一种基于LabVIEW和研华(Advantech)数据采集卡的电压电流实时监测系统,通过高效的数据采集和处理,为工业和科研用户提供高精度、实时的电压电流监测解决方案。系统采用研华USB-4711A数据采集卡,结合LabVIEW编程环…...
骁龙相机拍照流程分析
和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 1.deliverInputEvent 拍照点击事件处理 2.submitRequestList Camera 提交拍照请求 3.createCaptureRequest 拍照请求帧数 骁龙相机通过binder 数据传输…...
sql-语句
文章目录 SQL语句的学习sql是什么sql的内置命令sql的种类sql mode库,表属性介绍:字符集,存储引擎列的数据类型:数字,字符串,时间列的约束DDL: 数据定义语言库表 Online DDL(ALGORITHM) *DML :数据操纵语言资…...
解决Vue3项目中跨域问题的步骤
决Vue3项目中跨域问题的步骤可以按照以下方式清晰地分点表示和归纳: 1. 使用代理服务器(Proxy) 步骤: 在Vue项目的根目录下找到或创建vue.config.js文件。在vue.config.js中配置devServer的proxy选项。设定需要代理的接口前缀&a…...
macos scroll direction
If there is no Trackpad option, we can change it in the Mouse option. How to Change the Scroll Direction on a Mac: 2 Ways...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...
