![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
文章平均质量分 77
c语言知识汇总
搞点夜点心
这个作者很懒,什么都没留下…
展开
-
初识c语言
编译时,注释会被替换成⼀个空格,例如:min/* 这⾥是注释*/Value 会变成 min Value,而不是minValue。注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。注释是给程序员⾃⼰,或者其他程序员看的。原创 2023-07-23 16:54:36 · 54 阅读 · 0 评论 -
分支和循环(1)
以下主要讲的是控制语句。原创 2023-07-24 19:23:50 · 52 阅读 · 0 评论 -
C语言数据类型和变量
Bool的取值为使用_Bool需要引用头文件#include原创 2023-07-25 18:55:46 · 43 阅读 · 0 评论 -
分支和循环(2)
说明了while中的break是用于永久终止循环的。原创 2023-07-26 15:38:01 · 44 阅读 · 1 评论 -
分支和循环(3)-----寻找素数代码的实现以及优化
写一个代码打印100~200之间的素数原创 2023-07-29 18:35:46 · 61 阅读 · 0 评论 -
分支和循环(4)------猜数字游戏的实现
程序中在调⽤ rand 函数之前先调⽤ srand 函数,通过 srand 函数的参数seed来设置rand函数⽣成随机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。本次改进主要是加入了count进行计数,通过while的控制,使得函数达到有限次数的效果。原创 2023-07-30 11:41:30 · 45 阅读 · 1 评论 -
数组的初识
在C99标准之前,C语⾔在创建数组的时候,数组⼤⼩的指定只能使⽤常量、常量表达式。的,假设数组有n个元素,最后⼀个元素的下标是n-1,下标就相当于数组元素的编号。存放在数组的值被称为数组的元素,数组在创建的时候可以。所以我们得出结论:数组在内存中是连续存放的。如果我们把⼀维数组做为数组的元素,这时候就是。的新特性,允许我们可以使⽤变量指定数组⼤⼩。,⼆维数组作为数组元素的数组被称为。C语⾔规定数组是有下标的,下标是。所以⼆维数组中的每个元素都是。,⼆维数组以上的数组统称为。但是变长数组不能进行。原创 2023-08-01 12:05:05 · 46 阅读 · 1 评论 -
函数的初识
ret_type fun_name(形式参数) {ret_type是函数返回类型fun_name是函数名括号中放的是形式参数{}括起来的是函数体函数的声明一般出现在函数使用之前,需要先声明再使用定义也是特殊的声明。原创 2023-08-01 13:52:20 · 45 阅读 · 1 评论 -
数组和函数实践:扫雷游戏
初始界面排雷界面失败界面首先创建三个文件:游戏的实现分为主要几个部分:接下来一步一步介绍该部分全都在test.c文件中实现,我们的思路为:首先要先出现菜单界面提示玩家进行选择,进行游戏还是退出游戏,接着根据相应的选择做出相应的反应。该游戏还可连续进行游玩。由此我们可以想象到最外层用do…while循环,做到一开始选择的连续性,对选择做出反应则就要用到switch循环。通过这些想法,我们可以得到以下代码:test.c完成之后便是这样的界面首先需要创建两个二维数组,一个实现雷的放置,计算雷达数量原创 2023-08-02 15:27:48 · 44 阅读 · 0 评论 -
函数的递归
递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是。代码会陷⼊死递归,导致栈溢出。原创 2023-08-04 21:16:59 · 44 阅读 · 1 评论 -
递归的两个实例————汉诺塔问题以及青蛙跳台阶问题
一只青蛙可以一次跳 1 级台阶或一次跳 2 级台阶, 问要跳上第 n 级台阶有多少种跳法?原创 2023-08-05 17:15:12 · 93 阅读 · 1 评论 -
操作符详解
例如:12的二进制就是1100。原创 2023-08-21 20:29:35 · 42 阅读 · 1 评论 -
操作符的实例
a+baa-baba-bba123最终实现a,b值的交换a=a ^ bb ^ b=0b=aa=a ^ bb=aa ^ a=0a=b。原创 2023-08-23 23:27:22 · 37 阅读 · 0 评论 -
深入学习指针(1)
例如:原创 2023-08-24 16:57:45 · 41 阅读 · 1 评论 -
深入学习指针(2)
思路:假设需要进行升序的冒泡排序,arr[10]={3,1,7,5,8,9,0,2,4,6},共有10个数字,在第一趟排序中需要进行9次比较,最后将最大的数字放在最后一位,第二次只需进行8次比较即可,将第二大的数放在倒数第二位……直到第九次排序将最小的一位放在第一位结束排序。数组名就是数组⾸元素(第⼀个元素)的地址是对的,但是有两个例外:。存放指针变量地址的指针。原创 2023-08-25 16:39:53 · 45 阅读 · 1 评论 -
深入指针学习(3)
⼆维数组起始可以看做是每个元素是⼀维数组的数组,也就是⼆维数组的每个元素是⼀个⼀维数组。那么⼆维数组的⾸元素就是第一行,是个⼀维数组。所以,根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第一行的地址,是⼀维数组的地址。代码二:首先signal函数有两个参数分别为int和void(*)(int)的函数指针,该函数指针指向的函数参数是int,返回类型是void。typedef 是⽤来类型重命名的,可以将复杂的类型,简单化。指针数组是⼀种数组,数组中存放的是地址(指针)。原创 2023-08-26 15:46:03 · 34 阅读 · 0 评论 -
深入学习指针(4)
回调函数就是⼀个通过函数指针调用的函数。使⽤回调函数,模拟实现qsort(采⽤冒泡的⽅式)。由此我们可以大致知道qsort函数的用法。原创 2023-08-27 16:26:54 · 44 阅读 · 1 评论 -
深入指针学习(5)
计算变量所占内存内存空间⼤⼩的,单位是。在学习操作符的时候,我们学习了。,所以可能存在越界查找。原创 2023-08-28 18:00:27 · 44 阅读 · 1 评论 -
指针运算笔试题解析
因为上个代码并没有改变cpp的地址,因此一开始cpp指向的还是cpp+2,在-1后指向cpp-1,就是cp[c+2],-1后就是cp[c+1],也就是NEW,+1后就是EW。p的类型为整型类型的数组指针,&p[4][2]==&(&(p+4)+2),也就是跳过4*4+2=18个字节到图中蓝色涂鸦的位置。*(ptr1 -1),因为ptr1为整型指针,-1表示后退一个元素,也就是a[1][4]=10。(*(aa+1))aa表示首元素地址,也就是aa[0],+1后就是aa[1]pa++后pa存放的就是a的地址。原创 2023-08-29 16:24:46 · 48 阅读 · 1 评论 -
字符函数和字符串函数
C语⾔中有⼀系列的函数是专门做字符分类的,也就是⼀个字符是属于什么类型的字符的。strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来。那么如何判断两个字符串?⽐较两个字符串中对应位置上字符ASCII码值的大小。例如:写⼀个代码,讲字符串中的小写字母转大写,其他字符不变。相当于优化上述程序的打印过程,直接将错误信息打印出来。//将参数传进去的小写字母转大写。//将参数传进去的大写字母转小写。原创 2023-09-02 20:35:14 · 63 阅读 · 0 评论 -
C语言内存函数
memset是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容。原创 2023-09-03 22:53:36 · 43 阅读 · 0 评论 -
数据在内存中的存储
大端(存储)模式:是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。原创 2023-09-05 20:12:20 · 39 阅读 · 0 评论 -
⾃定义类型:结构体
位段的成员必须是int、unsigned int 或signed int,在C99中位段成员的类型也可以选择其他类型。位段的成员名后边有⼀个冒号和⼀个数字。int _b : 5;原创 2023-09-11 19:02:00 · 37 阅读 · 0 评论 -
自定义类型:联合和枚举
联合的成员是共⽤同一块内存空间的,这样⼀个联合变量的大小,至少是最大成员的大小(因为联合。写⼀个程序,判断当前机器是大端,还是小端。这就充分说明联合体是共用一个空间的。⾄少得有能力保存最大的那个成员)。中的内容是枚举类型的可能取值,也叫。原创 2023-09-13 19:31:42 · 43 阅读 · 0 评论 -
动态内存管理
栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。堆区(heap)动态内存分配,⼀般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。分配⽅式类似于链表。数据段(静态区)(static):存放全局变量、静态数据。程序结束后由系统释放。代码段:存放函数体(类成员函数和全局函数)的。原创 2023-09-20 19:57:53 · 36 阅读 · 0 评论 -
C语言文件操作
磁盘上的文件是文件。程序文件、数据文件(从文件功能的⻆度来分类的)。功能函数适用于fgetc字符输⼊函数(一次读取一个字符)所有输⼊流fputc字符输出函数(一次写入一个字符)所有输出流fgets⽂本⾏输⼊函数(一次读取一行字符)所有输⼊流fputs⽂本⾏输出函数(一次写入一行字符)所有输出流fscanf格式化输⼊函数所有输⼊流fprintf格式化输出函数所有输出流fread⼆进制输⼊⽂件fwrite⼆进制输出⽂件。原创 2023-09-27 19:37:27 · 57 阅读 · 0 评论 -
编译和链接
编译过程就是将预处理后的文件进行一系列的:词法分析、语法分析、语义分析及优化,生成相应的。将源代码程序被输⼊扫描器,扫描器的任务就是简单的进行词法分析,把代码中的字符分割成⼀系列。汇编器是将汇编代码转转变成机器可执⾏的指令,每⼀个汇编语句几乎都对应⼀条机器指令。静态语义分析通常包括声明和类型的匹配,类型的转换等。链接是⼀个复杂的过程,链接的时候需要把⼀堆文件链接在⼀起才⽣成可执行程序。据汇编指令和机器指令的对照表⼀⼀的进行翻译,也不做指令优化。在ANSI C的任何⼀种实现中,存在两个不同的环境。原创 2023-10-05 20:07:54 · 37 阅读 · 0 评论 -
预处理详解
C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。__FILE__ //进⾏编译的源⽂件(文件名)__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义(在VS中未定义)1000register//为 register这个关键字,创建⼀个简短的名字for;;//⽤更形象的符号来替换⼀种实现break;case。原创 2023-10-06 20:01:23 · 42 阅读 · 0 评论 -
c语言知识的补充
表达式的值与某个常量表达式的值相等,则执行该常量表达式后的所有语句段(包括default中的语句段)。不返回结果的函数定义中,void不能省略,否则,函数类型就会变成int。(本博客的知识点会比较分散,并会不断的持续更新)头文件:#include原创 2023-10-14 20:27:02 · 46 阅读 · 0 评论 -
错题集(c语言)
思路:第一次循环开始前:x=30,y=0,结束:x=15,y=2第二次循环开始前:x=14,y=3,结束:x=7,y=5第三次循环开始前:x=6,y=6,(由于判断语句中的符号为“,”因此还会进入循环),结束:x=3,y=8第四次循环开始前:x=2,y=9,结束:x=1,y=11第五次循环开始前:x=0,y=12,不满足判断语句,退出循环。x=0,y=12注意“=”最后执行,因此答案为:原创 2023-11-18 19:28:15 · 184 阅读 · 0 评论 -
编程100题(1)
输⼊三个整数a,b,c,判断由a,b,c作为三条边组成的三⻆形,如果不能组成三⻆形则输出:⾮三⻆形;如果是三⻆形,再继续判断,如果是等边三⻆形,则输出:等边三⻆形;如果是等腰三⻆形,则输出:等腰三⻆形;否则输出普通三⻆形。外层利用for循环遍历100 ~ 200,内部再增加一个for循环用于判断外层循环的数是否为素数,素数是指只能被1和它本⾝整除的正整数。进行多组输入,判断两边之和是否大于第三边,否:非三角形,是的话还要接着判断三边是否相等,两边是否相等,从而判断是等腰三角形,等边三角形和普通三角形。原创 2023-09-07 19:53:37 · 50 阅读 · 0 评论 -
编程100题(3)
输⼊⼀个字符串,将字符串中⼤写字⺟全部转为⼩写字⺟,⼩写字⺟转成⼤写字⺟,其他字符保持不变。输⼊2个整数,调⽤⾃定义函数Swap,完成2个整数的交换。该程序本身不难,只需注意:函数传参时只是一份临时拷贝,在函数结束后便会销毁,因此需要传址而不是简单的传值。⽔已知1瓶汽⽔1元,2个空瓶可以换⼀瓶汽⽔,输⼊整数n(n>=0),表⽰n元钱,计算可以多少汽。输⼊⼀个整数n,打印对应2*n-1⾏的菱形图案,⽐如,输⼊7,输出如下图案,图案总共13⾏。写⼀个代码打印1~100000之间的所有的⾃幂数,中间⽤空格分隔。原创 2023-09-13 18:36:40 · 49 阅读 · 0 评论 -
编程100题(2)
计算 1/1 - 1/2 + 1/3 - 1/4 + 1/5 - …+ 1/99 - 1/100 的值,并打印出结果,(注:除法分为整数除法和浮点数除法,要计算出⼩数,得采⽤浮点数除法,浮点数除法的操作数中⾄少要保证有⼀个浮点数。输⼊10个整数,写代码找出其中最⼤值和最⼩值,计算最⼤值和最⼩值的差,并打印出差值结果。输⼊:-1 -2 -3 -4 -5 -6 7 8 9 10。输⼊:1 2 3 4 5 6 7 8 9 10。输⼊:10 9 8 7 6 5 4 3 2 1。原创 2023-09-11 19:59:44 · 51 阅读 · 0 评论 -
编程100题(4)
输⼊⼀个字符串(字符串⻓度⼩于等于30,中间不包含空格),使⽤Strlen函数可以求字符串的⻓度,并返回。写⼀个函数Strlen,可以求字符串⻓度,注:字符串的结束标志是 \0 .输⼊⼀个字符串(字符串⻓度⼩于等于30,中间不包含空格),使⽤Strlen函数可以求字符串的⻓度,并返回。输⼊2个整数m和n,写⼀个函数average,求2个整数的平均值,考虑整数过⼤溢出的问题。输⼊⼀个字符串,写⼀个函数将⼀个字符串的内容逆序过来。输⼊⼀个整数m,求这个整数m的每⼀位之和,并打印。输⼊:abc defghi。原创 2023-09-19 20:05:27 · 34 阅读 · 0 评论 -
编程100题(5)
写⼀个函数my_strcpy,实现拷⻉字符串的功能,假设给定⼀个字符数组a,再给定⼀个字符数组。输⼊包含三⾏,第⼀⾏包含两个正整数n, m,⽤空格分隔。先输⼊10个整数存放在数组中,再输⼊⼀个整数n,删除数组中所有等于n的数字,数组中剩余的数。输出为⼀⾏,输出⻓度为n+m的升序序列,即⻓度为n的升序序列和⻓度为m的升序序列中的元素重。输⼊⼀个字符串,判断这个字符串是否是回⽂字符串(字符串的⻓度⼩于等于30,字符串不包含空。输⼊y和m两个整数,y表⽰年份,m表⽰⽉份,计算y年m⽉有多少天,并输出天数。原创 2023-09-29 19:55:53 · 44 阅读 · 0 评论 -
编程100题(6)
你需要将摄⽒度转换为 开⽒度(Kelvin)和 华⽒度(Fahrenheit),并以数组 ans = [kelvin,fahrenheit] 的形式返回结果。输⼊的guess数组为小A 每次的猜测, answer 数组为小B 每次的选择。解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8。• 示例 1: 输⼊:guess = [1,2,3], answer = [1,2,3]输⼊:guess = [2,2,3], answer = [3,2,1]原创 2023-10-03 20:04:23 · 33 阅读 · 0 评论 -
编程100题(7)
给你⼀个字符串 s 和⼀个字符 letter ,返回在 s 中等于 letter 字符所占的 百分⽐ ,向下 取整到最接近的百分⽐。解释: 对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。解释: nums 的元素和是 1 + 15 + 6+ 3 = 25。nums 的数字和是 1 + 1 + 5 + 6 + 3 = 16。解释: nums 的元素和是 1 + 2 + 3 + 4 = 10。对于 nums[4]=3存在三个比它小的数字:(1,2 和 2)。原创 2023-10-07 23:18:56 · 55 阅读 · 0 评论