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...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
