![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
我的C语言--常见的题型
整理,归纳,总结,在学习C语言中见到的题型
小忆努力学C语言
励志要成为一名小小程序员,目前正在努力当中! 小比特一名
展开
-
最小偶倍数
每个偶数和2的最小公倍数是自身,每个奇数和2的最小公倍数是自身的二倍。解释:6 和 2 的最小公倍数是 6。注意数字会是它自身的倍数。给你一个正整数 n ,返回 2 和 n 的最小公倍数(正整数)。和1进行与运算,结果为0是偶数,结果为1是奇数。对2取余,结果为0是偶数,结果为1是奇数;解释:5 和 2 的最小公倍数是 10。原创 2024-03-28 21:50:27 · 231 阅读 · 0 评论 -
计算求和
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222。原创 2024-03-26 21:53:14 · 439 阅读 · 0 评论 -
函数判断素数
返回值:必须要有返回值,0表示不是素数,1表示是素数。检测该数据是否为素数,方法参考前文。原创 2024-03-21 22:11:17 · 238 阅读 · 0 评论 -
合并有序数组
输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。7. 至此, arr3 数组中的元素为 arr1 数组和 arr2 数组合并并排序后的结果,按序输出前 k个元素即可。定义⼀个长度为 n+m 的新数组 arr3 ,以及两个指针 i 和 j ,分别指向 arr1 和arr2 的开头;定义⼀个长度为 n+m 的新数组 arr3 ,将两个有序数组合并到 arr3 数组中,使得 arr3 数组有序。定义⼀个计数器 k ,初始化为 0;原创 2024-03-08 22:36:19 · 743 阅读 · 0 评论 -
字符串拷贝
使用while 循环通过指针的方式逐⼀拷贝源字符串中的每⼀个字符,直到遇到字符串结束标志\0 ,然后将该标志也拷贝到目标字符串中。注意,如果源字符串为空,该函数直接返回,不进行任何操作。写⼀个函数my_strcpy,实现拷贝字符串的功能,假设给定⼀个字符数组a,再给定⼀个字符数组b,将字符串a中的内容拷贝到字符串b中,拷贝内容包含字符串末尾的 \0 字符。原创 2024-03-07 18:52:04 · 465 阅读 · 0 评论 -
删除指定的数
先输入10个整数存放在数组中,再输入⼀个整数n,删除数组中所有等于n的数字,数组中剩余的数组保证数组的最前面,打印剩余的数字。如果当前数字不等于给定整数,就将该数字放在数组中的位置 j ,然后将 j自增 1。i 从前往后扫描整个数组, j 记录当前剩余的数字应该放在数组的哪个位置。最后, j 的值为删除后的数组长度,将数组中前 j 个数输出即可。这样, j 指向的位置就是数组中下⼀个剩余数字应该放置的位置。使用两个指针 i 和 j。原创 2024-03-06 21:40:12 · 520 阅读 · 0 评论 -
学习计算天数
按照大小月将十二个月份的天数记录在数组中直接获取,特判年份是闰年并且月份是二月的情况即可。输入y和m两个整数,y表示年份,m表示月份,计算y年m月有多少天,并输出天数。原创 2024-03-05 20:20:09 · 526 阅读 · 0 评论 -
判断回文字符串
输入⼀个字符串,判断这个字符串是否是回文字符串(字符串的长度小于等于30,字符串不包含空格),如果是回文字符串输出Yes,如果不是回文字符串输出No。原创 2024-03-04 22:42:08 · 207 阅读 · 0 评论 -
求数字的每一位之和
在每次循环中,我们可以通过取模运算( % )和整除运算( / )来获取m的最后⼀位和去掉最后⼀位的新值。具体来说,我们可以使用 m % 10 来获取m的最后⼀位数字,而通过 m / 10可以获取去掉最后⼀位后的新值。然后,我们可以使用循环来不断地取出整数m的最后⼀位,并将其加入到 sum 中,直到m变为0。当m变为0时,整个求和过程结束,此时 sum 中存储的就是整数m的每⼀位之和。我们可以通过不断获取该整数的个位数,然后将该位数从整数中删除,重复这个过程直到整数为0,原创 2024-03-03 21:25:12 · 331 阅读 · 0 评论 -
逆序字符串
因此,我们可以定义两个指针分别指向字符串首首位和末位,对其进行交换操作,然后将两个指针相向移动⼀位,继续交换剩余字符。直至两个指针的相对位置发生变化时结束操作,最终得到的字符串即为逆序后的字符串。最中间的两位互换,或者字符串长度为奇数时,中间字符不变。输入⼀个字符串,写⼀个函数将⼀个字符串的内容逆序过来。第二位与倒数第二位互换;原创 2024-03-01 22:30:54 · 306 阅读 · 0 评论 -
求字符串长度【进阶版】
在递归函数中,函数会调用自己,并在每次调用中传入不同的参数,直到达到某个基准条件,然后递归结束并返回结果。输⼊一个字符串(字符串长度小于等于30,中间不包含空格),使用Strlen函数可以求字符串的长。写⼀个函数Strlen,可以求字符串长度,除了函数的形参,函数中不能使用多余的变量。递归结束条件:递归必须有⼀个结束条件,否则会导致无限递归,最终导致堆栈溢出等问题。递归传参:递归函数每次调用自身时,需要传入不同的参数,以处理不同的情况。递归调用:字符串的长度=1+后面子字符串的长度;原创 2024-02-29 22:53:45 · 331 阅读 · 0 评论 -
求字符串长度
字符串是由一系列字符组成的,这些字符依次存储在内存中,以字符数组的形式存在,数组的最后⼀个元素是空字符’\0’,用来表示字符串的结束。比如说字符串"hello",在内存中存储的形式就是’h’、‘e’、‘l’、‘l’、‘o’、‘\0’。指针是一种可以指向内存地址的数据类型,我们可以通过移动指针的位置来访问内存中的不同数据。在本题中,我们可以定义⼀个指向字符串开头的指针,并不断地移动它来计算字符串长度。输入一个字符串(字符串长度小于等于30,中间不包含空格),使用Strlen函数可以求字符串的长度,并返回。原创 2024-02-28 21:25:14 · 482 阅读 · 0 评论 -
求两个整数的平均值
两数本身和两数的平均数不会溢出,考虑平均数与其中⼀个数的差:(x+y)/2-x=(y-x)/2;输入2个整数m和n,写一个函数average,求2个整数的平均值,考虑整数过大溢出的问题。本题最直观的解法为:两数相加后除以二向下取整。不过因为整数过大时,两数相加会溢出的问题,要求得 (x+y)/2,我们可以先求得 x 与 (y-x)/2,然后求得他们的和即可;x 与 (y-x)/2 在计算过程中都不会溢出,因此这个方法成立。原创 2024-02-27 23:23:49 · 483 阅读 · 0 评论 -
交换两个整数
在调用函数时,将需要交换值的两个整数变量的地址作为参数传递给函数,可以使用& 运算符来获取变量的地址。定义⼀个函数 Swap ,参数是两个整型指针,表示需要交换值的两个整数变量的地址。明确函数的作用,即交换两个整数的值。写⼀个函数Swap,可以交换两个整数的内容。注意必须实现成函数完成。输入2个整数,调用自定义函数Swap,完成2个整数的交换。在函数中,使用⼀个临时变量来存储第一个整数变量的值。将第二个整数变量的值赋给第一个整数变量。将临时变量的值赋给第二个整数变量。原创 2024-02-26 21:00:21 · 170 阅读 · 0 评论 -
学会字符转换
输入⼀一个字符串,将字符串中大写字母全部转为小写字母,小写字母转成大写字母,其他字符保持不变。注:字符串的长度小于等于30,其中字符串中包含空格。具体来说,我们可以使用一个循环来遍历字符串中的每个字符。对于每个字符,我们检查它是大写字母、小写字母还是其他字符。如果它是大写字母,我们将其转换为小写字母;如果它是小写字母,我们将其转换为大写字母;如果它是其他字符,则不需要进行任何转换。tolower():将字符转换为小写字母。toupper():将字符转换为大写字母。原创 2024-02-25 21:43:46 · 307 阅读 · 0 评论 -
喝多少瓶汽水
• 特别地,我们可以理解为:两个空瓶子可以换到一瓶汽水和一个空瓶子,相当于一个空瓶子可以喝到一瓶汽水,而最后⼀定会剩余⼀个空瓶子无法继续购买汽水。水已知1瓶汽水1元,2个空瓶可以换⼀瓶汽水,输入整数n(n>=0),表示n元钱,计算可以多少汽水,请编程实现。2. 每次将剩余的空瓶子 empty 除以 2,表示可以换取的汽水数量,将这些汽水数量加到 total 中。3. 将剩余的空瓶子 empty 除以 2 向上取整,表示剩余的空瓶子买了汽水后喝完剩下的空瓶子数量。原创 2024-02-24 21:59:00 · 143 阅读 · 0 评论 -
学会如何打印菱形
i-1 个符号,而且这些符号需要居中对齐。为了实现居中对齐,我们可以在每⼀行的前面打印 n-i 个空格。具体来说,我们可以使用⼀个循环来遍历每⼀行,并使用另⼀个循环来打印空格和符号。(n-i)-1个符号,同样需要居中对齐,并且需要在每⼀行的前面打印n - (n - i)个空格。与上半部分类似,下半部分共有 n-1 行,第 i 行需要打印 2。输入⼀个整数n,打印对应2*n-1行的菱形图案,比如,输入7,输出如下图案,图案总共13行。需要注意的是,上半部分共有 n 行,第 i 行需要打印 2。原创 2024-02-23 21:10:38 · 371 阅读 · 0 评论 -
学会自幂数
自幂数是又称自客单位数,是指一个整数各个位的立方和等于该整数本身的数。例如,153是自幂数,因为 1^3+5 ^3+3 ^3=153。我们可以使用⼀个循环遍历 1~100000 并检查每个数是否为自幂数。写⼀个代码打印1~100000之间的所有的自幂数,中间用空格分隔。判断 sum 与 i 是否相等,相等则 i 是自幂数。• 可以使用 pow 函数求得某个数的次方数。计算 i 的每⼀位的 n 次方之和 sum;pow` 函数的实现和参数类型可能有所不同。计算 i 的位数 n;原创 2024-02-20 20:50:51 · 514 阅读 · 0 评论 -
找出盗窃者
真正的盗窃者只有⼀个,因此我们可以假设其中一人为盗窃者,通过对每个嫌疑人的供词进行分析,• 如果D说真话,则C在胡说,即C说假话,盗窃者不是D;如果D说假话,则盗窃者不是C。某地发生了⼀件盗窃案,警察通过排查确定盗窃者必为4个嫌疑⼈的⼀个。• 如果A说真话,则盗窃者不是A;如果A说假话,则盗窃者是A。• 如果B说真话,则盗窃者是C;如果B说假话,则盗窃者不是C。• 如果C说真话,则盗窃者是D;如果C说假话,则盗窃者不是D。已知3个人说了真话,1个人说的是假话。原创 2024-02-19 21:37:23 · 217 阅读 · 0 评论 -
计算最大值和最小值的差值
然后我们通过循环,将剩余的 9 个数与当前的最大值和最小值进行比较,更新 max 和 min 的值,直到所有的数都输入完毕。在循环的过程中,用两个变量 max 和 min 分别记录当前已经输入的最大值和最小值,分别初始化为第⼀个输入的数。• 特别地,我们可以使用⼀个变量记录输入的数,在每次需要更新最值前,输⼊一个数与之进行判断,从而避免了定义数组。输入10个整数,写代码找出其中最大值和最小值,计算最大值和最小值的差,并打印出差值结果。最后,我们计算出最大值和最小值的差值,并打印输出。原创 2024-02-18 22:42:19 · 703 阅读 · 0 评论 -
使用函数实现数组操作
实现reverse() 函数完成数组元素的逆置。实现print() 打印数组的每个元素。实现函数init() 初始化数组为全0。要求:自己设计以上函数的参数,返回值。创建一个整形数组,完成对数组的操作。原创 2024-02-17 22:10:15 · 359 阅读 · 0 评论 -
打印最小公倍数
最小公倍数是指两个或多个整数共有倍数中最小的⼀个。为了求出两个数的最小公倍数,可以采用枚举试除法。从小到大依次判断能否同时整除这两个数,若某个数满足同时被两个数整除,则其为公倍数;从小到大遍历找到公倍数时,此数即为最小公倍数,此时应当结束循环;具体来说,公倍数⼀定大于两个数,从两个数中的较大值开始枚举;• 特别地,最小公倍数可以由两数乘积除以两数的最大公约数求得。输入2个整数m和n,计算m和n的最小公倍数,并打印出结果。原创 2024-02-16 20:56:47 · 290 阅读 · 0 评论 -
用函数实现乘法口诀表
设计函数原型,不需要返回值,参数N表示乘法口诀表总共有多少行。实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定。内层循环控制每行有多少个表达式以及表达式中的内容。设定两个循环,外层循环控制总共有多少行。9口诀表,输出12,输出12。原创 2024-02-15 23:10:40 · 341 阅读 · 0 评论 -
输出用“*”组成的X形图案。
以输入n = 7为例,由上图可知,设横轴为x,纵轴为y,当x = y,或者x + y = n - 1时,屏幕上输出 *,所以我们可以根据这个规律来进行运算。多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。这种方法的好处是不需要考虑空格的输出的规律,只需要根据交叉线条x的规律来打印即可。针对每行输入,输出用“*”组成的X形图案。原创 2024-02-14 16:54:33 · 470 阅读 · 0 评论 -
利用函数我们计算某年某月有多少天?
设计函数get_days_of_month,来完成。能被4整除,并且不能被100整除,是闰年。是闰年返回1,不是闰年返回0。能被400整除是闰年。原创 2024-02-13 22:50:31 · 841 阅读 · 0 评论 -
实现一个函数,求2个整数的较大值
【代码】实现一个函数,求2个整数的较大值。原创 2024-02-13 22:39:51 · 166 阅读 · 0 评论 -
【一维数组】交换数组
将数组A中的内容和数组B中的内容进行交换。原创 2024-02-12 21:59:04 · 102 阅读 · 0 评论 -
【一维数组】输入10个整数,求平均值
编写一个程序,从用户输入中读取10个整数并存储在一个数组中。然后,计算并输出这些整数的平均值。原创 2024-02-12 21:57:28 · 893 阅读 · 0 评论 -
学会逆序输出
输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。一行,输入10个整数(范围-231~231-1),用空格分隔。一行,逆序输出输入的10个整数,用空格分隔。原创 2024-02-12 21:55:52 · 194 阅读 · 0 评论 -
学习转置矩阵
从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。(1≤n≤10,1≤m≤10)输出m行n列,为矩阵转置后的结果。每个数后面有一个空格。将矩阵的行列互换得到的新矩阵称为转置矩阵。原创 2024-02-12 21:50:30 · 225 阅读 · 0 评论 -
变长数组(Variable Length Array,VLA)
是指用 整型变量或表达式声明或定义的数组 ,而不是说数组的长度会随时变化,变长数组在其生存期内的长度同样是固定的。⼀个比较迷惑的点,变长数组的意思是数组的大小是可以使用变量来指定的,在程序运行的时候,根据变量的大小来指定数组的元素个数,而不是说数组的大小是可变的。A.选项错误:编译时无法确定,编译时候编译器不知道n是什么值,n的值要等到程序运行起来后,用户输入之后n的值确定了,才能确定数组的大小。B.变长数组的大小可能在运行时确定,比如使用变量来指定数组大小,一旦确定大小后,它的大小是固定的,无法改变。原创 2024-02-12 21:36:29 · 346 阅读 · 1 评论 -
sizeof 和 strlen辨析示例
sizeof这里求的是数组大小,数组大小等于有效元素个数*每个元素的大小。strlen求的是字符串长度,从首元素开始计算,遇见‘\0’停止,由于acY数组没有’\0‘,所以strlen(acY)的结果是个随机值。acX:数组中总共有8个元素,分别是:‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘\0’acY:数组中总共有7个元素,分别是:‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’B.数组acX和数组acY的长度相同。原创 2024-02-12 21:16:33 · 148 阅读 · 1 评论 -
求最大公约数
辗转相除法是一种简单的求最大公约数的方法,其基本思想是:用较大的数除以较小的数得到商和余数,再用较小的数除以商得到新的商和余数,如此反复,直到余数为零为止。第一次:a = 18 b = 24 c = a%b = 18%24 = 18。第二次:a = 24 b = 18 c = a%b = 24%18 = 6。第三次:a = 18 b = 6 c=a%b = 18%6 = 0。循环中:a = 18 b = 6。循环中:a = 24 b=18。457÷71=6(余31)原创 2024-02-12 10:24:56 · 442 阅读 · 1 评论 -
学会打印闰年
要求1000年到2000年之间的闰年,只需要知道求解闰年的方法即可。闰年的条件:如果N能够被4整除,并且不能被100整除,则是闰年。即:4年一润并且百年不润,每400年再闰一次。打印1000年到2000年之间的闰年。或者:N能被400整除,也是闰年。原创 2024-02-12 10:13:59 · 226 阅读 · 1 评论 -
学会打印素数
继续对方法三优化,只要i不被[2, sqrt(i)]之间的任何数据整除,则i是素数,但是实际在操作时i不用从101逐渐递增到200,因为出了2和3之外,不会有两个连续相邻的数据同时为素数。上述方法的缺陷:超过i一半的数据,肯定不是i的倍数,上述进行了许多没有意义的运算,因此可以采用如下方式进行优化。方法二:每拿到一个数据,只需要检测其:[2, i/2]区间内是否有元素可以被2i整除即可,可以说明i不是素数。如果i能够被[2, sqrt(i)]之间的任意数据整除,则i不是素数。原创 2024-02-11 22:42:57 · 206 阅读 · 1 评论 -
分数的求和
计算1/1-1/2+1/3-1/4+1/5 ……+ 1/99 - 1/100 的值,打印出结果。原创 2024-02-11 22:08:07 · 133 阅读 · 1 评论 -
求一组数中的最大值
求10 个整数中最大值。原创 2024-02-11 21:58:09 · 147 阅读 · 1 评论 -
乘法口诀表
内部循环控制每行打印多少个表达式以及表达式内容,在屏幕上输出9*9乘法口诀表。比较简单,具体参考代码;外层循环控制打印多少行。原创 2024-02-11 21:45:15 · 153 阅读 · 1 评论 -
if语句应用示例
【代码】if语句应用示例。原创 2024-02-11 21:32:59 · 209 阅读 · 1 评论 -
关于case与break关系示例辨析
switch语句时多分支的选择语句,switch中表达式结果命中那个case,就执行该case子项,如果case子项后没有跟break语句,则继续往下执行。即:先在内部switch的default位置打印hello,紧接着在外部case2中打印third。下面代码的执行结果是什么( )原创 2024-02-11 21:16:35 · 228 阅读 · 1 评论