- 博客(25)
- 收藏
- 关注
原创 1. 【开发小技巧】Qt Create常用快捷键
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2020-09-30 16:07:52
344
原创 33.【C语言】删除数组中的重复元素(Demo)
算法思想定义4个变量i、j、k,变量i用于控制外层循环的趟数,外层循环每执行一趟,数组arr在当前数组长度为k的范围内arr[i]是没有重复元素的。外层循环执行一趟的过程中,内层循环j和k每次的初值都是i+1,即每次从arr[i]的下一个元素开始。变量j在内层循环中从i+1开始到len-1逐个扫描,扫描到的元素值和当前arr[i]不相等,arr[j]就不断替换arr[k],然后下标j和下标k均向后移。否则下标j不断向后移,下标k保持不动,直到出现arr[j]和arr[i]不相等。内层循环执行完后,此时k的
2020-05-27 08:45:38
2273
原创 32.【C语言】输入一个整数,判断各个位数之间是否存在重复数字(Demo)
问题描述输入一个整数,判断各个位数之间是否存在重复数字。因为超过十位数,就必然有重复数字出现,所以只研究不超过十位数的整数。例如,输入28775,有重复数字;输入2875,无重复数字。算法思想1.常规算法思想很容易会想到将每一位的数字放入数组,在放入该位的数字后,就与前面已经存入的数字逐个比对。比如得到某一位的数字放入arr[i]中,那么arr[i]就和arr[0]~arr[i-1]逐个进行比对,若相同,则立即打印结果,...
2020-05-24 09:40:33
9913
1
原创 31.【C语言】判断字符串为回文(Demo)
问题描述键盘输入一个字符串,判断是否为回文。例如"abcba"、"abccba"这样具有对称性的字符串称为回文,反之,则不是回文。算法思想通过两个下标left和right,left和right都会向着中间下标靠拢。在left不超过right的情况下,一旦出现这两个下标对应的字符str[left]和str[right]不相等,立刻返回假值。否则循环一直到left不小于right时,此时字符串是对称的,则为回文。案例运行效果完整代码如下#include <stdio.h>#incl
2020-05-09 21:52:59
845
原创 30.【C语言】删除字符串中所有空格(Demo)
问题描述:删除字符串中所有空格,给出如下三组数据进行测试(下划线代表空格):(1)_I_am_a_boy(2)I_am_a_boy(3)Iamaboy输出结果必须均为Iamaboy算法思想定义一个数组str用于获取字符串,定义两个变量i,j,初始均为0。j为活动下标,下标i在离j最近的左侧位置且str[i]不为空格。在str[j]不为结束符的情况下,对字符串逐个字符遍历。如果str...
2020-05-07 12:24:17
5567
4
原创 29.【C语言】进制转换:10转16、10转2、2转10、16转10(Demo)
算法思想:在对于10转其他进制可以利用短除法的思想,将10进制数转换成其他进制数。,如下图所示,x为进制,num为十进制数。1、10进制转16进制主体部分void DecToHex(int num) //10进制转16进制{ char str[N]; int i = 0, index; while (num) { index = num % 16; if (index ...
2020-05-06 21:11:16
1407
原创 28.【C语言】键盘输入一句英文,统计句子中每个字母出现的次数(不区分大小写,一律按小写显示)(Demo)
问题描述:键盘输入一句英文,统计句子中每个字母出现的次数(不区分大小写,一律按小写显示)算法思想用一个字符数组str[ ]获取输入的整个字符串,用一个大小为26的整型数组alp[ ]用于存放统计数据逐个扫描每个字符,在‘a’和‘z’之间或者在’A’和‘Z’之间,对应下标index的alp[index]自增打印数组alp,逐个扫描数组中的每个元素,凡是为0的均跳过打印完整代码如下#...
2020-05-06 10:18:11
11088
1
原创 26.【C语言】字符串转无符号整型unsignedint、字符串转有符号整型int、无符号整型unsignedint转字符串、有符号整型转字符串(5_task)
算法思想:1. 字符串转无符号整型unsignedint初始化一个字符串str;num用于存放当前转换的整型数,初始化为0。对字符串str中的每个字符进行判断,一旦扫描到当前字符在数字字符的范围之外,直接跳出循环。那么转换的整型数是由从串首开始,一直到不为数字字符或为结束符为止形成的一段纯数字字符。若在数字字符的范围之内,当前num为上一次转换的num乘10,再加上当前字符与字符‘0’的ASC...
2020-04-14 13:58:14
4974
原创 25. 【C语言】将单链表按照结点的奇偶位置拆分成两个链表(5_task)
问题描述:将一个链表拆分(将链表奇数位置上的节点构成一个链表,偶数位置上的节点构成另一个链表)例如:List:1 -> 2 -> 3 ->4 ->5 ->6 ->7 ->8 ->9 ->10->11-> NULLList1: 1 ->3 ->5 ->7 ->9 ->11-> NULL ;...
2020-04-12 21:53:17
3270
原创 24. 【C语言】删除单链表中的重复元素(5_task)
问题说明:因为是删除的是单链表中的重复元素,这和删除单链表中值为x的元素有区别。例如给出一组数:1 2 2 3。前者得到的结果是1 2 3;后者删除2,得到1 3。算法思想:本算法适用于事先所得到的单链表中元素是有序的,即元素值按大小排好序的。假设任意输入一组数,通过单链表的有序插入生成单链表,这样,重复的元素必然相邻。只要链表不为空,首结点肯定是不会动的。定义3个结点指针:ppre、pcu...
2020-04-12 14:25:55
1818
原创 23. 【C语言】判断两个链表是否相交, 如果相交, 则求出交点所在位置(5_task)
问题描述:判断两个链表是否相交, 如果相交, 则求出交点所在位置。例如,有如下两个链表,由两个头指针phead1和phead2分别指向链表首结点,第二个链表的尾结点指针域指向第一个链表中的某个位置,形成相交的状态。用几何图形表示如下:判断线段AD、BC是否相交。若相交,假设相交于一动点C,C可以移动到AD的某个位置,求AC的长度。算法思想:从图像上可以看出,需要考虑两种情况:线段AC...
2020-04-11 16:10:41
687
原创 22. 【C语言】判断单链表是否有环(5_task)
算法思想:因为是单链表,那么单链表内部成环的原因只会是尾结点的指针域指向链表中的某一个结点。那么单链表成环的形状只有下面三种形式:不管单链表形状如何,处理的方法都是一致的。建立单链表,因为单链表的建立无要求,就采用尾插法建立单链表。设置链表内部有环,选取链表内某一个结点位置,尾结点的指针域指向该结点。此时链表内部成环。判断单链表是否有环,处理的方法:自定义两个结点指针:ppre和pc...
2020-04-10 19:37:10
513
原创 21. 【C语言】在不涉及统计链表结点数的情况下,找出单链表中间位置的结点(5_task)
问题描述:输入一组数,在不涉及统计链表结点数的情况下,若输入奇数个数,输出这组数中中间位置的那个结点;若输入偶数个数,则输出这组数中中间位置的那两个结点。算法思想:因为输入数字的个数有两种情况,则分奇数个和偶数个考虑:(1)输入奇数个数假设输入了2n-1个数,初始化两个指针ppre和pcur都指向首结点,用一个循环来控制这两个指针向后偏移,ppre向后偏移一个位置,同时pcur向后偏移两...
2020-04-10 14:08:21
297
原创 20. 【C语言】在不涉及统计链表结点数的情况下,找出单链表倒数第n个结点(5_task)
问题描述:在不涉及统计链表结点数的情况下,找出单链表倒数第n个结点。当然n的值绝不会超过链表长度。算法思想:初始化两个结点指针,ppre和pcur,并且都指向头指针。用一个循环将结点指针pcur向后偏移n-1个结点位置。此时ppre指向链表的第一个结点的位置,pcur指向链表第n个结点的位置。再用一个循环控制ppre和pcur两个指针的偏移。ppre向后偏移一个结点位置,同时pcur也向后偏...
2020-04-10 11:28:47
238
原创 18. 【C语言】将两个有序链表合并成一个有序链表(5_task)
算法思想:初始条件下有两个有序链表(假设都是递增顺序),则可以采用单链表的尾插法建立链表。不需要在第一个链表的基础上动态申请空间,也不需要对第二个链表的结点做删除操作。因为第二个链表的每一个结点都是动态申请过来的,本身占有空间,所以只需要改变每个结点之间的相互指向构成一个新链表即可。借用单链表有序插入的思想,每次取第二个链表的首结点链接到第一个链表的相应位置,改变该结点在第一个链表相应位置的前后...
2020-04-08 22:29:09
2770
原创 17. 【C语言】有一个学生结构体,其数据成员有: 学号, 姓名, 3 门课程分数。从键盘上输入 5 个学生 的信息,按要求输出(5_task)
问题描述:有一个学生结构体,其数据成员有: 学号, 姓名, 3 门课程分数。从键盘上输入 5 个学生的信息,按如下要求输出:(1) 按照学号递增输出全部学生信息,每个学生的信息一行。(格式: 学号 姓名 分数1 分数 2 分数 3 总分)(2) 输出每门课程最高分的学生的信息(3) 输出每门课程的平均分(4) 按照总分输出学生排名算法思想:(1)第1问要求按学号递增输出信息,在不确定...
2020-04-08 16:46:47
15485
1
原创 16. 【C语言】从(0,0)到(m,n),每走一步只能向上走或者向右走,则有多少种走法(Demo)
问题描述:在如下图中,从(0,0)到(m,n),每走一步只能向上走或者向右走,则有多少种走法?例如,从(0,0)到(2.3)有如下10条路径:(0,0)->(1,0)->(2,0)->(2,1)->(2,2)->(2,3)(0,0)->(1,0)->(1,1)->(2,1)->(2,2)->(2,3)(0,0)->(1,...
2020-04-01 15:55:05
3056
原创 15. 【C语言】Hanoi塔问题(Demo)
问题描述:如下图所示,有A、B、C三根柱子,其中A柱子上面有从小到大的共n个圆盘,现要求将A柱子上的圆盘移到C柱子上,在移动盘子的过程中遵循一次只能移动一个盘子,并且在每个柱子上都不能出现大盘子在小盘子上面,求移动次数最少的移动路线。例如,n=1时,最少移动次数的路线为:A->Cn=2时,最少移动次数的路线为:A->B,A->C,B->Cn=3时,最少移动次数的...
2020-03-27 14:41:33
2279
原创 14. 【C语言】一个人一次可以走一个台阶或者一次走两个台阶,则走到第n个台阶共有多少种走法(Demo)
问题描述:一个人一个人一次可以走一个台阶或者一次走两个台阶,问走到第n个台阶共有多少种走法?例如,用数字表示步数,那么,第1个台阶,走法有1 共1种走法;第2个台阶,走法有1-1、2 共2种走法;第3个台阶,走法有1-1-1、1-2、2-1 共3种走法;第4个台阶,走法有1-1-1-1、1-2-1、1-1-2、2-1-1、2-2 共5中走法……由此,首先想到的是递归算法一...
2020-03-26 12:42:44
4578
原创 13. 【C语言】103个整数中有50个数出现了两次,3个数出现了一次, 找出出现了一次的那3个数(2_task)
在解决问题前需要了解三个位运算知识:任何一个数和0按位异或就是其自身。例如:3^0=0;0000 0011 ^ 0000 0000 = 0000 0011任何一个数和其自身按位异或结果为0。例如:3^3=0;0000 0011 ^ 0000 0011 = 0000 0000去某个数num的为1的最低位,其余位为0的数,代码可表示为num=num&(-num) 或 num=nu...
2020-03-23 11:20:49
1392
10
原创 12. 【C语言】 102个整数中有50个数出现了两次,2个数出现了一次, 找出出现了一次的那2个数(2_task)
在解决问题前需要了解三个位运算知识:任何一个数和0按位异或就是其自身。例如:3^0=0;0000 0011 ^ 0000 0000 = 0000 0011任何一个数和其自身按位异或结果为0。例如:3^3=0;0000 0011 ^ 0000 0011 = 0000 0000一个数num和其相反数(-num)按位与可以得到一个数num1,num1是num不为0的最低位,其余位全为0构成。...
2020-03-20 23:46:38
1490
原创 9. 【C语言】自定义实现mystrlen、mystrcpy、mystrcompare和mystrcat四个函数(3_task)
(1)实现mystrlen函数mystrlen()函数用于获取字符串长度,并返回长度数值。算法思想:用while循环逐个扫描每个字符,同时变量i自增+1;当扫描到结束符时,c[i]=0,自动跳出循环,此时i的值即为字符串长度。int mystrlen(char c[]){ int i = 0; while (c[i]) //c[i]!=NULL { i++; } retur...
2020-03-20 17:55:34
4340
原创 11. 【C语言】101个整数中,50个数出现了两次,1个数出现了一次, 找出出现了一次的那个数(2_task)
在解决问题前需要了解三个位运算知识:任何一个数和0按位异或就是其自身。例如:3^0=0;0000 0011 ^ 0000 0000 = 0000 0011任何一个数和其自身按位异或结果为0。例如:3^3=0;0000 0011 ^ 0000 0011 = 0000 0000一个数num和其相反数(-num)按位与可以得到一个数num1,num1是num不为0的最低位,其余位全为0构成。...
2020-03-20 17:41:34
867
原创 1. 【C语言】打印九九乘法表(1_task)
#include<stdio.h>#include<stdlib.h>int mul(int n){ int result; for (int i = 1; i <= n; i++) //控制行 { for (int j = 1; j <= i; j++) //控制列 printf("%2d*%2d=%2d ",j,i, i*j); ...
2020-03-18 15:51:31
352
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人