c语言基础
文章平均质量分 62
积累了一些c语言的基础知识和一些习题
LaNzikinh篮子
山不让纤介,而成其危,海不辞丰盈,而成其邃
展开
-
动态内存管理
我们之前讲解了,内存函数和字符串函数的一些知识,我们现在来说一下,关于动态开辟内存的一些函数和一些事例,为什么要开辟动太内存的分布呢?因为我们之前学的都是静态的,有一些题目,你并不知道我需要的内存大小是多少,所以我们就需要了解一个动态开辟的方法。先从几个动态函数说起C语言引用了动态开辟让程序员可以自己申请空间,使代码运行变得比较灵活了。在以后学习数据结构的时候,需要大量运用动态开辟的知识。所以说还是比较重要的。原创 2024-04-04 22:15:35 · 1636 阅读 · 43 评论 -
c语言的字符串函数详解
在编程的过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语言标准库中提供了一系列的库函数,接下来我们就学习⼀下这些函数。一、strlen求字符串长度的函数这个函数是我们之前用的最多的函数了,所以相对之下也比较熟悉,这里也就简单地概括一下,讲下注意点,这个函数他'/0'零作为结束标志注意和sizeof的区别。他的模拟实现有三种方法,以前写过,就不多说了。原创 2024-03-16 17:05:58 · 1140 阅读 · 26 评论 -
用c语言自己实现qsort和冒泡排序
主要讲解了两个的c语言排序,没有代码块,手机找不要怎么引用,逆天暗夜9 ,基础一定要打牢。原创 2024-03-12 16:42:49 · 621 阅读 · 47 评论 -
C语言内存函数详解
我们之前按学习了C语言标准库中提供了一系列的字符和字符串库函数,接下来我们就学习一下关于内存相关的一些函数。熟练的掌握这一系列的库函数,可以在做某些题目上省去大量的时间,如果你不做题目,掌握这些函数,也可以增加你阅读别人函数的经验看得懂别人的代码。原创 2024-03-16 21:30:18 · 1079 阅读 · 33 评论 -
如何用c语言实现输入一个字符,打印一个字符三角形
这样的一个三角形,思路其实和99乘法表是一样的,不会的可以看我之前的博客,利用for循坏来实现,首先看一共5次,每次打印一排,可以想到要利用for循坏的嵌套,外部一个大的for里面小的for,在仔细观察这个三角,其实可以发现,第一排是4个空格一个字符,第2排3个空格2个字符,这样的规律。这个题目其实还是比较简单的,但是也要细节要注意的,首先输入字符,很多人看到输入就会直接用scanf去去地址接收,但是这是字符不是整形变量,字符一般用getchar来接收,如何打印三角形呢?原创 2023-11-08 00:52:14 · 703 阅读 · 1 评论 -
喝汽水问题(c语言)
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水,这里用c语言来解释可以先用列举法来说明,¥20可以买20个汽水,两个空瓶换一瓶就可以获得10个汽水,同理10个空瓶个可以获得五瓶,五个换两个两个换一个,然后用五个的余数加上两个的余数相加,可得39瓶。但是这个是用硬算的方法去得出的。我们要做的是,输入n瓶,就可以得出喝了几瓶。原创 2024-01-23 21:40:56 · 3539 阅读 · 13 评论 -
调试技巧c语言,保姆教学
鼠标放变量上,可以看值,可以右键设置16进制或者 10进制变量拖进监视窗口(断点卡主时->调试->窗口->监视 1,2,3,4,),然后还有自动窗口和局部变量,他们和监视窗口的区别是一下子就可以出现上下的所有变量.但是不稳定,最后就是一下内存,寄存器,汇编的查看了。ret在第三伦开始时,赋给他的值不是从1开始的而是从2 ,所以找到问题,因该在第2个for循环结束时,讲ret赋一个1,在进去。这些东西都是可以帮助我们对代码进行调试的,调试,断点,监视。逐过程就是只看过程,如果出现函数,他是不会进去的。原创 2023-11-20 11:22:16 · 339 阅读 · 2 评论 -
c语言浮点数的存储
最后,内存取出指数E可分为3种情况,1:E有0有1,怎么进来的,就怎么取出去,注意M要加1,2:E全为0。这时,浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。这样做是为了表示±0,以及接近于0的很小的数字。E的存储,因为科学计数结会存在负数,所以E的存储要加中间值8位的E,中间数为127,对于11位的E,中间数为1023。s是符号位,M是转化的2进制位,E是指数位,比如说9的存贮,我们先把他们转化为上述模式。原创 2023-11-28 00:37:30 · 659 阅读 · 2 评论 -
如何用c语言求2个数的最大公约数
但是代码有点复杂的,所以一般用第2种方法欧几里得辗转相除法 ,怎么说法勒,比如说,m为32,n为8,先要32 %8得到0,令m %n的结果为r,若r为0,则n为最大公约数,但是r不为0,则让r变为n,n变为m,继续上面操作,这样可以达到一个辗转相除的作用。首先我们来看穷举法,你可以理解我一个一个的列举,我们来举个例子,比如12和4不是从1开始,而是从4开始,也就是2个数中的小的数开始,一一列举,如果最小的数除以本身无余数,且除大数也没有余数,则它就为最大的公约数,如何有余数,自动向下减一,继续上面操作。原创 2023-10-26 00:44:38 · 470 阅读 · 0 评论 -
猜数字c语言
然后我们就开始运行流程,最后才是游戏的执行,首先要明白菜单出来之后,你先必须选择,所以最开始你必须输入一个数字来局来决定是否玩这个游戏,如果完了就进入到了游戏执行模式,如果不完就退出,而且一般玩游戏都会用到do,while循环,因为他是三大循环体系中,惟一一个先做在判断循环的,就非常适合游戏的执行,所以我们先用一个switch语句,来让玩家选择是玩还是退出?猜数字游戏是一个很经典的c语言游戏,首先我们先要把做一个游戏的大致体系给写出来,一个游戏需要菜单,运行流程,游戏执行这3大部分。原创 2023-11-11 23:14:29 · 406 阅读 · 2 评论 -
如何用c语言判断是否为水仙花数
其实很简单,只能把每个位上的每个数子,全部扣下来,在每个3次方相加就可以了,算法还是比较简单的,比如就用153来举例子,153,我们要把153的每个位都拿出来1,5,3。首先把153 %10就可以直接扣下3,然后还剩1和5,153/100可以把1扣下,5有点难,先把153 %100得到53在/10就可以等到5了,然后把1,5,3分别3次方相加就可以了代码如下。,水仙花数是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153那我们改如何去实现呢?原创 2023-10-31 15:07:40 · 309 阅读 · 2 评论 -
3种求字符串数量的方法c语言
第2个采用函数的递归,什么是递归?接下来就是实现了,第一个最简单的就是strlen函数的定义方法去实现,因为我们知道字符串的结束标志是/0所以说,我们将第一个数组的地址去来,解应用操作,然后把他与/0去对比,如果不相等的话就计数,然后加加跳下一个地址。直到/0为止,注意‼️, 数组是字符串存储的法宝,数组在传参数的时候,只会传去首元素地址,第3个,指针尾前头的方法来求,因为下标从0开始,所以尾减头正好是字符串的总长度,头和尾一开始相同,让尾一直加加知道/0为止,最后返回尾巴减脑袋就可以了。原创 2023-11-22 02:05:53 · 1593 阅读 · 2 评论 -
如何用c语言写一个关机程序?
首先关机程序要用到关机代码,system执行系统命令的函数,使用前需要引用头文件,关机的函数的头文件是#include stdlib.h,还需要输入关机指令和关机指令,分别是shutdown -s -t 60,shutdown -a,要注意指令见的空格,不然会出现。这样的错误,然后,关机的程序可以用到gaoto语句和whlie循环, 开始首先我们要存一个数组,用来保存字符串,密码可以自己设置。这是while循环,注意break在上面括号里面,打代码的时候打错了,注意一下。以上就是关机程序的设计了。原创 2023-10-24 15:08:58 · 187 阅读 · 1 评论 -
递归和尾递归(用C语言解斐波那契和阶乘问题)
什么是尾递归很多人都对递归有了解,但是为尾递归很少,所以这次来专门讲一讲关于尾递归的一些问题。什么是尾递归如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。因为在一些题目的做法中,我们可以发现递归的使用有局限性,有时候会占用相当大的空间。比如斐波那契问题,代码很容易用递归去写,但是浪费了大量的内存,一个数会重复计算多次,所以我们来使用尾递归。这里引用一个我看别人说的一句话,我认为非常对普通递归的结果是返回值,尾递归的结果是参数。完全可以这样理解。原创 2024-01-24 21:49:48 · 1012 阅读 · 7 评论 -
c语言表达式隐式类型转换
是因为c语言的语法,隐式类型转换:整行提升,为了获得精度,表达式的字符和短整形操作数在使用之前会被转换为普通的整行。我们一步一步的来首先我们知道数字都是存的2进制的补码,正数的补码反码原码是一样的,负数是用就是加一,按位去反。首先是这样,然后因为要算c,ab是char类型,所以使用是整形提升了,整形提升是按照变量的数据类型的符号来提升的,char是一个字节8个bit位,int是4个字节,32个bit位。然后取出c它是字符,一开始是100000010,在整形提升,因为是负数所以补1,做补反原换算。原创 2023-11-14 01:14:19 · 337 阅读 · 2 评论 -
C语言猜数字升级版
/意思是输出字符串s,但至少占10个位置,不足的在字符串s左边补空格,这里等同于printf ("%10s", s);c语言中的system()函数主要用于发出一个DOS命令,该函数已经收录在标准c库中,可以直接调用。猜数字是一种益智游戏,既可以两个人一起玩,也可以与电脑一起玩。现在我们需要将这个游戏移到电脑上,让电脑与我们一起玩猜数字游戏..shutdown -s -t关机指令..然后在网上搜的参数,去实现的爱心。我们这里主要就都了两个点,原创 2023-12-12 02:50:10 · 1237 阅读 · 6 评论 -
如何用c语言判断字符是不是字母
你会发现你输入一个字母会给两个判断,这就是getchar的用法不清楚导致的,该函数一次只能读取一个字符,但只在键盘上输入一个字符(回车外)时,getchar()函数读不到任何字符,只有按下回车之后getchar()函数才会真正读取字符。这样就能达到预期的效果了,我们还可以利用库函数的方式来实现这个题目,isalpha是专门判断一个字符是不是字母的,是字母返回非0值,只不是字母就会返回零值,使用前需要引一个头文件,ctype.h之后也可以达到效果。键盘上按下的回车键当做一个字符来处理,不会被忽略。原创 2023-11-05 13:18:34 · 930 阅读 · 2 评论 -
如何用c语言实现扫雷游戏
假设我们排查了某 一个位置后,这个坐标处不是雷,这个坐标的周围有1个雷,那我们需要将排查出的雷的数量信息记录存储,并打印出来,作为排雷的重要参考信息的。这个是我检测雷的方法,然后我设置了,他是返回为一个数,然后就是胜利的判断条件,首先我们得让坐标合法就是我们输入坐标,必须在这个表格中注意是9×9的表格,不是11×11的表格,然后来进入如何设置变量WIN用while循环当他小于阶数x雷数的话,那么就必须一直循环下去证明这个游戏还没有结束,如果在我的布置雷的表格中被炸死了,那就告诉你被炸死了,并且把我布置雷。原创 2024-01-23 01:09:56 · 1004 阅读 · 9 评论 -
如何用c语言来判断素数
先用穷举法的思想,来把100到200的数字一个一个的列举出来,所以先用一个大的for循环来循环100到200之间的次数,然后里面在嵌套一个for循坏来表示100到200之间的数字,然后如果在i之前存在i摸j为0则他不是素数,但是如果j等于i是说明这就是素数,在记录。首先要知道什么是素数,就是素数的定义,素数一般指质数。这样直接省去大部分计算时间,如果一个数,在他的开平方数之前都找不到的话,那么他一定就是一个素数,比如16等于4乘4,在4之前会有2。然后优化方法,就是不在一一举例,因为这样太好时间了。原创 2023-12-09 14:26:48 · 549 阅读 · 3 评论 -
第一次写博客,c语言99乘法表
9乘9乘法口诀表,说到这个乘法口诀表,我们肯定想起c语言中的循环语句,在这里演示的是for循环,口诀表由1开始到9结束,由于每一列由开始的数,一直乘到本身的数,所以这里采取2个for循环来表达。还要注意i乘j的顺序不能写错,不然会不美观,但是现在的打印结果也十分混乱,这里就要注意一个细节,%d X %d = %d,若为2d,则打印2位,不够用空格对齐,我们叫做右对齐。但是还是不美观,最后的注意就是%d X %d = %-2d的前后要加上空格键,打印出来才会数字之间不相连。同理,若为-2d则为左对齐。原创 2023-10-18 01:34:26 · 273 阅读 · 2 评论 -
如何用c语言使多个字符从两边移动,向中间汇聚
然后了采用while循环来一步一步的靠近,让arr1的左边成arr2的左,让arr1的右变成arr2成右,左边下标等于右边下标就停止,这边打印出来如果不停顿的话就会非常快,所以我们让他在停顿一下,利用库函数Sleep,就可以实现了,需要应用头文件windows.h,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);sytem执行计算机系统命令的函数cls是清空屏幕的意思,最后左边加加,右边减减就可以了不断向中间推进。最好打印出结果就可以了。原创 2023-11-01 00:24:03 · 414 阅读 · 1 评论 -
指针的经典笔试题
经典的指针试题,让你彻底理解指针前言之前对于指针做了一个详解,现在来看一些关于指针的经典面试题。再次说一下数组名数组名通常表示的都是首元素的地址,但是有两个意外,1.sizeof(数组名)这里数组名表示整个数组,计算的是整个数组大小。2.&数组名,这里的数组名表示的依然是整个数字,所以取地址取出的是整个数字的地址。注意:数组传参的本质是首元素的地址,所以形参访问的数组和实参的数组是同一个数组。一原创 2024-02-16 22:20:41 · 1172 阅读 · 14 评论 -
保姆级的指针详解(超详细)
整形指针是用来存放整形地址的指针,字符指针是用来存放字符地址的指针,所以说数组指针就是用来存放数组地址的指针。就是指向函数的一个指针,对于函数来说,取地址函数名和函数名都是函数的地址。他的定义方法是(返回类型) (*p) (参数)。定义: int (*pf3) (int x, int y)因为我的能力也有限,在此只能补充一个定义,首先他肯定是指针,然后他是指向函数指针数组的。原创 2024-02-02 05:01:39 · 1050 阅读 · 18 评论 -
消失的数字(c语言多种解法)
该题目取自力扣(LeetCode)面试题 17.04. 消失的数字该题目主要考察时间复杂度的把握,题目如下:数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?示例 1:输入:[3,0,1]输出:2示例 2:输入:[9,6,4,2,3,5,7,0,1]输出:8最后所以的源码放在最后。原创 2024-01-29 02:00:33 · 865 阅读 · 11 评论