自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 scanf(“%d“,&x)中%d后面加空格即“%d “后产生的吃空白行为

当需要输入整形数据时,会发现如果%d 后面加了空格,按下回车键时控制台并没有反应,这其实就是吃空白行为。文章目录前言%d后面加空格的吃空白行为吃空白的其他用法前言给变量赋值实际上是从缓冲区中提取符合的数据到变量中,而缓冲区中的数据需要我们从键盘中输入。比如我们给两个整形变量赋值:#include<stdio.h>int main(){ int a, b; scanf("%d%d", &a,&b); printf("a=%d", a); printf("b

2021-07-31 02:33:40 6047 5

原创 02线性表之顺序表

在之前我们学的变量数据中,各个数据之间相互独立的,通过一个变量是无法访问另一个变量的。但是线性表和它们不同,线性表中的数据在逻辑结构上相互挨着,因此一个数据和它相邻的数据之间是有联系的,比如数组。在顺序表中我们用到了C语言中结构体和动态开辟内存的知识。文章目录线性表的概念顺序表顺序表的代码实现顺序表菜单实现线性表的概念线性表,全名为线性存储结构。使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”。线性表是n个具有相同特性的数据元素的有限序列。 线性表是一

2021-07-30 21:59:52 202 2

原创 EasyX图形编程

在之前的C语言中,我们的代码最终展示界面都是控制台,也就是那个黑框框,这确实不够高大上,因此EasyX就是来解决这个问题的。文章目录EasyX简单介绍EasyX安装图形编程前需要了解的一些概念三原色图形编程的窗口EasyX函数介绍设置窗口绘图函数输出文字的函数输出图片的函数鼠标操作非EasyX函数键盘消息函数播放音乐的函数如何修改窗口标题EasyX简单介绍Easy×是针对C++的图形库,可以帮助C/C++初学者快速上手图形和游戏编程。比如我们可以用这个东西画一个圆形,画一个汽车等物体,也可以用这个

2021-07-28 23:59:14 6029 5

原创 01数据结构中的时间复杂度和空间复杂度

我们之前学的冒泡排序、二分查找等操作,实际上都是一种算法,而衡量算法好坏的标准则是数据结构中的时间复杂度和空间复杂度。本章将带大家了解C语言数据结构中算法的时间复杂度和空间复杂度的概念,以及它们是如何计算的。文章目录时间复杂度常见的时间复杂度计算空间复杂度常见的空间复杂度计算时间复杂度一个算法的运行是需要时间的,而这个运行时间在不同的计算机上是不同的,因此我们无法定量去衡量这个算法的运行时间,但是可以用该算法的执行次数来判断它运行所需的时间,执行次数越多,所需的时间就越长,因此它的时间复杂度就越

2021-07-27 23:12:20 306 1

原创 15C语言预处理

本章是C语言的最后一章,在这一章将带大家了解一下程序是如何从代码生成可执行程序的,也就是如何从.c文件到.exe文件。文章目录一、程序的翻译环境和执行环境1.1翻译环境1.1.1编译的过程1.1.2链接的过程1.2执行环境二、预处理(预编译)详解2.1预定义符号2.2#define2.3#和##2.4宏和函数对比2.5#undef移除宏定义2.6条件编译2.7文件包含一、程序的翻译环境和执行环境程序从.c文件到.exe文件依赖的是翻译环境,而.exe以后的执行依赖的是执行环境1.1翻译环境在这

2021-07-27 00:14:06 404 3

原创 C语言实现通讯录管理系统

要实现一个通讯录管理系统,需要用到结构体、指针、文件操作、动态管理等内容。效果展示:文章目录实现思路contact.h内容contact.c内容test.c内容实现思路通讯录中的联系人包括姓名、年龄、性别、电话、住址,因此可以定义一个结构体PeoInfo来存储这些信息。同时,由于通讯录需要记录当前的大小,以此来方便我们对通讯录realloc进行扩容,所以需要定义通讯录结构体Contact来保存这些信息,其中该结构体中可以嵌套一个PeoInfo类型的指针。当定义完结构体以后,就可以对定义的结

2021-07-25 17:31:11 2687 2

原创 14C语言中的文件操作

在之前我们的程序中的数据在程序结束以后都会被编译器销毁,当我们再次运行时就无法得到原来的数据了,本章将介绍如何将数据存储到文件中,并从文件中读取。文章目录一、文件的分类1.1文件名1.2文件的类型二、文件缓冲区三、文件指针四、文件的打开和关闭五、文件的顺序读写5.1fgetc5.2fgetsfputs5.3fgets,fputs和gts,puts5.4fprintf5.5fscanf5.6scanf/fscanf/sscanf和printf/fprintf/sprintf对比5.7fwrite5.8fr

2021-07-24 20:57:03 932 7

转载 13C语言中的动态内存管理

在前面我们已经学习了变量在内存中的存储,但它们大多都是在栈区开辟内存的,这一章将带大家介绍在堆区开辟内存的动态内存。文章目录一、动态内存分配的原因二、动态内存函数2.1malloc开辟空间和free释放空间2.2calloc开辟空间和free释放空间2.3realloc开辟空间和free释放空间三、常见内存动态分配错误四、动态内存开辟常见的笔试题五、柔性数组总结一、动态内存分配的原因内存一般分为栈区、堆区、静态区:一般情况下我们开辟的局部变量或者全局变量它们开辟的空间是固定的,而且数组在开辟内

2021-07-21 00:04:27 376

转载 12C语言结构体(进阶)

在之前 C语言中内置类型了解了内置类型,本章将带大家了解C语言中的自定义类型,包括结构体、枚举和联合体,其中应该重点了解结构体的对齐数以及如何计算结构体大小。文章目录一、结构体1.1匿名结构体类型1.2结构体的自引用1.3结构体内存对齐1.3.1内存对齐的原因1.3.2修改默认对齐数1.3.3计算结构体中某变量相对于首地址的偏移量二、位段三、枚举3.1枚举类型的定义四、联合(共用体)4.1联合类型的声明和定义4.2联合体大小计算一、结构体结构体的声明在之前结构体(初级)中已经说明过1.1匿名结构

2021-07-21 00:02:08 235

原创 11字符及字符串函数的使用和模拟实现

C语言中式没有字符串类型的,字符串变量一般放在常量字符串中(用字符指针指向)或者字符数组中,因此本章将介绍处理字符和字符串的库函数的使用和注意事项。文章目录一、求字符串长度1.1strlen1.1.1strlen库函数的模拟实现二、长度不受限制的字符串函数2.1strcpy2.1.1strcpy模拟实现2.2strcat2.2.1strcat模拟实现2.3strcmp2.3.1strcmp模拟实现三、长度受限制的字符串函数3.1strncpy3.1.1strncpy模拟实现3.2strncat3.2.1

2021-07-19 12:54:34 398 4

原创 10C语言中的指针(进阶)

之前我们初步了解了指针 C语言中的指针(初级).在这一章我们将会把指针和数组,指针和函数相结合,更进一步了解指针。文章目录字符指针字符指针和字符数组的区别指针数组数组指针数组指针的使用数组和指针的传参一维数组的传参二维数组传参一级指针传参二级指针传参函数指针函数指针数组指向函数指针数组的指针回调函数回调函数实现qsort库函数字符指针顾名思义,字符指针存放的是一个字符的地址,其形式为char*.对于存放字符串来说,我们可以用字符数组:#include<stdio.h>int ma

2021-07-18 10:42:10 927 13

原创 09数据在内存中的存储

此篇博客带大家具体了解了C语言整形和浮点型在内存中的存储情况,通过这篇博客我们将会对内存有进一步的了解。文章目录一、回顾数据类型1.1类型的基本归类二、整形在内存中的存储2.1原码、反码和补码2.2大小端2.2.1为什么要有大小端?:2.2.2用代码判断机器的字节序(大小端):三、数据类型存储的一些练习题四、浮点数在内存中的储存一、回顾数据类型我们之前已经对C语言中的内置数据类型有了了解:char //字符数据类型,比如a、b、c、!等字符 short //短整型

2021-07-14 12:38:45 708 5

原创 C语言实现扫雷

与三子棋类似,扫雷也是主要用到了数组,在雷展开的时候用到了函数的递归。文章目录实现思路game.h内容game.cpp内容test.cpp内容实现思路和三子棋一样。开始先要有游戏的菜单,包括进入游戏和退出程序的选项,如果玩家选择进入游戏,则程序执行游戏实现的函数。以9 * 9的扫雷为例:游戏实现函数包括打印一个11 * 11的棋盘show,同时也要包括一个11 * 11的雷盘(通过二维数组完成,因为9 * 9的扫雷周围那一层是没有雷的,所以要打印11 * 11的雷盘,雷只放在中间9 * 9的那

2021-07-11 13:19:44 302 1

原创 C语言实现三子棋游戏

实现三子棋的游戏用到最多的是二维数组,完成这个游戏以后对二维数组的掌握肯定会更深刻。文章目录实现的思路game.h内容game.cpp文件内容test.cpp内容实现的思路开始先要有游戏的菜单,包括进入游戏和退出程序的选项,如果玩家选择进入游戏,则程序执行游戏实现的函数。游戏实现函数包括打印一个33的棋盘(通过二维数组完成),同时也包括玩家下棋(通过输入下标下棋,玩家的棋子为),电脑下棋(通过随机数产生下标,电脑的棋子为#),并且在玩家和电脑下完棋以后,都执行一个判断是否胜利的函数(判断是否三个

2021-07-10 16:59:12 205

原创 C语言实现关机恶搞程序

C语言的头文件 <stdlib.h>中有两个可以让计算机开关机的操作:system("shutdown -s -t 60");在六十秒后关机,system("shutdown -a");取消关机通过这两个命令再加上之前输入密码的操作,就可以实现恶搞程序了:#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char input[20] = {0};

2021-07-10 15:42:49 667

原创 C语言实现猜数字游戏

猜数字游戏与简单登录操作类似。可以让电脑生成一个随机数,可以通过取模操作来控制这个随机数的范围,然后我们输入一个数与这个随机数比较即可。生成一个随机数的操作可以用 <stdlib.h>头文件中的srand函数:在使用之前需要给srand函数传入一个无符号整形的数,它会根据这个数生成一个随机数生成随机数rand();但是很遗憾,每次生成的随机数都是一样的:第一次:第二次:为了避免这种情况,我们需要在srand中传入一个随机数,而这个随机数可以用时间戳:时间戳是当前计算机的时间减

2021-07-10 13:48:48 274

原创 C语言实现简单的登录操作

编写代码实现,模拟用户登录情景,并且只能登录三次。要实现这种操作,我们需要设置一个字符串arr1用来存放密码,同时还要手动输入一个字符串password来记录我们输入的字符串,并将password与arr1字符串比较判断是否相同。同时for循环三次即可,如果输入正确则跳出循环。值得注意的是: 在比较password与arr1是否相等时,不能够用==比较,比如下面的程序:#include <stdio.h>int main(){ char password[10] = ""; cha

2021-07-10 12:33:46 16132 3

原创 C语言实现多个字符从两端移动,向中间汇聚

要实现这种效果只需要准备两个数组,一个数组arr1存放字符串hello world,一个数组存arr2存放######,然后将arr1的元素从左和从右依次赋值给arr2即可。注意:在赋值的时候,可以通过sizeof(arr1)/sizeof(arr[1])和strlen(arr1)获取它们元素个数,由于下标是从0开始,并且最右边的元素并不包括’\0’,而sizeof在计算的时候是算上’\0’的,因此用sizeof算最右边元素下标则要-2,strlen则要-1;实现依次赋值和打印的效果,只需要用循环即可.

2021-07-10 12:11:28 412

原创 C语言折半查找

对于一个已经排好序的数组(上一篇博客 冒泡排序 讲到如何给数组排序),要查找其中一个元素,除了从第一个元素到最后一个元素依次遍历以外,还可以使用折半查找。折半查找的思路是这样的(以升序数组为例):开始先从中间(最左边元素下标加最右边元素下标除以二)的元素开始找,如果中间的元素小于要找的目标元素,则说明目标元素在中间元素的右边,此时我们以中间元素的下标为左边元素下标,重复上面的过程。如果中间的元素大于要找的目标元素,则说明目标元素在中间元素的左边,此时我们以中间元素的下标为最右边元素下标,重复上面的过

2021-07-09 17:30:35 265

原创 C语言实现冒泡排序

水中的气泡会一点点地上浮到水面最后冒出,而这种排序算法的每一个元素都可以像小气泡一样,根据自身大小一点一点向着数组的左侧或者右侧移动。对于一个无序数组,我们要实现其中的元素按照升序排序或者降序排序,可以使用冒泡排序这种最基础的排序方法。先介绍一下冒泡排序的思路(以升序为例,数组元素个数为n):从数组的第一个元素开始比较与后面元素的大小。如果第一个元素比第二个元素大,就交换他们两个。然后对第二个元素重复上面的操作,如果第二个元素比第三个元素大,就交换他们两个。一直重复这种操作,直到第n-1个元素和

2021-07-09 15:59:17 6299

原创 C语言计算阶乘及阶乘的和

计算 n的阶乘。要实现这个阶乘的值并不难,只需要运用到for循环依次相乘即可,但要注意for循环i的初始值一定是从1开始到n结束。#include<stdio.h>int main(){ int i,n; int ret = 1;//用于存放阶乘的值 scanf("%d", &n); for (i = 1; i <= n; i++)//注意这里i的初始值和结束值 { ret *= i; } printf("%d", ret);}如果要实现阶乘相加,我

2021-07-09 14:26:46 14189

原创 08C语言中常用调试方式

在本章,将会以VS2019编译器为例介绍C语言中的调试方式,以此来帮助我们找出和解决程序中的错误。文章目录一、程序中的bug二、调试2.1调试的基本步骤三、Debug和Release四、windows环境调试介绍4.1使用Debug版本4.2调试的快捷键4.3调试的时候查看程序当前信息五、调试实例六、好的代码(易于调试)代码的要求七、一些常见的编程错误总结:一、程序中的bugbug就是计算机中的程序错误。排除程序错误叫作debug。在日常写代码中,遇到的错误大多为语法错误或者逻辑错误。语法错误可能

2021-07-01 19:53:14 827 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除