程序题讲解
常见C语言题目
千度vea
读书人
展开
-
依次输出倒置之后的字符串,以空格分割。实例输入:i like beijing.输出:beijing . like i
【代码】依次输出倒置之后的字符串,以空格分割。实例输入:i like beijing.输出:beijing . like i。原创 2023-10-31 10:49:59 · 83 阅读 · 0 评论 -
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少瓶?
【代码】喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少瓶?原创 2023-10-30 20:53:09 · 49 阅读 · 0 评论 -
打印菱形。
【代码】打印菱形。原创 2023-10-30 20:07:02 · 40 阅读 · 0 评论 -
求0~100000以内的“水仙花数”,包括100000
【代码】求0~100000以内的“水仙花数”,包括100000。原创 2023-10-30 15:36:07 · 49 阅读 · 0 评论 -
求Sn = 2+22+222+2222+...+22222... 求一个数字的前n项和
【代码】求Sn = 2+22+222+2222+...+22222... 求一个数字的前n项和。原创 2023-10-30 13:37:19 · 168 阅读 · 0 评论 -
KK想获得某年某月有多少天,请帮他编程实现,出入年份和月份,计算这一年这个月有多少天
/针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。//多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。原创 2023-10-30 10:31:39 · 112 阅读 · 0 评论 -
两个int(32位)整数m和n的二进制表达式中,有多少个位(bit)不同?
F2:算n & (n - 1) = 0进行了几次,0可以作为循环判断条件。原创 2023-10-29 21:45:53 · 56 阅读 · 0 评论 -
KK想判断输入的字符是不是字母,请帮他编程实现
/针对每组输入,输出单独占一行,判断输入字符是否为字母,输出内容。//多组输入,每一行输入一个字符。原创 2023-10-29 20:14:21 · 44 阅读 · 0 评论 -
KK想完成字母大小写转换,有一个字符,判断它是否为大写字母,如果是,将它转化为小写字母;反之则转化为大写字母。
思路:大小写字母之间asc码都相差32,只有26个字母。//针对每组输入,输出单独占一行,输出字母的对应形式。F2:利用scanf返回值为0进行循环判断。//多组输入,每一行输入一个字母。原创 2023-10-29 14:38:55 · 120 阅读 · 0 评论 -
最高分与最低分之差输入n个成绩,换行输出n个成绩中最高分数和最低分数只差
/问题在于arr初始创建的数组大小是多少就是多少,不会由n决定,比如arr[10],但n=5。//输入成绩时arr[i]中存入的数据是:{99,98,97,95,91,0,0,0,0,0}//所以输出的时候要格外注意,不能用首位减去末尾。//这种方法跟冒泡排序最大不同处在于不用考虑数组大小,因为能直接找出来最大值和 最小值。第二行为n个成绩(整数表示,范围为0~100),以空格隔开。两行,第一行为n,表示n个成绩,不会大于10000.一行,输出n个成绩中最后高分和最低分数的差。原创 2023-10-29 11:05:29 · 185 阅读 · 0 评论 -
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出。删除指定数字之后的序列,序列中为被删除数字的前后位置没有发生改变。//数据范围:序列长度和序列中的值满足1<=n<=50
【代码】有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出。删除指定数字之后的序列,序列中为被删除数字的前后位置没有发生改变。//数据范围:序列长度和序列中的值满足1<=n<=50。原创 2023-10-29 09:22:03 · 100 阅读 · 0 评论 -
小乐乐上课需要走n阶台阶,因为他的腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?(递归法求解)
当n在增加时,走法就很多了。此时我们假设test(10)是n=10时的10个台阶所有走法,但乐乐一次只能走1阶或者2阶,走1阶时,还剩9阶,那不就是走1阶:test(9)种走法么;也就是当n>2时,test(n) = test(n-1) +test(n-2);不就是2阶:test(8)种走法;两个数相加不就是10阶的走法;当n很小时,n = 1时,有一种走法;n = 2时,有2种走法。原创 2023-10-28 22:34:14 · 119 阅读 · 0 评论 -
不创建临时变量交换a b的值
F2:常规算法,数据可能溢出。原创 2023-10-28 21:51:38 · 47 阅读 · 0 评论 -
编写代码实现:求一个整数存储在内存中的二进制中1的个数
一直&下去可以算出i=0;循环条件是在32位范围之内要注意。//F1: i%2 i/2法。//F3:移位&1法。原创 2023-10-28 21:29:53 · 45 阅读 · 0 评论 -
创建一个整形数组,完成对数组的操作:实现函数intit()初始化数组全为0;实现print()打印数组的每个元素;实现reverse()函数完成数组元素的逆置
注意:逆序和初始化不可以同时进行,必须屏蔽掉其中一个运行另一个。这里必须传指针直接通过地址改变变量的值,不能用简单的变量。原创 2023-10-28 20:12:30 · 267 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
【代码】将数组A中的内容和数组B中的内容进行交换。(数组一样大)原创 2023-10-28 16:04:02 · 52 阅读 · 0 评论 -
用递归求解n的k次方
【代码】用递归求解n的k次方。原创 2023-10-28 15:51:27 · 85 阅读 · 0 评论 -
//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和//例如调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
【代码】//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和//例如调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。原创 2023-10-28 07:56:04 · 50 阅读 · 0 评论 -
求字符串长度,不能使用库函数
传指针不返回count直接在调用函数中打印。原创 2023-10-28 07:32:21 · 98 阅读 · 0 评论 -
字符串逆序(递归实现)
abcdefg,此递归法先将字符串赋给一个变量tmp,再交换a和g,然后在g的位置放入'\0',这样bcdef\0就成了新的字符串,在进入新的递归,最终将tmp中的a存到原来g的位置。另一方面字符串结尾有'\0',所以有8个字符,算right下角标时比原来少2;跟F2最大的不同之处在于,此递归法直接将字符存到数组中该交换的位置,直接在主函数中打印字符串就行了/运行abcdef 打印a(但运行bcdef优先级比打印a高,所以先进行下次递归)\0此时开始打印f,然后回归到ef的程序,打印e以此类推。原创 2023-10-27 17:09:23 · 377 阅读 · 0 评论 -
冒泡排序:把数组排成升序
第一次写给了butter一个int没注意,结果打印出来还是原来乱序的,原因是int声明下给test直接开辟出了空间,test整体上跟变量性质差不多,结果也会存到test里边。另外flag只是用来加快运行速度的。原创 2023-10-27 16:44:41 · 129 阅读 · 0 评论 -
写99乘法表
【代码】写99乘法表。原创 2023-10-27 15:23:45 · 154 阅读 · 0 评论 -
找出十个整数中的最大值
F2:通过找到最大值的下角标找到最大值。F4:假定最大值,自定义数组值。F3:F1的正常顺序求法。原创 2023-10-27 15:12:33 · 137 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+......+1/99-1/100的值
F1:奇偶分别求和,再相加。F2:判断奇偶+或 -原创 2023-10-27 10:50:05 · 222 阅读 · 0 评论 -
编写程序数一下1到100的所有整数中出现多少个数字9
还有不能用if()...else if()语句,这两个语句是并列语句,也是一个表达式如果在if()语句中成功运行直接跳过else if()语句,只能用两条独立的if()语句,这样99执行完第一个还要进入第二个执行。这道题要特别注意99有两个9,算作2次。所以执行两个条件不能用||,(i/10 == 9)||(i%10==9)表示只要99在一个表达式里成功运行,直接产生结果,不会再进入下一个运行了。//99算两个数字9。原创 2023-10-27 09:35:18 · 165 阅读 · 0 评论 -
给定两个数,求这两个数的最大公约数
刚开始我想着顺序下打印最后一个元素,但sz求得不对,原因是赋给arr的N是宏定义,根本没在内存中开辟空间,所以sz求不出来。原始思路:我想着把所有公约数算出来后,把这些公约数放到数组中,因为是顺序,所以数组中的元素也是顺序放的,然后把数组逆过来打印第一个元素就可以了,但可惜数组在层层循环中调不出来。while(c=a%b),当c!=0时,也就是c非0,条件为真,继续循环。直到c=0,条件为假循环停止,输出。=0时,把b的值给a,把c的值递给b,再用a%b算出新c,直到c=0时b就是最大公约数。原创 2023-10-26 22:35:18 · 38 阅读 · 0 评论 -
输入三个随机整数从大到小输出
要着重注意的是swap传递的是地址而非把变量值传过去,因为把变量值传过去,交换的也只是x和y的值,并没有交换a和b的值,除非x和y这个值能重新传递过来,但要知道return是只能传回来一个变量的。即将内存 1 中的值拷贝到内存 2 中。拷贝传递的结果是:不管如何改变内存 2 中的值,对内存 1 中的值都没有任何影响,因为它们两个是不同的内存空间。这个写法就是很平常的变量交换,此写法的思路是根据结果推导过程,确定打印a b c就说明a肯定是最大的,然后开始给条件就行了。- 不需要改变它的值,只是使用它的值。原创 2023-10-26 20:32:50 · 102 阅读 · 0 评论 -
模拟实现strlen ,(不创建临时变量)计算字符长度(递归法)
这就是递归法的精髓,把一个复杂的问题拆分成一个个小问题,然后逐个解决。//这个1求出的是每个字符的长度。2.不创建变量的递归写法。原创 2023-10-26 16:23:50 · 45 阅读 · 0 评论 -
接受一个整型值(无符号), 按照顺序打印它的每一位.例如:输入:1234, 输出: 1 2 3 4.
当n = 1不满足条件时,执行下一步printf(),1被打印出来。但整体上第四次循环是在第三次if()循环中进行的,第四次彻底结束意味着第三次if循环结束,该执行第三次循环的printf()了,此时n=12,那被打印的就是2,以此类推。创建数组要用宏定义#define N 10,宏定义不会给数组创建内存,常规定义会创建内存,编译过不去。假如n=1234,进入print()函数中,会先执行if(1),在执行printf()然后n =123进入print(),再执行if, printf()原创 2023-10-25 22:52:31 · 170 阅读 · 0 评论 -
写一个函数,每调用一次这个函数,就会将num的值增加1.
注意:在ADD中返回num时一定要有变量来接受,不接受的话值没办法打印出来,或者是直接打印ADD。原创 2023-10-25 17:12:39 · 127 阅读 · 0 评论 -
用函数找某数组下角标
在test中如果找不到,输出-1,-1代表的意思就是没找到mid,自然也该返回不了值。如果找到mid ,test会把mid返回,mid就等于test函数当前循环下的值,再把mid赋给ret就可以输出。4.此题不能用strlen,否则会直接运行while(left>right)不理解二分精髓:mid在左边直接把left放到mid右边缩小范围。mid定义成全局变量不能每次重置计算mid的值,程序绘制走一遍。strlen会造成数据丢失,算出来的right连循环都进不去。不需要用for,除非打印数组所有元素。原创 2023-10-25 15:48:45 · 56 阅读 · 0 评论 -
打印1000~2000之间的闰年,判断一个年份是不是闰年
/判断标准:1.普通闰年:能被4整除但不能被100整除,如1250年。//2.世纪闰年:能被400整除。原创 2023-10-25 09:34:57 · 99 阅读 · 0 评论 -
写一个函数判断一个数是不是素数
is_prime()函数是专门用来判断是不是素数的,这个程序若是素数返回本身。原创 2023-10-25 09:22:42 · 3800 阅读 · 0 评论 -
打印100 - 200之间的素数
这个方法是用嵌套循环,用i%j,j是从2~(n-1),其实也不用(i-1),比如i=100;是素数的话跳出来打印,这里比较难理解的点是int flag = 1,它表示只要是素数,flag就等于1,跟bool类型类似,都是需要我们去定义的。11~19都有11和13,17简单算下就知道了,17*14=238超标,可以直接排除,所以只要i模上这6个数字不等于0,i就是素数。值得注意的是:j和flag必须在i的循环下定义,不能让它们称为全局变量,跟i定义在一个等级,否则值重置不了,结果算不出来。原创 2023-10-24 22:41:49 · 44 阅读 · 0 评论 -
Zeno哲学问题:箭永远不会达到它的目标, 他说箭要到达目标距离的一半,然后在达到剩余距离的一半,然后继续达到剩余距离的一半, Zeno认为箭的飞行过程有无数个部分,所以要花费无数时间才能结束此过程。
注意输出时用%f还是%d。原创 2023-10-24 20:44:00 · 62 阅读 · 0 评论 -
计算n的阶乘 n = 1 * 2 * 3 * 4*...*n
错误点:把sum放到局部中去定义,导致printf()打印时找不到sum,sum出main()已经被销毁,所以sum要是全局变量。原创 2023-10-24 19:53:33 · 319 阅读 · 0 评论 -
编写代码实现,模拟用户登录情景,并且只能登陆三次。(只允许登录三次密码,如果正确//则提示登陆成功,如果三次均输入错误,则退出程序。)
今天写这个代码牵扯出来scanf_s的新格式,是scanf_s("格式",变量,sizeof(变量)),此写法编译器才能通过。这句表达式的含义是若返回值为0,则连个字符串相等。判断字符串相等要用到库函数strcmp(),不能再用==原创 2023-10-24 17:01:53 · 181 阅读 · 0 评论 -
从两端向中间逐渐打印
(2)计算数组长度不仅可以用sizeof,还可以用strlen。Sleep()是延迟打印,system("cls")是清空屏幕。(1)没想到用arr1覆盖arr2,然后打印arr2的方法.(3)学到新函数Sleep()和system()原创 2023-10-24 16:07:48 · 41 阅读 · 0 评论 -
3.找数组中某个数的下标
【代码】3.找数组中某个数的下标。原创 2023-10-24 14:49:05 · 463 阅读 · 0 评论 -
2.设计一个三位数水仙花数。
/提示:水仙花数是一个三位数,此数等于百位三次方 + 十位三次方 + 个位三次方。F2:while循环。原创 2023-10-24 09:35:37 · 56 阅读 · 0 评论