谭浩强第五版C语言课后习题(编程题)+答案

谭浩强第五版作为初学C语言必读的一本教材,课后习题具有非常大的参考价值,也是很多高校期末考试或者考研的重要参考。在这里我整理了一部分个人认为比较重要的编程题,供大家作参考

1.输入两个数,求他们的最大公约数和最小公倍数(最小公倍数等于两个数的乘积除上二者的最大公约数)

法一:递减法

法二:辗转相除法

辗转相除法的原理是用a除b,如果有余数,就把b赋给a,再把余数赋给b,当a除b余数为零的时候,此时的b就是二者的最大公约数,对于第一次除的时候谁做被除数是无所谓的,因为如果第一次a小于b,那么a除b的余数就是a,然后执行循环内部的操作把b赋给a,把余数赋给b,就变成了被除数大

2.计算a+aa+aaa+aaaa.....最后一项是n个a组成的数

本题关键在于如何产生每一个加数tmp。tmp=tmp*10+a即可。

3.计算1!+2!+....+10!

3.输出所有水仙花数。水仙花数指的是一个三位数,其各位数字立方和等于该数本身。

运行结果

4.如果一个数等于他的所有因子之和(因子包括1,但不包括这个数本身),这个数就被称为完数。找出1到1000内的所有完数。

5.计算分数数列前20之和(第五章第十题)

6.一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第10次反弹多高。

7.猴子摘桃

8.乒乓球比赛

在找到合适的结果之后应该立马输出,没有必要再继续循环浪费时间了。

9.找1~100之内的素数

10.冒泡排序

11.求一个3×3矩阵的对角线之和

12.在一个有序数组中插入一个数

升序数组中插入一个数的思想:如果在中间插入,就把最后的元素往后挪一位,然后在原来最后一个数的位置上插入我们想要插入的数。什么叫往后挪一位呢?其实就是把最后的元素数值赋给他下一个位置

删除一个数的思想:把指定位置的元素删掉,然后后面所有元素整体往前面挪动一个位置。

13.将一个数组中的值按逆序重新存放。例如:原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。

注:不要把判断条件写成p1++

14.打印杨辉三角的前十行

运行结果

杨辉三角的特点是对角线上和第一列全是1,其余位置的元素为他正上方元素与他正上方元素左边那个元素之和。比如arr[4][3]=arr[3][3]+arr[3][2]

第六章第七题魔方阵那个题就是一个找规律的题目,和代码能力没有啥关系,就不写了

15. 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。

思路是先找出每一行的最大值,并把这个最大值所在的行记录下来,然后再去遍历这一列中的所有数找到最小值,看看这个最大值和最小值是不是同一个数,如果是,这个数所在的位置就是鞍点,同时把flag改成1,如果出了大循环之后flag还是0,说明没有鞍点

16.二分查找

17.输出一个五行的平行四边形

运行结果

18.有一行电文,以按下面规律译成密码:即第1个字母编程第26个字母,第i个字母编程第(26-i+1)个字母,非字母字符不变,要求编程序将密码译回原文,并输出密码和原文。

运行结果

str[i]-'a'表示str[i]是第几个字母吗?假如比如b-a是1,而b是第二个字母,z-a是25,而z是第26个字母,因此str[i]-'a'得到的数值表示str[i]是第str[i]-'a'+1个字母,26-(str[i]-'a')这个数值表示的是从z倒着往前数第几个字母,比如str[i]是b,然后26-((str[i]-'a'))这个数值是25,也就说b是从z倒着往前数第25个字母,而'a'+25表示'z',那么转化后的结果就成了b转化成了z,这与题目要求相比显然多加了1,因此转换的表达式应该是'a'+26-((str[i]-'a'))-1,也就是'a'+25-((str[i]-'a'))

19.模拟实现strcat

20.模拟实现strcmp

记住模拟实现strcmp的时候while循环的判断条件是*s1==*s2

21.模拟实现strcpy

22.输人一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。如输人1990,应输出“1 9 9 0”。

运行结果为

23.写一个函数,输人一行字符,将此字符串中最长的单词输出。单词之间用空格隔开

24.写一个函数,输人一个十六进制数,输出相应的十进制数。

25.用递归法将一个整数n转换成字符串。例如,输人483,应输出字符串”483”。n的位数不确定,可以是任意位数的整数。

26.输入年月日,输出这是今年第几天

27.输入三个整数,按照从小到大的顺序输出

28.输入3个字符串,要求按由小到大的顺序输出。

比较字符串大小应该实用strcmp而不是直接用大于小于号,实际上本题的易错点在于字符串的输入,一定不要用scanf,因为scanf输入字符串的时候遇到\0会停下来,导致输出于预期不符的结果。输入字符串应该使用库函数fgets,并把第三个参数写成stdin表示从键盘读入,fgets在碰到回车的时候才会停止读取,因此能够正常的读取带空格的字符串。fgets 函数在读取到换行符 ‘\n’ 时会将其包含在读取的字符串中。换行符 ‘\n’ 会作为普通字符读入字符串,并在字符串末尾添加 ‘\0’ 字符以表示字符串的结束。

因为只有三个字符串,因此排序的方式和前一题类似。

29.输入10个整数,将其中最小的数与第一个数对换, 把最大的数与最后一个数对换。

30. 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数

31.有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

32.有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。

33.将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。

34. 在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vector授权狗驱动安装方法

安装好主体软件后,建议先安装最新官方正版驱动:Vector Driver Setup。然后再复制补丁到C盘指定位置,替换原文件。如果你之前已安装老版本的驱动,则建议先卸载老版本的驱动,主体软件不需要卸载。卸载建议用原来安装时用…

关于柔性阵列(/三维阵列)波束形成的仿真实践以及稳健波束形成的思考(1)

说明 关于波束形成,我之前写过几篇相关的博文,如参考资料[1]、[2]、[3]。除去在博文[2]中有讨论过阵元相对位置关系对波束形成的影响:“如何基于遗传算法优化阵元相对位置关系以压低旁瓣峰值”以外,似乎我认知里的天线阵列&#x…

【Linux实验室】测试ext4文件系统的最大inode数量

【Linux实验室】测试ext4文件系统的最大inode数量 实验目的 1、熟悉inode的定义与作用 2、熟悉Linux文件系统类型 3、测试ext4文件系统的最大inode数量 实验环境 centos7.10 64-bit 实验原理 inode定义 安装操作系统或格式化磁盘分区的时候,操作系统会自动把…

教你如何快速批量删除文件名中相同的文字

在现代计算机系统中,文件夹是一种重要的组织和管理文件的方式。文件夹名称可以反映其内部文件的内容或属性,有助于用户快速识别和定位所需的文件。然而,有时我们会遇到需要统一删除文件夹名称的部分的情况。统一删除文件夹名称的部分可能是为…

PHiSeg:捕捉医学图像分割中的不确定性

PHiSeg:捕捉医学图像分割中的不确定性 摘要引言方法 PHiSeg Capturing Uncertainty in Medical Image Segmentation 摘要 解剖结构和病理的分割本质上是模糊的。例如,结构边界可能不清晰可见,或者不同的专家可能具有不同的注释风格。大多数当…

80个Python数据分析必备实战案例.pdf(附代码),完全开放下载

大家好,我是彭涛。 随着数据时代的来临,Python数据分析技能现在愈加重要,无论是从事数据科学、商业分析还是决策支持,掌握 Python 数据分析的技能都将成为你事半功倍的利器。 之前为大家陆续梳理了基础资料,爬虫资料…

Navicat 干货 | 通过检查约束确保 PostgreSQL 的数据完整性

数据完整性对于任何数据库系统来说都是很重要的一方面,它确保存储的数据保持准确、一致且有意义的。在 PostgreSQL 中,维护数据完整性的一个强大工具是使用检查约束。这些约束允许你定义数据必须遵守的规则,以防止无效数据的插入或修改。本文…

什么是根据人类反馈的强化学习Reinforcement Learning with Human Feedback(RLHF)?

基于人类反馈的强化学习(Reinforcement learning with human feedback)是近年来越来越受欢迎的一种前沿技术,用于提高大型语言模型的性能。这是种使用人类反馈训练这些模型的有效方法,而该方法的输入组件与搜索评估也有诸多相似之…

企业指标体系的落地与推广:让指标体系真正发挥作用

一、精心策划实施计划,确保项目有序进行 为确保指标体系的顺利落地与推广,我们精心策划了实施计划。首先,我们制定了详细的时间表,明确了项目启动、关键节点和结束时间,确保项目能够按期推进。同时,我们还将…

面试题(四)

目录 61.简述MyISAM和InnoDB的区别 62.Explain语句结果中各个字段分表表示什么 63.索引覆盖是什么 64.最左前缀原则是什么 65.Innodb是如何实现事务的 66.B树和B树的区别,为什么Mysql使⽤B树 67.Mysql锁有哪些,如何理解 68.Mysql慢查询该如何优化…

【JavaWeb】Day18.Vue组件库Element

什么是Element Element:是饿了么团队研发的,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。组件:组成网页的部件,例如 超链接、按钮、图片、表格、表单、分页条等等。官网:Element - The worlds…

每日汇评:复活节假期前,欧元保持在关键技术位之间

周四欧洲早盘,欧元兑美元小幅下跌至1.0800; 谨慎的市场情绪帮助美元在数据发布前守住了阵地; 美联储理事沃勒表示,他们并不急于降低政策利率; 周四欧洲早盘,欧元兑美元受到温和的看跌压力,并跌向…

Python算法100例-4.6 歌星大奖赛

完整源代码项目地址,关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.问题拓展7.知识点补充 1.问题描述 在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最…

【Vue3之computed属性(四)】

文章目录 前言一、computed属性有缓存二、使用方法三、修改全名 前言 理解computed属性,实现输入姓和名得出全名并双向绑定,区分单向绑定和双向绑定。测试computed属性和方法的区别 一、computed属性有缓存 先引入computed,写箭头函数定义并…

Windows安装Odoo结合内网穿透实现公网访问本地企业管理系统

文章目录 前言1. 下载安装Odoo:2. 实现公网访问Odoo本地系统:3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件,是一个一站式全功能ERP及电商平台。 开源性质:Odoo是一个开源的ERP软件,这意味着企…

springboot实战---5.最简单最高效的后台管理系统开发

🎈个人主页:靓仔很忙i 💻B 站主页:👉B站👈 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:SpringBoot 🤝希望本文对您有所裨益,如有不足之处&…

网络编程之流式套接字

流式套接字(SOCK_STREAM)是一种网络编程接口,它提供了一种面向连接的、可靠的、无差错和无重复的数据传输服务。这种服务保证了数据按照发送的顺序被接收,使得数据传输具有高度的稳定性和正确性。通常用于那些对数据的顺序和完整性…

Backend - gitea 首次建库(远端本地)

目录 一、建立远端储存库 1. 进入新增画面 2. 填写储存库名称(如book),点击“建立”即可 二、本地关联远端储存库 1. 本地初始化储存库代码 (1)新建文件夹 (2)获取远端储存库 2. 本地编写…

Linux:基础IO

回顾C文件接口 stdin & stdout & stderr C 默认会打开三个输入输出流&#xff0c;分别是 stdin, stdout, stderr 仔细观察发现&#xff0c;这三个流的类型都是 FILE*, fopen 返回值类型&#xff0c;文件指针 系统文件I/O 接口介绍 open man open #include <sy…

FCP270 P0917YZ 兼容性如何

FCP270 P0917YZ 是一种现场控制处理器&#xff0c;通常应用于工业自动化和过程控制系统中。 这款现场控制处理器的主要职责是监测和控制多种过程变量&#xff0c;确保系统的正常运行&#xff0c;并且满足生产的要求。以下是关于FCP270 P0917YZ的一些可能用途和特点&#xff1a…