自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据结构】顺序表(C语言)

在计算机中,数据按照一定的线性结构存储,这种数据结构被称为线性表。线性表是被广泛应用的数据结构,常见的线性表有顺序表、链表、队列、栈等等。从顺序表的增删查改可以看出,顺序表尾插尾删的时间复杂度是O(1),头插头删的时间复杂度是O(N),因此,顺序表更适用于尾插尾删。而顺序表与数组又有不同:顺序表存储数据必须是依次连续存储,如下图;注意:线性表在逻辑上是线性结构,但物理表示上不一定连续存储,一般以数组或链式结构表示。采用适当的数据结构可以提高计算机的运行或存储效率。数据结构是计算机存储、组织数据的方式。

2022-12-20 11:33:30 200 1

原创 如何衡量一个算法的好坏?

算法是解决一类问题准确而完整的描述,它是程序设计的灵魂。如何衡量一个算法的好坏呢?是不是实现的代码越简洁算法越好呢?算法在编写成可执行程序运行时,需要耗费时间资源和空间资源,因此衡量一个算法的好坏,是从时间和空间两个维度上衡量的,即时间复杂度和空间复杂度。时间复杂度衡量一个算法运行的快慢;空间复杂度衡量一个算法运行所需要的额外空间。

2022-10-24 10:31:38 2884

原创 C语言qsort函数详解

qsort函数最大的特点是对任意类型数组排序,要实现这一点只要采用和qsort函数声明一样的数据类型即可。在这里,qsort函数的排序方法我们使用冒泡排序。

2022-10-22 09:36:02 1159

原创 C语言指针详解

指针是C语言的重要特点,正是由于指针的存在,C语言才能完成各种对内存的操作。那么,什么是指针呢?内存被划分成一个个内存单元,每个内存单元的大小是1字节,为了实现对内存的操作,每一个内存单元都有一个编号,就想楼栋的门牌号一样,称为地址。。通过&取出变量的地址赋给指针变量;通过解引用操作符(*)找到指针所指向的内存。

2022-10-19 11:14:13 1748

原创 逻辑推理题(C语言实现)

这道题可以先假设凶手是A,再根据假设判断4个人说话的真假,如果满足“3个人说了真话,1个人说的是假话”,A就是凶手,反之继续假设B、C、D是凶手。日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。现在请根据这些信息,写一个程序来确定到底谁是凶手。已知3个人说了真话,1个人说的是假话。A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;

2022-10-17 16:53:57 1524

原创 scanf,fscanf,sscanf

printf, fprintf, sprintf用法类似。scanf--从标准输入 stdin 读取格式化输入;fscanf--从流 stream 读取格式化输入;sscanf--从字符串读取格式化输入.

2022-10-17 15:28:47 118

原创 文件操作(C语言)

当我们向写好的通讯录程序中输入信息时,有时我们希望能保存输入的信息,不用每次打开这个程序都要重新输入,这时就可以用”文件“来保存。什么是文件?文件就是保存在磁盘中的信息。存在内存中的信息是临时存储的,只有把它保存在磁盘中以文件的形式存储,才能持久保存。

2022-10-17 14:49:00 447

原创 操作符(C语言)

(exp2) : (exp3) //如果exp1为真,执行exp2,否则,执行exp3。用逗号隔开的表达式,从左向右依次执行,最后一个表达式的结果是整个表达式的结果。^ 按位或--相同为0,相异为1。~ 按位(二进制位)取反。记一些我经常会忘的操作符。一、位操作符(二进制位)| 按位或。

2022-10-16 18:36:27 182

原创 有关宏的编程题(C语言)

我们知道,由于结构体的对齐方式,我们无法直接计算结构体成员的偏移量,而一个结构体成员的偏移量=该成员地址-结构体地址,那么当结构体地址是0,结构体成员的地址不就是该成员的偏移量吗?这道题其实是先分别得到一个数的偶数位和奇数位,再将偶数位的所有数右移一位,奇数位的所有数左移一位,最后相加,得到目标数字。这其实就是把0强行转成结构体类型的指针,假设它就是当前结构体的指针,再看此时成员的地址。一、写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。二、写一个宏,计算结构体中某变量相对于首地址的偏移。

2022-10-16 17:24:45 398

原创 预处理符指令(C语言)

在预编译阶段,编译器处理以#开始的预处理指令,比如包含#include后的头文件,替换#define定义的标识符或宏等。#define本质上是在做文本替换,在遇到#define时最好动笔替换一下。相比于函数,#define定义的宏是类型无关的,而且是直接将一段代码替换到程序中,速度更快,开销小于函数,因此在简单运算中通常用宏。由于宏在预处理阶段就被替换了,它是不参加调试的,如果出错是很难发现的。

2022-10-16 17:03:35 971

原创 数据存储(C语言)

现在我们再来看前言中的题目,int类型的十进制数num=4在内存中存储形式00000000 00000000 00000000 00000100以float形式将num从内存中取出,由于指数部分全为0,则E=1-127=-126,有效数字部分M=0.0000000 00000000 00000100,还原出的数num约等于0;

2022-10-15 10:30:00 210

原创 从源文件到可执行文件,程序经历了什么?

为了能够在系统上运行这个源文件,它的每条C语句最终都会被传换成机器语言,这些机器语言被打包成可执行文件。将C语句翻译成汇编代码,包括语法分析、语义分析、词法分析、符号汇总(汇总全局定义的变量名、函数名)我们在编译器创建一个hello.c文件。

2022-09-29 17:47:50 166

原创 柔性数组(C语言)

“柔性数组”从这个名字就可以看出来这种数组的大小大概是可以动态变化的。事实也确实如此,在C99标准中,柔性数组有两个特点:是结构中最后一个成员;它的大小是未被定义的。

2022-09-26 12:44:13 160

原创 通讯录2.0(动态内存)

要实现这个要求,就要先malloc一个初始容量,再根据通讯录人数realloc。通讯录2.0版本在1.0的基础上主要在存储上改变:通讯录默认初始容量为3,当通讯录满了,每次增加2个人的位置。注意在退出通讯录时要使用free函数对malloc开辟的空间释放。通讯录1.0的内存是静态的,2.0版本实现内存动态增长。

2022-09-25 17:50:59 120

原创 动态内存管理

malloc的参数是字节数,想开辟几个字节的空间就可以传输对应的参数,但要注意,当字节数过大时(比如等于INT_MAX),malloc无法开辟这样大的空间,就会返回NULL,因此,在使用malloc开辟空间时,要注意判断返回的指针是否是NULL;free的参数是指向动态内存函数开辟空间的指针,如果用free释放非动态开辟的空间,那么,free的行为是未定义的,取决于编译器。当malloc开辟成功时,会返回指向开辟好的空间的指针,但这个指针是void*类型的,使用者根据自己的需要改变;一、malloc函数。

2022-09-25 11:00:18 201

原创 枚举与联合

什么是枚举?枚举就是将一个对象可能的取值一一列举出来。而定义枚举变量时必须用枚举常量赋值,否则会出现错误。联合体又叫共用体,这种类型定义的变量包含的一系列成员共用同一块空间。因为这个特性,联合体一次只能使用它的一个成员变量,不能同时给两个成员变量赋值,这样也无法得到想要的结果。

2022-09-22 23:12:15 207

原创 通讯录1.0(C语言实现)

(1)初始化函数将通讯录的初始人数(sz)定为0,否则未经初始化的sz会是一个随机值;(2)新增联系人时需要先判断通讯录是否已满(该通讯录只能容纳1000人);(3)删除联系人同样要先判断通讯录中是否存在联系人,然后查找要删除的联系人,最后只要将 要删除的联系人用后面的联系人覆盖就可以成功删除了;(4)查找联系人可以利用循环,遍历一遍通讯录;(5)修改联系人先判断通讯录中是否有有要修改的联系人,如果有,再输入该联系人修改后的信息,覆盖原信息;

2022-09-22 19:05:54 452

原创 结构体(C语言)

结构体是一些值的集合,这些值被称为成员变量,它们可以是一些不同类型的变量。例如下面是一个结构体声明,Student这个结构体有name[20], age, score三种成员变量。

2022-09-21 11:22:00 285

原创 内存操作函数memcpy和memmove

如果将src从前往后依次复制肯定是不行的,因为在将src中的第三个元素复制到dest中数字5时,src中的第三个元素早已被覆盖,因此应该将src从后向前复制,即从数字5复制到数字7的位置开始,这样就避免了被覆盖;其中,dest是目标数组名,src是要拷贝的源数组名,而count是要拷贝的字节数;memmove函数可以说是memcpy函数的升级版,不仅具备memcpy函数的功能(拷贝任意类型数组),还能拷贝有数据重叠的数组,像上面的那个例子,如果使用memmove函数我们就能得到想要的结果。

2022-09-20 22:57:35 240

原创 字符串操作函数strstr

在编写程序的过程中,我们不可避免地会调用字符串操作函数,今天要介绍的字符串操作函数是strstr函数。strstr函数是在字符串str1中查找是否含有字符串str2,如果存在,返回str2在str1中第一次出现的地址;否则返回NULL。//strstr函数的应用int main(){return 0;}

2022-09-19 20:23:30 29966 11

原创 字符串操作函数strtok和strerror的使用

3.第一次调用strtok函数时,它的第一个参数是字符串地址,据此找到第一个分隔符,将第一个分隔符替换成 '\0' ,打印出第一个分隔符前的字符串,并记下第一个分隔符的地址;在继续读取字符串时,strtok的第一个参数是NULL,函数从第一个分隔符的位置继续向后读取,直到读到第二个分隔符,之后重复操作。2.从函数声明中可以看出,该函数有两个参数,第一个参数是需要切割的字符串,第二个参数就是第一个参数中包含的分隔符。4.当字符串被读取完毕后,strtok返回NULL。

2022-09-19 17:23:54 169

原创 C中的表达式求值

C语言中的表达式求值,就要注意两个方面:一是数据类型的转换,包括整型提升、算数转换;二是操作符的属性,看操作符的优先级和结合性等。通过操作符的属性,我们如果不能确定表达式有唯一计算路径,那么这个表达式就是有问题的。

2022-08-02 11:01:47 420

原创 原码、反码和补码

原码将其他进制的数按照正负数的形式转换成的二进制数。2.正数、无符号数的原码、反码、补码相同;1.正数的符号位是0,负数的符号位是1;有三种表示方法原码、反码、补码。3.计算机内存中整数存储的是补码。反码符号位不变,其它位按位取反。...

2022-08-01 15:44:27 182

原创 sizeof与strlen的区别

3.strlen是一个库函数(头文件是string.h),只能计算字符串的长度,而且是以'\0'为结束标志计算的。2.sizeof是一个操作符,可以计算数组、字符串、变量等的长度,单位是字节。1.sizeof和strlen之间没有任何关联。strlen(ch1)=随机值。...

2022-07-27 16:00:05 1942

原创 扫雷游戏(C语言实现)

扫雷是一款大众类益智小游戏,游戏目标是在最短时间内找出所有非雷格子,同时避免踩雷,踩到一个雷就gameover了。http。

2022-07-27 11:36:24 457

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

三子棋小游戏:1.玩家进入游戏菜单2.玩家输入选择:进入游戏or离开游戏or选择错误,重新选择3.玩家进入游戏,开始落子4.电脑落子5.判断胜负6.选择是否继续游戏

2022-07-26 19:34:46 580

原创 C语言——冒泡排序

冒泡排序(BubbleSort),是一种排序算法。它重复的走访要排序的数列,依次比较相邻元素的大小,如果不符合某种顺序(升序、降序等),就对相应元素的位置做出交换。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同开水中的气泡最终会上浮到顶端一样,故名“冒泡排序”。​。...

2022-07-25 19:12:47 1264

原创 汉诺塔问题(C语言实现)

汉诺塔(TowerofHanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。​标题汉诺塔问题可依靠递归算法实现,递归算法主要是逐层进入,逐层退出。httpshttps。...

2022-07-22 16:25:10 4077 1

原创 C语言——猜数字小游戏

1.游戏生成一个随机数,玩家来猜测。2.如果猜大了,屏幕输出猜大了。3.如果猜小了,屏幕输出猜小了。4.如果猜对了,屏幕输出猜对了。猜数字游戏(1~100)

2022-01-17 20:42:26 2646

空空如也

空空如也

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

TA关注的人

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