自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用栈实现非递归快速排序详细记录

最后,我们将右子数组的边界和左子数组的边界压入栈中,以便在下一轮循环中处理。注意,我们首先压入右子数组的边界,然后是左子数组的边界。同上,因为栈是后进先出的数据结构,我们希望先处理左子数组,然后再处理右子数组。接下来,我们进入一个循环,只要栈不为空,我们就从栈中弹出左右边界,并对这部分数组进行划分。我们使用 MedianOfThree 函数来选择一个枢纽元素,并得到它的索引 keyi ,这个 key 元素将用于划分数组。因为我们首先压入的是左边界,按照栈的“后进先出”,所以先弹出右边界,然后是左边界。

2024-04-21 19:55:46 214

原创 新手入门 C++ 泛型编程:函数模板与类模板初识

若模板的声明和定义分开在不同的文件中,当编译单元(通常是 .cpp 文件)包含了模板的声明但不包含其定义时,编译器虽然可以解析模板的声明,但并不会生成任何实例代码。当另一个编译单元尝试使用这个模板时,编译器将依据实参类型生成对应的实例,但由于模板定义不在该编译单元内,编译器就无法找到模板实现,从而无法生成所需的函数或类实例。: 即使编译器能在使用模板的文件中发现模板声明,但在链接阶段,由于模板定义并未被编译成目标代码,链接器将找不到相应模板实例的实现,导致链接错误(通常表现为“未定义的引用”错误)。

2024-04-21 17:07:48 505 1

原创 无聊?来学C++!- 函数重载、引用和内联函数不无聊

函数重载(Function Overloading)是C++中一种允许在同一作用域内定义多个同名函数的机制,前提是这些函数的参数列表不同(参数个数不同或参数类型不同)。通过函数重载,可以让程序员为不同的参数类型编写专用的函数实现,提高代码的可读性和可维护性。

2024-04-04 22:32:00 453 1

原创 探索C++编程中的核心概念:命名空间与io流以及缺省参数

命名空间是一种特殊的域,除了局部域和全局域外,还有类域等,它们共同影响着成员的可见性。各个域中都可以定义同名的变量、函数或类型,通过命名空间机制可以有效管理这些重名资源。

2024-03-27 08:24:48 255 2

原创 环形链表的约瑟夫问题

这里有一个聪明的方法,我们可以。

2024-02-24 20:45:09 874 1

原创 贪吃蛇游戏C语言实践——关键记录

本项目使用C语言实现了一个经典的贪吃蛇游戏,包含了游戏初始化、运行、结束等主要逻辑,以及键盘控制、地图绘制、蛇身移动、食物生成、碰撞检测等核心功能。使用函数获取键盘输入,并根据按键控制蛇的移动方向。在贪吃蛇游戏中,玩家通过键盘控制蛇的移动。这是通过函数实现的,它能检测特定按键是否被按下。我们利用这个功能来判断玩家是否按下了方向键(上、下、左、右)或特殊功能键(如加速、减速、暂停)。这段代码通过判断方向键是否被按下来更新蛇的移动方向,并且防止蛇向直接相反的方向移动。

2024-02-24 17:33:01 666 1

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

欢迎来到C语言的文件操作教程!在这篇文章中,我们将探讨C语言中的文件操作,包括文本文件和二进制文件的处理,文件的打开和关闭,文件的顺序读写和随机读写,以及文件读取结束的判定和文件缓冲区的使用。

2023-12-13 19:49:12 41 1

原创 C语言结构体初探及内存对齐

结构体是一种用户定义的数据类型,它允许我们存储不同类型的数据项。结构体的定义使用struct关键字,后面跟着结构体的名称和包含在大括号{}中的数据项。每个数据项(也称为成员)都有一个名称和一个类型。int roll;在上述代码中,我们定义了一个名为Studentnameroll和marks。结构体是C语言中非常有用的一种数据类型,它允许我们将不同类型的数据组合在一起。理解结构体的内存对齐行为可以帮助我们更好地理解C语言如何在内存中布局数据,以及为什么某些结构体比我们预期的要大。

2023-12-05 11:41:38 48 1

原创 整数和浮点数在内存中的存储

以32位浮点数为例,将第一位的1舍去后,留给M的就有23+1=24位有效数字。在补码中,正数的补码与原码相同,负数的补码是原码取反加 1。是整数的二进制表示形式。正整数的原码就是其二进制表示形式,负整数的原码则是其二进制表示形式做数值位,首位(符号位)设为1。可以观察到,小数部分不断乘以2,将整数部分取出,直到小数部分为0或者达到所需的精度。此时,将E的计算值减去127或1023,得到真实值,再将有效数字M前加上第一位的1。此时,E的真实值等于1-127或1-1023,有效数字M前无需加上第一位的1。

2023-11-28 16:50:53 52 1

原创 库函数atoi的使用及模拟实现

在C语言中,atoi函数是一个非常实用的库函数,它可以将字符串转换为整数。这个函数接受一个字符串作为参数,然后返回这个字符串所表示的整数值。如果字符串不能转换为有效的整数,那么函数将返回0。将字符串转换为整数int解析 C 字符串 str,将其内容解释为整数,该整数作为 类型的int值返回。isspaceplusorminus该函数首先根据需要丢弃尽可能多的空格字符(如isspace),直到找到第一个非空格字符。

2023-11-28 15:52:25 46 1

原创 字符串函数、内存函数的模拟实现&大小端字节序

大小端指的数据在内存中的存储顺序。大端字节序(Big Endian):数据的高字节存储在内存的低地址端,低字节存储在内存的高地址端。小端字节序(Little Endian):数据的高字节存储在内存的高地址端,低字节存储在内存的低地址端。举个例子,整数0x12345678在内存中的存储:低地址 高地址高地址 低地址可见,大小端是从数据的最高有效位(MSB)还是最低有效位(LSB)开始存储的问题。

2023-11-27 11:15:38 41 1

原创 C语言指针入门

指针是一种保存变量地址的变量。变量的地址是指变量在内存中的存储位置。数据类型 *指针变量名;int *p;

2023-11-25 18:06:36 26

原创 幕间总结 003

函数的概念函数设计应该追求:高内聚表示一个模块(如函数、类、模块)内部的元素彼此关联度高,专注于执行单一任务或功能。高内聚的模块应该尽量减少不相关功能的混合,以便模块内的元素共同完成一个特定的任务或目标。这有助于使代码更加清晰和可理解,因为每个模块都有清晰的责任范围。:低耦合表示不同模块之间的依赖关系应尽量减少,模块之间的相互影响应该尽量降低。低耦合的模块更容易被独立开发、测试和维护。这有助于增加系统的灵活性,因为可以更容易地更改或替换其中的一个模块,而不会对其他模块造成严重影响。

2023-11-10 21:06:09 23 1

原创 盘转乾坤:白话汉诺塔游戏的数字之谜

嗯嗯,同理,我们还要继续推导f(8)、f(7)、f(6)、f(5)、f(4)、f(3)、f(2)和f(1),直到我们得到f(1)的值,也就是1。如果不是,就先调用hanoi函数,把n-1个圆盘从a柱子移到b柱子,借助c柱子作为中转,然后输出把最大的圆盘从a柱子移到c柱子的操作,例如“Move disk n from A to C”;用C语言写这个递归函数很简单,我们只需要定义一个函数,叫做hanoi,它有四个参数,分别是n、a、b和c,表示要把n个圆盘从a柱子移到c柱子,借助b柱子作为中转。

2023-11-04 18:39:48 68 1

原创 幕间总结 002

一、关系操作符。

2023-10-31 21:24:02 114 1

原创 简易扫雷游戏的实现 基于控制台 初版

首先需要定义游戏盘面的大小,也就是行数和列数。//定义非地雷格子数//定义非地雷格子数//游戏内函数声明。

2023-10-30 21:53:47 30

原创 幕间总结 001

退格符在文本中的作用是向后移动光标一个位置,删除光标前一个字符。scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符,scanf输出字符占位符的时候,不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格。注意if后的条件表达式,如果表达式的==写成了赋值,相当于每次循环尽量都是将i的值设置成了5,5为真,因此每次都会打印5。它可以删除光标位置上的字符或选定的文本内容,将其彻底移除。前置++:先加1,后使用,即先使用变量中内容,然后给结果加1。(1)if后的条件表达式。

2023-10-24 18:21:09 27

原创 C语言分支和循环语句 注意事项

通过注意本文提到的注意事项,您可以避免常见的错误,提高代码的质量和可读性。3.使用switch语句时注意case的覆盖范围:确保switch语句中的case覆盖了所有可能的值,否则未覆盖的值可能会导致未定义的行为。当您需要在满足某个条件时一直执行循环操作,并且循环次数不固定时,使用while循环更加合适。当你需要执行某些初始化操作,然后重复执行某个操作直到满足某个条件时,可以使用do-while循环。1.初始化循环变量:在使用循环结构之前,应初始化相关的循环变量,以避免未定义的行为。一、分支语句注意事项。

2023-10-24 16:21:32 273

原创 函数:判断是否为素数,打印100~200内的所有素数

2.之所以只需要检查到平方根,是因为一个非素数必定可以表示为两个因数的乘积,如果这两个因数都大于这个数的平方根,那么它们的乘积会大于这个数,所以我们只需要检查到平方根即可。其中的函数使用了素数的定义和性质来检查一个数是否为素数。1.我们从2开始,一直检查到小于等于这个数的平方根的所有整数,看它们是否能够整除这个数。3.如果我们找到了一个可以整除这个数的因数,那么这个数就不是素数,我们返回。4.如果我们没有找到任何可以整除这个数的因数,那么这个数就是素数,我们返回。

2023-10-24 15:55:25 896

原创 C语言分支和循环语句 语法简述

它会根据表达式的值,跳转到匹配的case标签处,执行其语句,遇到break则跳出switch,否则继续执行下一case的语句,默认是default标签处的语句。它的执行过程是先执行初始化表达式,然后判断条件表达式,如果为真就执行循环语句,再执行更新表达式,反复这样的过程,直到条件表达式值为假时跳出循环。它的意思是当条件表达式的值为真时,就执行循环语句,然后再次判断条件表达式,重复这个过程,直到条件表达式的值为假时跳出循环。这表示如果条件表达式的值为真,就执行if部分的语句,否则就执行else部分的语句。

2023-10-24 15:02:15 44

原创 我的编程之旅 START

你好,我是FuLLovers(❀),双非一本出身,非科班。我认为编程可以创造出令人惊叹的事物,从一个小目标出发,慢慢解决复杂的问题,改变我的生活,为周围的世界带来积极的影响。我也希望能够参与到一些有意义的项目中,通过我的技能为社会做出贡献。我会选择一些高质量的在线网站和课程进行学习,同时也会阅读一些经典的编程书籍。此外,我也会通过实践项目来提高我的编程技能。我最想加入的IT公司是谷歌,我一直对他们所做的工作感到钦佩,并希望能够成为他们团队的一员。希望你们喜欢我的博客,并从中有所收获。

2023-10-11 14:47:21 25

空空如也

空空如也

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

TA关注的人

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