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

news/2024/5/10 18:36:26

谭浩强第五版作为初学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个已排好序的字符串。

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

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

相关文章

如何使用Android平板公网访问本地Linux code-server

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

Leetcode 3.25

LeetCode Hot 100 栈1.有效的括号2.最小栈3.字符串解码 栈 1.有效的括号 有效的括号 这道题肯定是利用了栈先入后出的特性。有以下几种情况 如果当前元素是左括号则push进栈不弹出; 如果当前元素是右括号则弹出栈中前一个元素,并判断是否与当前元素匹配…

Remote Desktop Manager for Mac:远程桌面管理软件

Remote Desktop Manager for Mac,是远程桌面管理的理想之选。它集成了多种远程连接技术,无论是SSH、RDP还是VNC,都能轻松应对,让您随时随地安全访问远程服务器和工作站。 软件下载:Remote Desktop Manager for Mac下载…

小错误,大麻烦:前端开发中的拼写陷阱

一. 问题描述 小错误,大问题!在编码中小心拼写错误可能会带来意想不到的后果。比如,将 "message" 错误地写成了 "massage",结果前端页面显示出了异常。😱 如下: 导致前端显示为&…

迷你搜索引擎(算法设计)

解题思路&#xff1a; 1.读取输入&#xff1a;首先读取文件总数N&#xff0c;然后读取每个文件的标题和内容&#xff0c;存储在一个Map中&#xff0c;其中键为文件标题&#xff0c; 值为文件内容的每行集合。 文件存储结构&#xff1a;Map<String, List<String>> …

ubuntu编译OpenCV and seetaFace2

opencv opencv-4.5.2 opencv_contrib-4.5.2 SeetaFace2 SeetaFace2-master https://github.com/seetafaceengine 指定安装目录&#xff0c;和OpenCV放一个目录下了 安装前 安装 安装后 Qt安装 Windows下 Linux下 报错1 原因&#xff1a; 报错…