C语言基础语法
主要介绍了C语言的基本语法知识以及用C语言实现一些简易的程序
roboko_
这个作者很懒,什么都没留下…
展开
-
按位与判读数字补码中1的个数
给定一个十进制数,将其与1按位与,若结果的末位为1则说明原十进制数末位必为1.再用移位操作符将十进制数的上一位变成末位,循环进行。原创 2023-09-30 20:22:27 · 37 阅读 · 0 评论 -
写个简易控制台阉割版扫雷游戏
接下来问题是如何统计一个位置周围雷的个数,一种方法可以是,遍历这个位置周围的元素,若为'1',则加1,这种方法还需要判断这个位置是否在边界,比较麻烦。我们知道'1'-'0'==1,'2'-'0'==2,字符1减字符0等于数字1,那么我们只用计算'0'周围'1'数量就可以了,将选择的位置周围元素全部相加再减去7*'0',就得到了周围的雷数。接下来会在里面随机的生成若干个雷,并且需要统计某个'*'周围的雷个数。这样的'0','1'棋盘与'*'棋盘中的'*'一一对应,可以得出每个'*'周围的雷数。原创 2023-11-01 21:24:14 · 69 阅读 · 1 评论 -
按位运算符
整数以补码形式存储。正数原码,反码,补码相同。(首位均为符号位,1为负数,0为正数)a与b按位异或后得到的值,只要再与a或b中的任意一个运算就能得到另一个。原码最左边符号位不变,其他位按位取反,得到反码,反码加一得到补码。利用按位异或,可以不定义临时变量的交换两个变量的值。|按位或,有一个为真即为真,都为0才为0。&按位与,同为真才为真,否则为0.^按位异或,相同则取0,不同则为1。这些运算值适用于整数(正负皆可)。原创 2023-09-30 18:47:47 · 41 阅读 · 0 评论 -
指针知识点归纳
cpu如果想要访问某一块内存空间,就需要让cpu知道这是哪一块内存空间,由此需要对内存进行编址,将内存划分为一段段的小空间。指针变量就是接收这种地址编号的变量。cpu和内存之间传递数据,可以理解为用“线”来传递。简单理解,32位机器有32根地址总线,每根线表达“电脉冲有无”也就是0,1。因此32位机器上给内存编号,最多有32个bit位,也就是4字节。同理64位机器上编号最多为64字节。所以在32位机器上,指针变量大小为4字节,64位机器上,指针变量大小为8字节。原创 2023-11-25 16:04:35 · 97 阅读 · 4 评论 -
控制台简易程序——贪吃蛇
在控制台中实现一个简易的贪吃蛇小程序,蛇体可用●代替,作为边界的墙体用□表示,食物用★表示。最终效果如下同时实现蛇的移动,吃食物的反馈,以及游戏结束条件判断。原创 2024-01-31 22:14:45 · 2462 阅读 · 3 评论 -
C语言统计整型数组中每个元素出现次数
给定一个整型数组,可以先将其排序再用一个两列的二维数组存放每个数以及出现的次数。count数组中确实存放了1以及1出现的次数。原创 2023-11-23 12:14:55 · 748 阅读 · 0 评论 -
C语言内存函数
该函数作用类似于strcpy,函数声明如下从source地址拷贝num个字节的数据到destination地址处,这个函数强大之处在于不限制数据类型,可以是整型,浮点型,也可以是结构体。用法如上。结果是但是这个库函数,在C语言该函数是处理两块内存空间没有重合的情况,也就是说像这种用法尽量避免。但是也许在你的编译器上他是可以正常运行,这个可能是因为你所使用的编译器对其进行了优化。原创 2023-11-30 22:19:12 · 38 阅读 · 0 评论 -
整数和浮点数在内存中的存储
整数在存储成二进制数时,二进制数的最高位是符号位,为0时表示正整数,为1时表示负整数。原创 2023-12-03 22:58:30 · 54 阅读 · 2 评论 -
unsigned char可以匹配的占位符
unsigned char的大小为一个字节,想让它输入或输出一个整型可以使用%hhu,%hhu的大小是一个字节。原创 2023-10-18 16:30:41 · 117 阅读 · 1 评论 -
数组名与取地址字符
与scanf("%c",&arr[0]);而&arr取的是整个数组的地址,但数值与首元素地址相等。数组名是数组首元素的地址。原创 2023-09-28 13:10:51 · 37 阅读 · 0 评论 -
移位操作符
11111111111111111111111111111111,这个补码就是结果,将其转化为原码即可达到答案。原码为10000000000000000000000000000001,即为-1.对于这段代码,先写出a的原码,int类型占32bit,a为负数则首位为1。>>补码右移相应位数,右边丢弃,左边补上原符号为即可。反码(首位符号位,其他位按位取反)再将补码右移一位,首位为符号位。原创 2023-09-30 19:15:48 · 43 阅读 · 0 评论 -
辗转相除法
两个数a,b,用a除以b,再把b赋给a,余数赋给b,重复直至余数为0,则此时除数就是两个数的最大公因数,代码如下。辗转相除法可以用来计算两个数的最大公因数。原创 2023-10-12 20:30:45 · 53 阅读 · 0 评论 -
结构体基础回顾
结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。这个结构体的类型就是struct stu,要用该结构体声明变量时,要使用struct stu声明。要访问结构体中的成员,需使用'.'操作符或者这么写。原创 2023-12-04 14:28:53 · 393 阅读 · 1 评论 -
能排序任意数据类型数组的冒泡排序的实现
C语言中有一个库函数qsort,可以实现对任意类型数组进行排序,其函数声明如下其中base是数组首元素地址,num是无符号整型,意为数组元素个数,size是数组元素中每个元素的大小,单位为字节,而最后一个是一个函数指针,指向的函数会告诉计算机比较两元素的方法,比如比较两个结构体的大小,不能直接想1<2那样简单的直接比较,可以根据结构体中的元素进行比较,比如这个结构体,可以比较age得出两个结构体之间的大小关系,也可以比较name字符串得出二者大小关系。原创 2023-11-24 12:33:39 · 56 阅读 · 1 评论 -
C语言分支循环语句
这段代码想表达的是c不等于+,-,*,/中的任何一个时就是取余运算,但是,最后效果并非如此,else会与离else最近且未匹配的if匹配,所以这题输入不是'/'就会走else。后跟一条语句即可,需要注意的是,if后只有一条语句会生效,如果要使多个语句生效,需要使用{}将语句括起来。有一点要注意,当有多个if语句并列时,else会与离else最近且未匹配的if匹配,比如。if(表达式)表达式结果为真就执行下面的语句,为假则不执行,0为假,非0为真。就像这样,c被赋值了'w',但也输出了余数。原创 2023-10-25 14:36:24 · 90 阅读 · 2 评论 -
一道很离谱的坑题
事实上,这道题的情况非常特殊,因为i的地址恰好与arr[0]的地址相差12,而其他很多情况下,i与arr[11]之间会有空隙,这样都无法造成死循环的结果。而这种巧合的出现,是依赖于VS2022、X86、Debug这种特定的环境。可以看到bug的产生是多么无孔不入,但凡换个环境,都不会死循环。原创 2023-11-12 21:56:04 · 77 阅读 · 3 评论 -
十进制数转化为二进制数
给定一个十进制数,将其不断除以2,直到商为0,将其余数从后向前依次排列,得到对应的二进制数。原创 2023-09-30 19:51:15 · 72 阅读 · 0 评论 -
如何输入带空格的字符串
C语言中可以用%s格式来输入字符串,但是他却不能输入带空格的字符串,一旦scanf读入到了空格,就会停止读入,像这样。这样就能输入带空格的字符串,只不过我们的这个字符串结尾是空格不是反斜杠零。虽然输入了ad 21,但是读到空格就结束了。可以用下面的代码解决。原创 2023-11-12 21:01:44 · 261 阅读 · 0 评论