![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
文章平均质量分 83
zjruiiiiii
这个作者很懒,什么都没留下…
展开
-
程序的编译(预处理操作)与链接(含图解)
文章目录一、程序的翻译环境和执行环境二、编译与链接的详细过程1.翻译环境2.编译被分为的三个阶段3.运行环境三、预处理详解1.预处理符号2.#define(1) #define 定义标识符(2) #define定义宏(3) typedef与#define重命名的区别(4) #define替换规则(5) #和##(6) 带副作用的宏参数(7) 宏和函数对比3.#undef4.命令行定义5.条件编译6.文件包含(1) 头文件被包含的方式(2)嵌套文件包含四、其他预处理指令一、程序的翻译环境和执行环境在AN原创 2021-10-09 21:07:12 · 1071 阅读 · 10 评论 -
C语言文件操作(含详细步骤)
文章目录一、为什么使用文件?二、什么是文件?1.程序文件2.数据文件3.文件名三、文件的打开和关闭1.文件指针2.文件的打开和关闭4.文件的顺序读写一、为什么使用文件?当我们在编写一个项目的时候,自然而然想到要把之前写入的数据保存起来。而只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。此处我们就讲到如何将数据放入到磁盘文件当中。二、什么是文件?磁盘上的文件就是文件。例如电脑当中的C盘内放入的文件夹内原创 2021-10-01 10:58:55 · 53982 阅读 · 38 评论 -
动态内存分配管理
文章目录一、动态内存存在的意义二、动态内存函数的介绍1.malloc和free2.calloc3.realloc一、动态内存存在的意义对于内存是如何开辟的我们已经都不陌生,如结构体类型创建不开辟空间,而每个变量的创建都开辟内存空间。例如:int val = 20;//在栈空间上开辟四个字节char arr[10] = {0};//在栈空间上开辟10个字节的连续空间但是上述空间的开辟方式有两个特点:空间开辟大小是固定的。数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。原创 2021-09-26 16:56:43 · 222 阅读 · 13 评论 -
自定义类型全解(结构体,位段,枚举,联合)
文章目录一、结构体1.什么是结构体?2.结构体的声明3.特殊结构体的声明4.结构体的自引用(嵌套)5.结构体变量的定义和初始化一、结构体1.什么是结构体?结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。2.结构体的声明例如描述一个学生,每个学生都有它自己的身高、年龄、性别、学号等等,因为它有多种属性,因此我们可以将学生当作一个结构体。struct Stu{ char name[20];//名字 int age;//年龄 char sex[5];//性别 c原创 2021-09-25 12:30:49 · 244 阅读 · 14 评论 -
实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址
文章目录1.添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系人信息6. 清空所有联系人7. 以名字排序所有联系人8.总代码头文件源文件(执行命令代码)源文件(打印菜单代码)实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:添加联系人信息删除指定联系人信息查找指定联系人信息修改指定联系人信息显示所有联系人信息清空所有联系人以名字排序所有联系人保存联系人到文件加载联系原创 2021-09-22 17:41:10 · 858 阅读 · 9 评论 -
刨析C语言常用的字符串函数与内存函数及模拟实现
文章目录一、C语言相关字符串库函数一览表二、strlen函数(求字符串长度)strlen函数介绍strlen函数的模拟实现三、strcpy函数(字符串拷贝)strcpy函数介绍strcpy函数的模拟实现四、strcat函数(字符串追加)strcat函数介绍strcat函数的模拟实现五、strcmp函数(字符串的比较)strcmp函数介绍strcmp函数的模拟实现六、strncpy函数(受限制字符串拷贝)strncpy函数介绍strncpy函数的模拟实现七、strncat函数(受限制字符串追加)strncat原创 2021-09-22 13:01:12 · 260 阅读 · 16 评论 -
求0-10000之间的水仙花数,并将这个数输出,打印。
水仙花数的定义“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身。如 : 153=1 ^ 3+5 ^ 3+3 ^ 3,则153是一个“水仙花数”。题目求出0~100000之间的所有“水仙花数”并输出。解题思路题目讲的是一个n位数,其各位数的n次方之和等于这个数,我们就得先知道这个数有多少位,能够获取到每个位的数,才能够进行计算,并且每个数的n次方我们也得单独进行计算,如此之后才能进行判断。第一个函数用来判断这个数有多少位。第二个函数来求一个数的n次方。第三个原创 2021-09-13 18:47:08 · 1458 阅读 · 13 评论 -
《数据结构》第二章 | 线性表 知识梳理(应对期末考)
文章目录一、线性表的定义和特点及案例引入1.线性表的定义和特点2.案例引入(1) 一元多项式的运算(2) 稀疏多项式的运算(3) 图书信息管理系统二、线性表的类型定义三、线性表的顺序表示和实现1.初始化顺序表2.顺序表取值3.顺序表查找4.顺序表的插入5.顺序表的删除6.基本操作补充7.顺序表的特点四、线性表的链式表示和实现1.链表介绍及单链表、双链表、循环链表基本定义2.三个典型问题3.链表的特点及优缺点五、单链表1.单链表的定义和实现2.单链表的存储结构定义3.初始化单链表4.基本操作补充5.单链表的取原创 2021-09-12 20:20:38 · 2295 阅读 · 30 评论 -
字符串旋转问题详解
题目名称:字符串左旋题目内容:实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB方法一:暴力求解这种方法相对比较容易,我们先来看看代码:void left_move(char* arr, int k){ int i = 0; assert(arr); int len = strlen(arr); for (i = 0; i < k; i++) { //左旋转1个字符 //1. 保存第一个字符 cha原创 2021-09-10 12:42:32 · 492 阅读 · 14 评论 -
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个只出现一次的数字。
文章目录一、问题描述二、解决问题1.异或运算知识2.解决思路三、源代码一、问题描述 一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个只出现一次的数字,编程实现。 例如数组为{1,3,5,7,1,3,5,9},找出7和9 。二、解决问题1.异或运算知识  原创 2021-08-31 00:10:28 · 616 阅读 · 4 评论 -
数据的存储(C语言)
文章目录一、数据类型介绍二、类型的基本归类1.整型家族2.浮点数家族3.构造类型4.指针类型5.空类型三、整型在内存中的存储1.原码、反码、补码2.大小端介绍3.整型提升三、浮点型在内存中的存储1.常见浮点数2.浮点数存储规则(1) E的两种特殊取值总结一、数据类型介绍 该数据类型的所占空间的字节数是在32位平台上所得测试的。由于存储位不同,他们能表示的数值的范围就不同,也就是能准确表示的数的位数就不同。char //字符数据类型 1个字原创 2021-08-29 11:32:31 · 346 阅读 · 4 评论 -
全网最详细函数栈帧的创建和销毁(超万字含图解)
文章目录函数栈帧的介绍1.局部变量是如何创建的2.局部变量的值为何为随机值1.引入库3.函数是如何传参的?传参顺序是如何的?4.实参与形参有什么联系?5.函数是如何去调用的6.函数调用后是如何返回的?函数栈帧的介绍1.局部变量是如何创建的示例:2.局部变量的值为何为随机值1.引入库代码如下(示例):13.函数是如何传参的?传参顺序是如何的?4.实参与形参有什么联系?5.函数是如何去调用的6.函数调用后是如何返回的?...原创 2021-08-22 14:44:39 · 849 阅读 · 21 评论 -
利用qsort函数排序多种类型数据以及模仿qsort函数的实现
文章目录一、qsort函数介绍二、qsort函数传参内容分析三、总体思路与注意事项四、对多种数据类型进行排序1.对int型数组排序2.对char型数组排序3.对double型数组排序4.对字符串型数组排序一、qsort函数介绍我们在此之前应该大概了解过多种排序的方法,例如最常见的冒泡排序,选择排序,归并排序等等,而利用qsort函数实现排序简称快速排序。它的计算速度非常快,所以系统也在库里实现这个算法,便于我们的使用。它是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分法写的,其时原创 2021-08-20 16:16:11 · 613 阅读 · 11 评论 -
C语言实现扫雷(初阶)
目录问题简述一、大概思路二、基本流程1.打印游戏菜单2.初始化扫雷面板3.打印设置好的扫雷面版4.随机设置雷的坐标5.进行排雷并判断输赢三、拓展衍生四、总代码展示1.头文件代码2.游戏实现代码3.主函数代码五、代码效果展示问题简述用C语言实现扫雷游戏一、大概思路1.在我们开始设计扫雷面板前,要有一个菜单选择开始游戏或退出游戏,玩完一把后仍然有菜单选择。2.我们可以打开网页版初阶扫雷面板,它是一个9*9的格子面板,这时我们能联想到二维数组。3.因为扫雷是先有面板选择坐标,选择后再把含有排除雷的原创 2021-08-09 22:28:57 · 884 阅读 · 6 评论 -
C语言实现三子棋
三子棋一、问题描述用C语言来实现三子棋游戏。二、基本流程写代码前,我们先来看看三子棋代码设计的思路与逻辑1.我们要设计一个菜单来选择是否开始游戏。2.用二维数组创建棋盘并初始化。3.打印棋盘。4.玩家下棋。5.电脑下棋(随机位置)。6.判断胜负。7.判断棋盘是否已满。8.回到菜单重新选择是否开始游戏三、步骤1.菜单界面选择1开始游戏,选择2退出游戏。void menu(){ printf("**************************\n"); printf原创 2021-08-08 14:57:44 · 510 阅读 · 6 评论 -
逆序排列“abcdef“字符串(不是逆序打印)详解
题目如下:编写一个函数 reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列,不是逆序打印。要求:不能使用C函数库中的字符串操作函数。 当我看到这个题一开始的思路是:既然要逆序排列,就肯定要把字符串的第一个字符与最后一个字符进行交换,而且交换完以后数组的左下标要向右移一位,而最右下标要向左移一位,两边的下标相互要不断相互接近,想起来可能会比较复杂(而且不能使用C函数库中的字符串操作函数),但也并非没有办法。 ...原创 2021-08-07 13:42:39 · 865 阅读 · 4 评论 -
探讨getchar与scanf的区别
前言 说到scanf与getchar,想必大家都不陌生,在学习C语言的第一天起我们就开始接触它们,但我们对它们在输入方面可能有点模棱两可,分不清scanf与getchar真正有什么区别,下面就来分别探讨一下scanf与getchar在输入上的特点。scanf在输入上的特点 当我们在运用scanf这个函数需要输入字符串或者数字时,scanf并不是直接从我们的键盘当中直接获取输入的信息,而是从缓冲区中获取信息,这个所谓的缓冲区,是我们在键盘上输入后暂时保存输入信息的地方。当对...原创 2021-08-02 22:16:07 · 8576 阅读 · 8 评论 -
刨析函数中的实参与形参
实参与形参的联系说到函数,我们自然而然就想到了实际参数与形式参数(后面简称为实参与形参),大多数情况下,我们都需要多个函数来分工合作,而且它们又相互独立,函数在编程当中是不可替代的存在,可以代码块的绝大部分都是函数,最突出的就是main主函数。既然我们需要每一个函数来帮助我们分担不同的工作,这时我们就要传递实参给函数,这时实参在函数中就变为了形参。使用函数时,函数专门向内存申请了一块空间用于存放形参,经过函数的处理,再返回需要的值给main主函数。可见实参与形参在一个函数中有密切的联系。...原创 2021-07-29 21:08:35 · 444 阅读 · 8 评论 -
打印100到200中的素数的多种解法
#include <stdio.h>int main(){ int i = 0; int j = 0; for (i =100; i <= 200; i++) { int flag = 1; for (j = 2; j <= i -1; j++) { if (i % j == 0) { flag = 0; break; } } if (flag == 1) { printf("%d ", i); }.原创 2021-07-27 18:49:49 · 397 阅读 · 0 评论