C语言经典例题分析
文章平均质量分 64
C语言经典例题、面试例题分享与解题思路交流
倔强的石头_
百尺竿头 更进一步
展开
-
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
利用数组的有序性,通过双指针在数组中同时从两端向中间遍历,逐步逼近目标和,从而找到最接近给定和的两个数原创 2024-05-25 23:00:07 · 573 阅读 · 3 评论 -
【C语言刷题系列】消失的数字
如果用暴力解法:先将数组排序,再对数组每个元素与相邻元素进行比对的方法,受制于排序的时间复杂度至少为O(nlogn),所以这种方法是行不通的。对时间复杂度优化先将0到n相加求和,再将数组元素求和,两个结果作差就是缺失的数字,时间复杂度为O(n)。相加求和的方法,对于数组元素较大的情况,无法正确处理这里使用异或的方法来解决原创 2024-05-22 00:11:10 · 481 阅读 · 15 评论 -
【C语言刷题系列】轮转数组
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。思路一:思路一:两层循环移动元素思路二:数组三段逆置原创 2024-05-21 00:09:46 · 457 阅读 · 10 评论 -
【C语言刷题系列】合并两个有序数组
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。原创 2024-05-16 23:31:12 · 580 阅读 · 9 评论 -
【C语言刷题系列】移除元素
在C语言中,原地移除数组中所有等于特定值的元素并返回新长度的问题可以通过双指针法来解决。一个指针指向数组的写入位置(相当于写指针),另一个指针遍历数组(相当于读指针)。当遇到不等于给定值的元素时(需要保留的元素),就将该元素复制到写指针所指向的位置,并同时递增两个指针。当遇到需要移除的元素时,读指针递增,跳过该位置。原创 2024-05-06 20:58:25 · 398 阅读 · 2 评论 -
【C语言刷题系列】删除公共元素
第一种方法:创建一个临时数组,将字符串1中的每一个字符,与字符串2中的每一个字符分别进行比较,如果某个字符不是公共元素,则将其拷贝到临时数组中第二种方法:因为题目没有要求处理后的数据,只要求打印在屏幕。所以每找到一个不需要删除的元素时,直接打印该字符也可以解决问题原创 2024-04-30 23:57:20 · 765 阅读 · 1 评论 -
【C语言刷题系列】对数字添加逗号
对于一个较大的整数,每三位数字之间添加一个逗号,以便于阅读。一种有效的解决办法就是将数字转换为字符,从右向左每次%10得到一位数字转换为字符存储到数组中,再除以10去掉一位数字。其次,要注意每次满三位添加一个逗号至数组,并且只有满3位时才添加逗号。最后,将得到的这个字符数组逆序输出。原创 2024-04-29 21:05:49 · 511 阅读 · 0 评论 -
【C语言刷题系列】交换整数的奇数位和偶数位
在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作。当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左(或从最低位到最高位)数的位置。在这种计数方式下,第一位是奇数位,第二位是偶数位,依此类推。首先,分别取出奇数位和偶数位。 然后,将奇数位和偶数位的位置变换。将奇数位和偶数位合并在一起,完成转换。原创 2024-04-23 23:28:08 · 910 阅读 · 0 评论 -
【C语言刷题系列】喝汽水问题
喝汽水问题是一个经典的编程问题。在这个问题中,你初始有n元钱,每瓶汽水1元。并且喝完汽水之后,每2个空瓶子可以换一瓶汽水。求可以喝到多少瓶汽水。第一种方法是先买后换,即先把所有钱买汽水,再用空瓶换汽水。第二种方法是边买边换,每次买一瓶,够用空瓶换就换,不够换就买原创 2024-01-30 23:12:01 · 1617 阅读 · 4 评论 -
【C语言刷题系列】交换两个变量的三种方式
两个变量值的交换是编程中最常见的问题之一,本文将介绍三种变量的交换方式。再编程过程中应根据实际需要灵活运用原创 2024-01-27 22:33:29 · 573 阅读 · 1 评论 -
【C语言刷题系列】计算整数的二进制位中1的个数 (三种方式)
本文介绍求整数二进制位的1的个数的三种方式,三种方式在运算效率上差异不大,根据自己使用习惯和实际情况灵活运用即可。取模 配合整除 的方式的原理是利用十进制到二进制的转换过程;按位与 配合 右移 的方式的原理是将输入的数字与1进行按位与操作,这样就可以判断最右边一位二进制位是否是1,再让输入的数字右移一位,对下一位二进制位进行判断按位与 的方式原理是将输入的数字 n 与n-1进行按位与操作,每次会去掉一位二进制位的1原创 2024-01-28 22:33:50 · 715 阅读 · 2 评论 -
【C语言刷题系列】水仙花数的打印及进阶
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。原创 2024-01-25 23:44:43 · 713 阅读 · 0 评论 -
【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)
问题的要求是输入一个日期,计算这是当年的第几天——要解决这个问题,逻辑就是将输入日期当月之前整月的天数加起来,再加上当月的天数,得到的就是我们想要的结果。此问题解决方法不唯一,这里介绍的是一种使用数组和循环实现的简单办法原创 2024-01-11 22:04:52 · 580 阅读 · 0 评论 -
关于进制在输出时的转换【C语言】
我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。所以理解和掌握进制的转换和使用尤为重要原创 2024-01-09 23:44:48 · 1361 阅读 · 1 评论 -
【C语言刷题每日一题#牛客网BC6】输入三个整数,输出第二个整数
这是在实际中遇到的很简单的但却关系到习惯养成的问题,所以想拿出来单独讲一下。明明输入的三个值,只想要中间的值,其他的两个值都会丢掉,就没必要单独申请两个变量来存放需要丢弃的值了原创 2024-01-07 23:20:49 · 704 阅读 · 0 评论 -
【C语言刷题每日一题#牛客网BC107】矩阵转置
关于输出的处理逻辑,根据题目的参考例子,其实是将n行m列变成m行n列,并且在输出的时候,每个元素的行号和列号交换位置原创 2024-01-05 22:22:19 · 658 阅读 · 0 评论 -
【归并排序】两个有序序列的合并
比较各个子序列的第一个记录的键值, 最小的一个就是排序后序列的第一个记录。取出 这个记录,继续比较各子序列现有的第一个记录 的键值,便可找出排序后的第二个记录。如此继 续下去,最终可以得到排序结果。原创 2023-12-27 20:16:50 · 1378 阅读 · 0 评论 -
【C语言刷题每日一题】一维数组的交换
将两个整型一维数组的元素进行交换,如果两个数组长度相同就全部交换;如果两个数组长度不同,则交换长度相同部分的元素原创 2023-12-26 21:58:12 · 495 阅读 · 0 评论 -
【C语言刷题每日一题#牛客网BC68】——X形图案
输出的是一个由“*”组成的对称的X形图案,可以看作该图案是由两条对角线组成,即一条正斜线和一条反斜线,而且对角线的长度等于输入数字的长度这样我们可以用两层for循环来实现,每行每列除了对角线打印“ * ”,其余位置都打印空格原创 2023-12-24 22:50:42 · 704 阅读 · 0 评论 -
【C语言刷题每日一题#牛客网BC69】——空心正方形图案
判断该位置是否是第0行或第n-1行,以及是否是第0列或第n-1列,如果是的话打印“* ”,否则打印两个空格原创 2023-12-22 07:27:31 · 485 阅读 · 0 评论 -
【C语言刷题每日一题】——打印100到200之间的素数
若要判断n是不是素数,我们可以直接写一个循环(i从2到n-1,进行n%i运算,即n能不能被i整除,如被整除即不是素数。若所有的i都不能整除,n即为素数。该方法又称暴力穷举法。简单有效,但时间复杂度较高,不适宜数据量很大时的运算原创 2023-12-20 07:54:36 · 409 阅读 · 0 评论 -
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
最大公约数——两个整数中公共约数(因数)的最大者求最大公约数的方法有很多,如质数因数分解法、短除法、辗转相除法、更相减损法。这里介绍使用代码实现求最大公约数的最简单的一种方法——辗转相除法比如有两个数,18和24第一步:用第一个数18作为被除数,第二个数24作为除数,两个数做除法,并求余数18%24=18,余数为18第二步:再将上一次计算中的除数作为被除数,余数作为除数,再进行除法运算求余数24%18=6第三步:重复上一次操作。原创 2023-12-18 23:14:23 · 756 阅读 · 0 评论 -
【C语言刷题每日一题】——求1到100中包含数字9的整数的个数
【代码】C语言刷题每日一题——求1到100中包含数字9的整数的个数。原创 2023-12-17 08:02:53 · 642 阅读 · 1 评论 -
【C语言刷题每日一题】——打印1000年到2000年之间的闰年
闰年的问题是编程中经常遇到的一个小细节问题,是不是闰年关系到整年的天数和月份的天数,这是一个经常容易被忽略的问题关于闰年的判断有一个小口诀——四年一闰,百年不闰,四百年再闰原创 2023-12-16 08:03:41 · 457 阅读 · 1 评论 -
【C语言刷题每日一题】——计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
两种解题方式在这个问题的实现上不会有太大差距,但在计算的数据足够庞大时,第二种方式在效率上会更出色一些,因为它比第一种方式每次都少了一条if判断语句。原创 2023-12-15 19:41:28 · 555 阅读 · 0 评论 -
扫雷游戏C语言代码实现——万字长文超详细,手把手教你实现,新手也能学会
使⽤控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘是9*9的格⼦默认随机布置10个雷可以排查雷——通过输入坐标如果位置不是雷,该坐标就会显示周围的雷的数量如果位置是雷,就炸死游戏结束把除10个雷之外的所有非雷坐标都找出来,排雷成功,游戏结束原创 2023-12-13 23:59:23 · 3024 阅读 · 10 评论 -
输⼊⼀个正整数,计算这个整数是几位数
例如: 输⼊:1234 输出:4输⼊:12 输出:2。原创 2023-12-10 23:04:12 · 599 阅读 · 1 评论 -
乘法口诀表打印进阶篇
n*n的乘法口诀表打印的函数实现原创 2023-12-09 22:05:07 · 507 阅读 · 1 评论 -
C语言打印乘法口诀表——超详细扫盲篇
继续分析会发现,在第一行打印一个等式,第二行打印两个等式......也就是说每行打印的次数刚好等于行数,即每次内循环让 j 的值小于等于外循环(行数) i 的值。这次的结果就基本和我们想要的一样了,但如果你足够细心的话,就会发现等式在打印时并不总是完全对齐,因为等式的积有时是一位数,有时是两位数。将 % 改为 %2d,表示最小输出两位, 再在%的后面加上一个 -号(负号),表示左对齐(默认右对齐),即可达到想要的结果。但是打印完之后会发现,结果比我们想要的多出了一半的等式,乘号右边的数(乘数)都等于行数。原创 2023-12-06 23:48:52 · 646 阅读 · 3 评论 -
猜数字游戏C语言代码实现
游戏可以连续进行,每次游戏有五次猜测机会。描述——随机产生一个100到200的整数,猜测产生的数字。二、game()函数实现产生随机数并猜数字的过程。三、menu()函数封装游戏菜单。一、主函数 实现循环游戏的主体。代码和运行截图在下方。原创 2023-12-01 21:40:35 · 638 阅读 · 1 评论 -
从键盘输入10个整数,输出最大值
5.将max分别与后面的9个数进行比较,若大于max,则赋值给max。4.将max初始化为数组的第一个值(相当于假设第一个值为最大值)1.创建数组用于存储10个整数并初始化。3.从键盘读入10个整数分别赋值给数组。2.创建整型变量max用于暂存最大值。原创 2023-11-28 21:32:03 · 823 阅读 · 0 评论 -
C语言:从键盘读入三个整数,按从大到小输出
原创 2023-11-26 22:00:21 · 420 阅读 · 1 评论