![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
文章平均质量分 87
c语言
小C您好
无限进步,无限创新
展开
-
c刷题【五】
逻辑推断题,可以利用穷举法, 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。说对一半可以译为1+0 == 1,每位可以译为&&。对于乘号前面的数,可通过/10,/100...获取,乘号后面的数通过%10,%100...获取,结束条件是不超过当前位数。可以看到在输出结果时我添加了判断条件,是因为结果有多个名次重名了,因为遍历时并没有考虑名次占用问题,所以我们根据每个排名的。1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。已知3个人说了真话,1个人说的是假话。原创 2023-09-24 17:22:40 · 74 阅读 · 1 评论 -
指针笔试题
的空间,所以会崩溃。原创 2023-10-03 15:18:43 · 142 阅读 · 3 评论 -
自定义类型
(16位机器最大16,32位机器最大32,写成27,在16位机 器会出问题。前面我们讲了结构体的基本知识,还有一些知识并没有罗列完全,这篇将结构体剩余的一些小知识铺垫出来。可以看到,即使内部有相同类型也无法被编译器识别,且脱离结构体定义匿名结构体也是非法的。正确做法是用一个指针去接收结构体的地址,这种结构就是我们数据结构中链表的结构。嵌套的结构体应对齐到自身最大对齐数的整数倍处,该结构体的最大对齐数也就是作为。注意匿名结构体的生命周期只有声明这一行,且不同匿名结构体的类型都是不同的。原创 2023-10-12 21:40:43 · 148 阅读 · 2 评论 -
数据在内存中的存储
其实可以理解为我们站队时按从低到高还是从高到低排序,每个内存单元以字节为单位,超过一个字节就会出现如何安排字节的问题,所以就有了大小端。第二种情况我们通过分析,全为0时E = -127, 已经是一个极其小的数,还原时不再加上第一位的1,而是还原成0.xxxx的小数(这意味着,如果E为8位,它的取值范围为0~255;大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中。原创 2023-09-14 21:29:11 · 111 阅读 · 1 评论 -
c指针进阶
作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。对于int*类型的数据,我们可以通过它的偏移量遍数据,而void*类型的数据无法获取具体偏移量,我们又想到,数据在内存中存放的单位是字节,我们可以通过。当函数返回值>0时,表示p1大于p2,当函数返回值原创 2023-09-21 19:44:20 · 76 阅读 · 0 评论 -
c刷题(四)
这道题可以用switch case语句解,不过这道题更简单的方法是,关键点在于判断是否为。判断闰年和2月可以合并成一条语句用&&操作符连结,将数组下标0设置成0与月份对应,也可以添加断言是程序更加健壮。原创 2023-09-13 20:55:18 · 513 阅读 · 3 评论 -
动态内存管理
成员可以设置成。原创 2023-10-16 19:54:17 · 99 阅读 · 1 评论 -
c刷题[6]
我们可以一个数据一个数据地读入并执行相关操作,直到输入个数为要求的个数时再进行结果输出,缺陷就是必须输入完一组数据得。有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。规律:每行第一个元素和最后一个元素为1(主对角),从第三行开始,中间元素等于左上方元素和正上方元素相加。如果我们想一次性返回多个值,不如传递实参的地址过去,通过返回型参数实现多个值的返回。写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。方法一:使用pow函数。原创 2023-10-17 19:44:38 · 184 阅读 · 0 评论 -
C语言【文件】
所谓文件缓冲区,就是在使用文件时,系统会为每个文件分配一块缓冲区用于存放数据,当内存向磁盘中传输数据或当磁盘向内存中传输数据的时候,这些数据会一个一个被加载到缓存区上,再一齐被加载到内存或磁盘上。有时后我们会将文件输出到磁盘上,在需要的时候再从磁盘上把数据读取到内存中使用。对于整数10000,以ASCII码存储为5个字节,而二进制存储只占4和字节。每个被使用的文件都在内存中开辟了一个相应的。中以二进制的形式存储,如果不加转换的输出到。函数的返回值直接用来判断文件的是否结束。原创 2023-10-22 19:34:16 · 300 阅读 · 1 评论 -
程序的编译和链接
_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义vs不完全支持c标准,Linux下的gcc支持c标准。执行环境1.程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。2.程序的执行便开始。接着便调用main函数。原创 2023-10-25 21:18:13 · 459 阅读 · 1 评论 -
字符串和内存函数
第一个参数首次传递不为空,通过strtok函数找到指定分隔符位置后,将其替换成\0并记录下它的。加入循环条件,如果需要拷贝的源头字符串超过了自身长度可以考虑给多余的地方拷贝\0。功能:当函数调用失败时,将错误码(errno)转换成对应的错误信息或指向对应的地址。但这样做有个漏洞,一次性比较多个字符串势必有越界的情况,我们以。比较n个子串的大小,大于返回正数,小于返回负数,等于返回0。负责比较字符串,用一个指针去遍历目标数组,注意结束条件为。法二:四指针遍历法。功能:在一个字符串后面追加另一个字符串。原创 2023-10-06 18:50:12 · 119 阅读 · 3 评论 -
c语言——三子棋
三个文件:其中.cpp文件用于游戏具体函数设计,.h文件为游戏的函数声明,test.cpp文件用于测试游戏运行。原创 2023-08-08 18:22:31 · 1884 阅读 · 1 评论 -
c刷题(一)
25%12 = 1,12%1 = 0,1就是最大公约数。我们找到两个数中较小的那个,用它依次递减,如果能被这两个数整除,那它就是最大公约数。如果有一个数能被整除,那它就不是质数,反之是质数。这个没什么好说的,假定一个变量max遍历数组,选出最大值即可。要求:第一行输入printf的输出值,第二行输出printf的返回值。12%24 = 12,24%12 = 0,方法仍成立。大家想想是不是这样的道理,这样做可以减少遍历的次数。需要注意的是,这种办法改变了原变量的值。如果将这个数开平方,如果它不是素数,则在。原创 2023-07-30 20:33:42 · 509 阅读 · 0 评论 -
c语言操作符
由于0和任何数异或都为这个数本身(相异),而自己异或自己为0(相同),这使得我们交换数字是存在一种有趣的加密解密效应,但无疑使得代码可读性大大降低,所以一般不推荐这样交换数字。巧记:可以联想哲学道理:世界上没有两片相同的树叶,相同是悖论为0,相异为真理为1。像这样不知道哪一步该执行,不同编译器的处理也是不同的,所以我们书写代码的时候尽量。左移本身并没有改变a的值。按位与在遇到1结果为1,遇到0时结果为0,这样能区分0和1,异或也是同理。巧记:可以理解成||操作符,0||1为1 0||0为0。原创 2023-08-13 19:09:36 · 195 阅读 · 3 评论 -
[C初阶]循环和分支语句
我们结合本篇学的知识,用猜数字游戏做一个复习。domenu();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择!\n");break;while (n);return 0;接下来我们完善game函数要想实现猜数字这个功能,我们得需要电脑生成随机数,而rand是专门用来生成随机数的函数。原创 2023-07-22 20:19:35 · 125 阅读 · 0 评论 -
c语言——数组
可以发现,原来一行访问4个的数组现在一行访问五个,结合刚才图示的物理结构,二维数组也是连续存放的,所以会直接跳到下一行元素,导致一系列。的,而通过指针接收可以访问任意下标的成员,对比传整个数组,大大减少了空间的消耗。思路:N个数N趟,每一趟选出最大/最小的数放到最右边,直到完成升序/降序排序。一个长度为n的数组,如果它的下标等于或大于n,就称作数组越界。变长数组不能被初始化。需要注意的是,数组越界并不是总能被编译器检查出来的。是整个数组的地址(&arr[0]是首元素地址)注意区分\0,0,数字0和字符0,原创 2023-08-04 17:28:31 · 438 阅读 · 1 评论 -
c语言初阶指针
比较大小,不允许与。原创 2023-09-07 20:39:44 · 413 阅读 · 2 评论 -
c刷题(二)
如果在一些刷题网站上,我们可以直接使用变长数组初始化数组,如果不使用变长数组,可以直接设置数组大小为题目规定的最大长度即可。了,当左边的数变为右边时,先不急着将左边的数换到右边,而是在右边位置补上一个\0,然后指针+1,形成递归,这样交换的时候就。一般情况我们可以写个循环然后在用条件判断语句对两种情况进行判断,但这里有个更优质的办法,,长度就是4,递归一次后变为2,此后不满足递归条件,所以正确判断条件应该是。矩阵打印用二维矩阵,在里层输入矩阵的值,判断大于0的数进行累加。上图是递归的具体过程,从图可知,原创 2023-08-11 16:35:09 · 336 阅读 · 1 评论 -
c刷题(三)
line4:(,从左向右计算,结果为最后一个表达式)c=8,a=8,b=6(line5:a=8,c=8,+=优先级最低,先计算 a++ +c = 16,原创 2023-08-29 13:12:26 · 157 阅读 · 1 评论 -
c语言(函数)
实际很多情况我们不能靠库函数解决,所以就诞生了自定义函数,我们可以自己实现内部细节和功能。int z = 0;z = x;x = y;y = z;运行结果:为什么没有实现交换功能呢?我们可以看到它们的地址都不一样,所以没能实现交换,我们称传递的参数为实参,接收的参数为形参形参是实参的拷贝形参的建立与销毁只在调用函数的过程发生。所以它的交换只在函数体内。int z = 0;z = *x;*x = *y;*y = z;int b = 0;原创 2023-08-02 17:42:05 · 457 阅读 · 2 评论 -
c语言——结构体
/结构体声明struct Stu//名字int age;//年龄//性别int hight;//身高}s1,s2;//声明类型的同时定义变量s1,s2结构体的定义分为全局和局部两种形式,需要注意在声明结构体的时候定义的变量也是全局变量。//全局int main()//局部return 0;初始化就是定义变量的时候赋初值,类似数组,结构体可以用{}的方式赋初值。注意赋值顺序要与声明的结构体内部保持一致。顺序初始化。原创 2023-09-08 20:08:55 · 216 阅读 · 0 评论 -
c基础扫雷
和三子棋一样,主函数先设计游戏菜单界面,这里就不做展示了。原创 2023-08-10 16:13:57 · 3186 阅读 · 4 评论