C语言
文章平均质量分 80
C语言语法及操作
IfYouHave
这个作者很懒,什么都没留下…
展开
-
C语言小项目 -- 扫雷游戏完整代码(递归展开 + 选择标记)
扫雷是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。原创 2023-04-11 16:04:02 · 4074 阅读 · 2 评论 -
C语言小项目 -- 通讯录完整代码(登陆系统+动态开辟 + 文件操作)
📰0. 项目介绍使用C语言设计的一个,首先需要或者,进入通讯录管理界面,来实现联系人信息的长时间存储(包含姓名、性别、年龄、电话号码等),并且在需要时能够查找出相关联系人的信息。需要包含等功能。原创 2023-04-18 00:34:58 · 12330 阅读 · 1 评论 -
C语言:练习
例如,当字符串为We Are Happy ————》 We%20Are%20Happy。一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明。编写一个函数找出这两个只出现一次的数字。Number 4:模拟实现atoi。原创 2023-03-07 11:12:26 · 121 阅读 · 0 评论 -
C语言:程序环境和预处理
_func__ //获取执行所在函数__FILE__ //获取进行编译的源文件__LINE__ //获取文件当前的行号__DATE__ //获取文件被编译的日期__TIME__ //获取文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预定义符号都是语言内置的。举个栗子:int main()int i = 0;for (i = 0;i < 10;pf)原创 2023-03-06 15:36:28 · 178 阅读 · 0 评论 -
C语言:文件操作(2)
如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓 冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序 中每一个正在使用的文件开辟一块“因为有缓冲区的存在,C语言在操作文件的时候,需要做刷新缓冲区或者在文件操作结束的时候关闭文件。牢记:在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。2. 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。如果不做,可能导致读写文件的问题。原创 2023-03-04 22:43:03 · 132 阅读 · 0 评论 -
C语言:文件操作(1)
磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。原创 2023-03-02 19:12:20 · 249 阅读 · 0 评论 -
绝对路径和相对路径
1.相对路径和绝对路径都可相互转换,转换时候注意正确路径即可,作用在于有效链接路径。2.通常我们直接使用""代表从根目录开始的目录路径,这个叫绝对路径。3.填写目录时候以填写目录文件为参考,使用“../”或"./"指向上一级 或 使用"../../"指向上上一级叫相对路径。绝对路径,从根目录为起点到某一个目录的路径;相对路径,从一个目录为起点到另外一个的目录的路径。原创 2023-03-02 17:13:45 · 617 阅读 · 0 评论 -
C语言:动态内存管理(2)
有了这幅图,我们就可以更好的理解在《C语言初识》中讲的static关键字修饰局部变量的例子了。实际上普通的局部变量是在栈区分配空间的,栈区的特点是在上面创建的变量出了作用域就销毁。但是被static修饰的变量存放在数据段(静态区),数据段的特点是在上面创建的变量,直到程序 结束才销毁所以生命周期变长。原创 2023-03-02 14:44:16 · 91 阅读 · 0 评论 -
C语言:动态内存管理(1)
C语言提供了一个动态内存开辟的函数:这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己 来决定。果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。原创 2023-03-01 19:07:31 · 215 阅读 · 0 评论 -
C小节练习——1
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。原创 2023-03-01 15:34:45 · 102 阅读 · 0 评论 -
C语言:自定义类型:结构体,枚举,联合(2)
1.位段的成员必须是 int、unsigned int 或signed int。2.位段的成员名后边有一个冒号和一个数字。//位段struct AAint _a;int _b;int _c;int _d;//_a这个成员只占两个bit位就可以了int _b : 5;//_b这个成员只占五个bit位int main()//16个字节//8个字节return 0;根据场景,现实及需求,选择是否使用位段enum Day//枚举类型Mon,原创 2023-02-28 15:21:58 · 162 阅读 · 0 评论 -
C语言:自定义类型:结构体,枚举,联合(1)
/结构体变量的定义及初始化}s = {"C语言",55.5f,"CYN001"};int main()struct Book s2 = { "结构体",66.6f,"JGT001" };return 0;原创 2023-02-28 13:41:07 · 172 阅读 · 0 评论 -
C语言:字符函数和字符串函数(2)
1、strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。2、找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;3、如果未找到所搜索的字符串,则返回NULL。4.KMP更快捷算法//1.8 strstr 函数//功能是在一个字符串找另外一个字符串,看一个字符串是不是另外一个字符串的子串//返回str2第一次出现的地址,如果没出现,会返回空指针int main()char* pch;printf("找不到子串\n");原创 2023-02-27 20:33:04 · 180 阅读 · 0 评论 -
C语言:字符函数和字符串函数(1)
C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。字符串常量 适用于那些对它不做修改的字符串函数.字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )。参数指向的字符串必须要以 '\0' 结束。注意函数的返回值为size_t,是无符号的( 易错 )学会strlen函数的模拟实现//1.strlen _ 头文件string.h__求字符串长度。原创 2023-02-26 18:41:28 · 150 阅读 · 0 评论 -
C小节练习
n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。多组输入,一个整数(3~20),表示输出的行数,也表示组成三角形边的“*”的数量。输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。第二行输入N个整数,输入用空格分隔的N个整数。第二行包含n个整数,用空格分隔。原创 2023-02-26 15:51:39 · 84 阅读 · 0 评论 -
C语言:指针进阶(4)
【代码】C语言:指针进阶(4)原创 2023-02-26 12:36:58 · 166 阅读 · 0 评论 -
C语言:指针进阶(3)
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个 函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数 的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进 行响应。原创 2023-02-25 16:28:18 · 106 阅读 · 0 评论 -
C语言:指针进阶(2)
/代码2 void (*signal(int , void(*)(int)))(int);那要把函数的地址存到一个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?在写代码的时候难免要把【数组】或者【指针】传给函数,那函数的参数该如何设计呢?首先,能给存储地址,就要求pfun1或者pfun2是指针,那哪个是指针?当一个函数的参数部分为一级指针的时候,函数能接收什么参数?输出的是两个地址,这两个地址是 test 函数的地址。//代码1 (*(void (*)())0)();原创 2023-02-25 13:01:54 · 144 阅读 · 0 评论 -
C小节练习——2
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。每一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。每一行,输入7个整数(0~100),代表7个成绩,用空格分隔。针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。原创 2023-02-24 19:14:47 · 125 阅读 · 0 评论 -
C小节练习
水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列。Number 3:求两个数二进制中不同位的个数。例如:2+22+222+2222+22222。写一个函数返回参数二进制中 1 的个数。不允许创建临时变量,交换两个整数的内容。Number5:统计二进制中1的个数。原创 2023-02-24 15:29:21 · 87 阅读 · 0 评论 -
C语言:指针进阶(1)
数组指针是指针?还是数组?答案是:指针。我们已经熟悉: 整形指针: int * pint;能够指向整形数据的指针。浮点型指针: float * pf;能够指向浮点型数据的指针。那数组指针应该是:能够指向数组的指针。下面代码哪个是数组指针?//p1, p2分别是什么?//整形指针_是存放整型变量地址的,指向整型的指针//字符指针_是存放字符变量地址的,指向字符的指针//p1是数组名,10个元素,存放指针,指针数组//数组指针_指向数组的指针。原创 2023-02-22 16:50:49 · 162 阅读 · 0 评论 -
C语言进阶:数据的存储
char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数//C语言有没有字符串类型?vs采取小端存储模式什么大端小端:大小端字节序存储大端字节序(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址 中;原创 2023-02-21 18:01:27 · 155 阅读 · 0 评论 -
番外:调试技巧
第一次被发现的导致计算机错误的飞蛾,也是第一个计算机程序错误。参考资料:程序错误_百度百科 (baidu.com)Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。代码在Debug环境的结果展示:由Debug和Release版本空间大小可以看出来,Relase版本进行了优化所以我们说调试就是在Debug版本的环境中,找代码中潜伏的问题的一个过程。原创 2023-02-21 10:53:22 · 186 阅读 · 0 评论 -
C语言入门:结构体
结构体类型原创 2023-02-20 15:17:00 · 91 阅读 · 0 评论 -
函数栈帧的创建与销毁
前期学习的时候,我们可能有很多困惑?比如:1)局部变量是怎么创建的?2)为什么局部变量的值是随机值?3)函数是怎么传参的?传参的顺序是怎样的?4)形参和实参是什么关系?5)函数的调用是怎么做的?6)函数调用结束后是怎么返回的?知道函数栈帧的创建和销毁,也能搞懂后期更多的知识。使用环境是 vs2013 ,不使用太高级的编译器,越高级的编译器,越不容易学习和观察。同时在不同的编译器下,函数调用过程中栈帧的创建是略有差异的,具体细节取决于编译器的实现。原创 2023-02-20 13:30:50 · 123 阅读 · 0 评论 -
C语言入门:初阶指针
那我们就可以这样理解:内存指针变量我们可以通过&(取地址操作符)取出变量的内存其实地址,把地址可以存放到一个变量中,这个变量就是指针变量。原创 2023-02-19 15:20:49 · 92 阅读 · 0 评论 -
C语言入门:操作符
逻辑反操作- 负值+ 正值& 取地址sizeof 操作数的类型长度(以字节为单位)~ 对一个数的二进制按位取反-- 前置、后置--++ 前置、后置++* 间接访问操作符(解引用操作符)(类型) 强制类型转换原创 2023-02-19 11:56:42 · 159 阅读 · 0 评论 -
C小节练习
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。:将参数字符串中的字符反向排列,不是逆序打印。原创 2023-02-18 15:00:45 · 90 阅读 · 0 评论 -
C语言入门:数组
数组是一组相同类型元素的集合。原创 2023-02-17 16:51:12 · 163 阅读 · 0 评论 -
C语言入门:函数
自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间。原创 2023-02-17 13:55:11 · 109 阅读 · 0 评论 -
C小节练习——2
【代码】C小节练习。原创 2023-02-16 15:10:42 · 80 阅读 · 0 评论 -
C小节练习
在一个有序数组中查找具体的某个数字n(二分查找or折半查找)原创 2023-02-15 16:06:06 · 70 阅读 · 0 评论 -
C语言入门:分支与循环
C语句可分为以下五类1.表达式语句2.函数调用语句3.控制语句4.复合语句5.空语句本文主要为控制语句。原创 2023-02-15 13:26:43 · 115 阅读 · 0 评论 -
C生万物——初学C[1-2](2)
1.0——初识选择语句2.0——初识循环语句3.0——初识函数&&数组4.0——初识操作符5.0——初识常见关键字6.0——#define定义常量和宏 7.0——初识指针8.0——初识结构体原创 2023-02-14 14:55:57 · 173 阅读 · 1 评论 -
C生万物——初学C[1-2](1)
define 和 #include 一样,也是以“#”开头的。凡是以“#”开头的均为预处理指令,#define也不例外。#define又称宏定义,标识符为所定义的宏名,简称宏。标识符的命名规则与前面讲的变量的命名规则是一样的。#define 的功能是将标识符定义为其后的常量。一经定义,程序中就可以直接用标识符来表示这个常量。是不是与定义变量类似?但是要区分开!变量名表示的是一个变量,但宏名表示的是一个常量。可以给变量赋值,但绝不能给常量赋值。宏所表示的常量可以是数字、字符、字符串、表达式。原创 2023-02-13 15:35:02 · 140 阅读 · 1 评论 -
持之以恒,日益见长——计算机拐族人士
初次接触到CSDN,日后的博客更新中,望各位大佬多多指教,直白批评。本人学习方向定向为底端开发,万物根本——从C开始,加油吧!本人会持续每周输出日常学习由浅入深的记录和干货。也希望各位批阅者不吝其言,互相支持,互相关注。本人来自计算机科学与技术专业的一名拐生。原创 2023-02-13 09:25:33 · 88 阅读 · 0 评论