- 博客(38)
- 收藏
- 关注
原创 指针进阶1
顾名思义:字符指针指的是一种指针类型为字符指针 char*;char*可以是一个字符也可以是一个字符串,前者很好理解,让我们看看后者;//实际上是将首元素的地址给了p,也就是说*p存的是a的地址,不是存的全部abcdef的地址;(可以把abcdef想象成一个数组)打印的其实是字母d,这条语句的意思是以%d的格式打印下标为3的元素d让我们看一道相关的的面试题:答案:第一个是str1 str2 are not same 第二个是str3和str4 are same(大家可以暂停一下看看是为什么呢?
2024-01-30 19:21:20
971
原创 栈和队列知识点+例题
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素的操作。遵守的原则(类似于弹夹):栈的插入操作叫做进栈/入栈/压栈,:栈的删除操作叫做出栈,那如何实现栈呢?经过比较,数组栈是最优解,(链式的扩容会很久才会扩容一下)由于top的位置意义不同,我们分为两种解决方案。
2023-11-20 15:55:10
174
原创 双向链表的知识点+例题
当然,在这个代码中,我们要考虑如果只有head的唯一一个节点,那我们可以检查一下,如果head->next==head,则就不尾删。我们学完了顺序表和链表,为了方便学习,我们来比较一下两种表吧~在这个代码中,如果pos是哨兵位,那么此代码相当于尾插。好啦~我们的知识分享就到这里了~以上就是双向链表的知识点啦~10在pos位置前面插入。让我们画个图就理解了。
2023-11-17 15:08:14
235
7
原创 链表的知识点+例题总结
首先我们要先设置三个指针,分别是prev(指针的前一个节点),cur(指针当前节点),next(当前节点的下一个节点),当cur不等于NULL时,有两种情况,一个是cur等于重复的值val,此时我们要将prev->cur,然后释放掉空间,最后将prev->next=next;第二种情况是,若cur不等于重复的值val,此时我们要将prev->cur,cur=cur->next。当我们释放掉一个空间,会出现野指针的情况,因此,为了解决野指针的问题,我们设置两个指针,一个是prev,一个是tail;
2023-11-12 17:56:28
188
12
原创 算法的时间复杂度和空间复杂度
时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量的描述了算法的运行时间,一般来说,算法中的基本操作的执行次数,为算法的时间复杂度第一题:两套for循环+k有2*N次循环+while循环中的M的10次,所以O(N)=N*N+10+2N(准确的)相信大家都理解了上面的代码,让我们再看看下面的代码吧(会越来越有挑战性哦)第二题:eg:如果不确定 M和N的关系,那就把未知数都带上,答案最好写O(M+N)第三题。
2023-11-01 17:53:29
107
原创 数据在内存中的存储
在内存的存储可以任意,只要有需要的时候,把它拿出来可以还原原来的数据即可eg:我们通常使用大小端大端:数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中小端:数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中举个例子:上图第一个是大端,第二个是小端设计一个小程序来判断当前机器的字节序。
2023-10-15 10:45:52
44
原创 const修饰指针and修饰变量
const放在*的左边,限制的是指针指向的内容(也就是说,不能通过指针来修改指针指向的内容*p,但是,指针变量p是可以修改的,也就是指针变量是可以指向其他变量的)const放在*的右边,限制的是指针变量本身(p),指针变量不能在指向其他元素,但是可以通过指针变量修改指向的内容。const修饰变量的时候,实在语法层面限制了const修改,但是本质上,num还是变量,是一种不能被修改的变量。//const放在*的位置不同,效果也不同。下面让我们看一下代码,了解const的作用。
2023-10-03 12:24:39
55
原创 指针(初阶)
1,内存被划分成一个个内存单元,每个内存单元的大小是1个字节2,每个字节的内存单元都有1个编号,这个编号就是地址,地址在c语言中称为指针3,地址要存储的话,存放在指针变量中4,每个内存单元都有唯一的地址来标识5,在32位机器上的地址大小是4个字节,所以指针变量的大小也是四个字节同理:在64位机器上的地址大小是8个字节,所以指针变量的大小也 8个字节。
2023-10-02 17:12:21
58
原创 c语言操作符的讲解
因为a++,先使用后自增,所以i=a++那一行式子,用的a=0,由于是&&的关系,所以a++后面的式子不用计算,所以输出结果是a=1,b=2,c=3,d=4,i=0。如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转化为另一个操作数的类型,否则操作就无法进行。相信大家都理解/的用法了吧~当然我们也要理解%两端也是整数,返回的结果是整数相除后的余数。看下面代码的例子,5是操作数,arr【5】是一个索引值(索引值其实就是下标)而对于负的整数,原码,补码,反码需要计算。
2023-10-02 09:27:03
50
原创 递归部分习题
pow相信大家应该不陌生,pow是求n的k次方的库函数,我们可以用博主之前的c++网站可以看到pow的使用方法。注意哦~,pow的返回类型是double,如果想要返回其他类型,可以用()强制切换类型好啦,让我们看看这个题的思路吧~相信大家应该都可以理解这个思路吧~大家可以试试去写写代码,然后对照一下答案哦(答案如下)
2023-09-30 12:01:29
59
原创 数组的应用实例1.三子棋
思路:我们在test.c文件中打印以下内容:2,然后在打印一个菜单,放到主函数里面去3.对游戏玩家对菜单的选择进行下一步的操作,比如选1,则就继续玩,2则退出游戏,剩余的选择都是错误,需要重新选择。4,然后选1的话,有游戏的界面,所以我们要开始做一个game游戏的代码,在这个game里面,我们需要初始化棋盘,打印棋盘,并且需要在这个game里面进行玩家下棋,电脑下棋,并且打印出双方下的棋子,以及分出胜负我们在game.h文件中声明三子棋代码如下: 首先,我们先声明,然后再
2023-08-23 10:03:12
161
3
原创 数组的知识点总结+例题
所以数组的下标如果小于0;或者大于1,就是数组越界访问了,超出了数组合法空间的访问。c语言中本身不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错并不意味这是正确的。所以程序员写代码时,最好自己做越界的检查。i<=20,就已经说明了数组越界,输出结果是错误的。
2023-08-14 12:06:34
181
4
原创 函数知识点+例题总结
自定义函数和库函数一样,有函数名,返回值类型和函数参数,不一样的是这些都由我们自己来设计,给程序员一个很大的发挥空间函数的组成:返回类型;函数名;参数(不限个数,可以0个也可以无数个);函数体举个代码例子吧~题目:写一个函数可以找出两个整数的最大值返回类型,用void的情况:不需要传参,不需要返回值在举例子之前,要交给大家一个知识哦~in main()int num=10;//先定义num的值是10;int *p=#//将num的地址传给*p*p=20;
2023-08-11 12:30:48
219
2
原创 计算1-1/2+1/3-1/4.....1/100
方法2:由式子可以看出,奇数项为正,偶数项为负,所以我们可以将奇数项加起来,偶数项加起来,然后作和即可。方法一:先生成1~100的数字,让其做分母,分子永远是1,然后这些值相加,符号加减交替即可。
2023-08-06 22:05:29
942
原创 求最大公约数
方法2:辗转相除法(具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。1.先输入两个数m,n,然后找出两个数的最小者,(假设n为最小者),用这两个数分别除以n,若无余数,则就找到了,若有余数,则把n--,直到找到了最大公约数。
2023-08-06 13:42:47
65
原创 打印100~200的素数
2.素数只能是被1和它本身的数整除,设一个数为i,然后不能被2~i-1的数字整除,则是素数,所以我们可以产生2~i-1的数字让i去试着除一下,如果余数为0;若一个数可以写成i=m*n,m和n至少有一个数字小于等于根号i;1.无论要打印什么,要产生100~200的数。
2023-08-06 13:23:36
58
原创 BC48字母大小写转化
题目:如果输入大写字母,则转化为小写字母;如果输入小写字母,则转化为大写字母。好啦~这两种方法就讲到这里啦~,大家有不明白的地方可以私信博主哦~来表示大小写字母转化和是否为字母。方法二:可以用库函数。
2023-08-06 12:12:56
50
原创 BC123 小乐乐找最大数
方法2:用INT_MIN函数,头文件用limits.h来定义,这个函数的意义是比数组四个数字都要小,找到的数字都比INT_MIN大,则max为这个数字。方法1:遍历比较法,现设第一个元素arr【0】最大,然后依次将三个数与他比较。如果有一个数字比他大,则max等于这个数字。好啦~,找最大数的编程就讲到这里了,相信小伙伴们都已经学会了吧,给个好评吧~小乐乐找到了4个数,找出最大的数。
2023-08-06 11:54:45
135
原创 BC112小乐乐求和
法二:运用数学知识,1~n的数列求和公式,此时运用的是数学知识,函数预处理指令需要加入数学函数。法一:先产生1~n的数字,然后进行加和。求1~n(n特别大)的和。
2023-08-06 10:53:42
66
原创 BC13 ASCII码值
好啦~本题我们就讲到这里啦~,对计算机专业课感兴趣的童鞋们可以给个好评+关注哦~后期我会把专业课的知识一起整理哦~这些数字可以用int定义以及char定义,int定义时都是数字,char直接表明这些数字就是对应的ASCII码值。转换以下ASCII码值然后对应字符输出他们。注意,用char必须要保证\0(加入进去)方法二:用char定义。
2023-08-06 10:37:05
94
原创 BC114 小乐乐排电梯
思路:由题知,12人为1组,那么(n/12)就是一共有几组,(n/12)*4就是这几组需要的时间,(n/12)*4+2就是小乐乐到达楼上的时间。题目:小乐乐前面有n人,电梯每次要做12人,一上一下电梯共需要4分钟,请问小乐乐什么时候可以到达楼上。
2023-08-05 13:57:16
56
1
原创 猜数字游戏实现
2,接下来我们猜数字,如果猜小(大)了,屏幕告知猜小(大)了;若猜对了,则告知恭喜你,猜对了。4.猜数字 如果猜小(大)了,屏幕告知猜小(大)了;若猜对了,则告知恭喜你,猜对了。2.对客户选择菜单上的选项作出不同的回答。1,先随机生产1~100的数字。3.创建1~100的数字。1.先建立一个菜单,
2023-08-02 18:56:18
77
原创 在一个有序数组查找具体某个数字n
令数组最左边的元素下标为left,最右边的元素下标为right,最中间的元素下标是mid,用mid和你想要的元素k进行比较,如果mid比k小,则最新的范围是把比mid小的部分去掉,然后left+1;同理如果mid比k大,则最新的范围是把比mid大的部分去掉,然后right-1;2.若数目较大,并且有序,用折半查找(二分查找)乱序用遍历的方法,不可以用二分查找。举例如图所示,其中右下角蓝色字体是结论哦~大家一定要记住哦,让我们看看怎么运用吧~1,遍历的方法(适用于有序较少的数字)
2023-08-02 11:15:04
87
原创 goto语句知识点的运用
但是在某种场合下goto语句还是可以用得着,最常见的是终止程序在某些深度嵌套的结构的处理过程。while(1)是表示的死循环,system(“shutdown -a”)是取消关机的意思。当第一次执行此程序时,进入goto again时,此时程序再次进入again:,陷入循环。因为goto不常用,初学者不建议用goto语句哟~可以用其他语句来代替。从理论上goto语句是没必要的,实践中没goto语句也可以容易写代码。C语言中提供了可随意滥用的goto语句和标记跳转的标号。下面是goto的一个例子:(图2)
2023-08-01 19:47:56
49
1
原创 分支(选择)语句和循环语句的知识点+例题总结
c语句可分为以下五类:1.函数调用语句 2.表达式语句 3.控制语句 4.复合语句 5.空语句其中,控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,c语言有9种控制语句。可分成以下3类:1.条件判断语句也叫分支语句:if语句,switch语句2.循环执行语句:do while语句,while语句,for语句3.转向语句:break语句,goto语句,continue语句,return语句。
2023-07-20 11:25:19
118
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人