《C/C++语言学习笔记》
文章平均质量分 54
语言是沟通的桥梁,是想法变现的工具。
代码骑士
学习、记录、进步、分享。(断剑重铸之日,骑士归来之时!)
展开
-
随机生成迷宫&寻找最短路径(C语言版)
【代码】随机生成迷宫&寻找最短路径(C语言版)原创 2022-09-28 19:39:34 · 3391 阅读 · 0 评论 -
C语言/C++课程设计---学生管理系统
很多大一的同学刚接触C语言都有过被课设困扰的烦恼吧,别担心,幸好你刷到了我这篇文章,本人结合C语言的学习经验和对面向过程开发的理解,特意写了一个关于学生成绩管理系统的程序,希望给还在抓耳挠腮的你一丝丝的灵感。 (一)项目需求:学习成绩管理系统功能示意图(二)成品 展示:封面录入界面成绩排名删除删除后排名新增标题查询查询菜单注:背景...原创 2021-08-05 19:51:23 · 3073 阅读 · 1 评论 -
C语言编程练习--优化冒泡排序
上面的算法是大部分教材中提供的算法,其中有一点是可以优化的当比较到第i轮的时候,如果剩下的元素已经排序好了,那么就不用再继续比较了,跳出循环即可,这样就减少了比较的次数,提高了执行效率。第二轮,逐个比较(R[1],R[2]),(R[2],R[3]),(R[3],R[4]),…….(R[N-2],R[N-1]),次大的元素被移动到R[n-1]上。第一轮,逐个比较(R[1],R[2]),(R[2],R[3]),(R[3],R[4]),…….........转载 2022-07-19 20:31:55 · 164 阅读 · 0 评论 -
C++编程练习--科目三灯光模拟测试
最近在考科目三,随手写了一个C++的小程序来进行练习。 需求:随机输出题目且不重复,按下abcde进行选择并判断答案是否正确。输出:原创 2022-07-12 10:10:15 · 758 阅读 · 0 评论 -
C语言编程练习--经典递归示例
代码】反转字符串——中间递归。原创 2022-07-20 12:45:49 · 1390 阅读 · 0 评论 -
C++创意编程--基于EasyX库图形库--豌豆射手
刚开始接触图形库的时候做的一个小动图,算是致敬经典了吧。为了留作纪念,决定把之前做的一些小玩意er搬到csdn上面来。也给c++的一些初学者们提供一些有趣的编程实例。1、图片素材2、运行结果:3、代码实例:#include<graphics.h>#include<conio.h>#include<stdio.h>using namespace std;class p2 {public: int size_x; int si原创 2021-11-12 12:09:12 · 1696 阅读 · 0 评论 -
七夕特制:《牛郎会织女》
王母眼看情势不妙,就用头上的银钗在两人之间一挥,一条波涛汹涌的大河出现也就就是所谓的银河,挡在了牛郎前面,但好景不长,这件事很快就让天帝和王母娘娘知道了,王母娘娘亲自下凡,强行带走了织女,到了见面之日,喜鹊自动搭桥,两人在桥上拥抱,诉说一年的相思和想念。织女偷偷下凡与牛郎成婚,过起了男耕女织的幸福生活,牛郎过不去于是在河这边哀伤。织女也在河那边哭泣,王母感于两人的感情,开恩让他们每年见一面,相传,天帝的女儿织女下凡间游玩,老牛帮助牛郎很快就要追上了织女,爱上了聪明忠厚的凡人牛郎,.........原创 2022-08-04 17:15:00 · 217 阅读 · 2 评论 -
C++创意编程--基于EasyX库图形库--无处安放的篮球
作为一名篮球爱好者,代码里怎么能少了篮球呢?所以一开始接触图形库就把我的最爱搬了出来。1、图片素材(来源于网络)2、运行结果:(实现篮球在窗口中的物理弹跳)3、程序代码:#include<graphics.h>#include<conio.h>int main(){ IMAGE ball; loadimage(&ball, "basketball2.jpg", 50, 50); float x, y, vx, vy, g; vx .原创 2021-11-12 12:18:55 · 958 阅读 · 4 评论 -
C++编程练习--DFS深搜寻找迷宫最短路径
(左:迷宫 右: 最短路径)代码:#include<iostream>#include<string.h>#include<stdio.h>#define N 1001using namespace std;struct St{ int x; int y;}s[N],sMin[N];//记录路径坐标的栈int Map[25][25] = { //迷宫地图 {1,1,1,1,1,1,1,1,1,1,1,1,1,.....原创 2021-12-01 16:41:25 · 921 阅读 · 0 评论 -
C++课程设计——电话簿(文件流)
项目简介: 电话本是我们日常生活中经常用到的东西,本项目不但实现了电话本中的增,删,查,改等功能,还充分的利用了c++中文件的操作,更加方便的存储了联系人信息。项目概况:共用240行代码。其中包括:四个头文件、一个全局变量(文件)、一个结构体、七个功能函数、一个主函数(一)程序框架#include<iostream>#include<fstream>#include<conio.h>#include<std...原创 2021-08-16 17:13:21 · 2446 阅读 · 0 评论 -
C语言编程练习--用指针遍历数组
代码】用指针遍历数组。原创 2022-07-21 20:52:09 · 1277 阅读 · 0 评论 -
C++编程练习--“栈”小练“我赌你的枪里没有子弹”
电影里经常会看到这样的场景,两个人拿着左轮手枪分别朝自己开枪,假如左轮手枪中能上六发子弹,其中只有一发是实弹, 两人轮流朝自己开枪为了表明谁更有勇气,谁胆量大谁就能当大哥……我只能默默地说一局:难怪国外人口少。(图片源于网络,侵权立删) 然而我们的重点并不在这种fc的举动上,我们要关注的是手枪或者说是它的“弹夹”。(图片源于网络,侵权立删)栈遵循“先进先出”的原则,这与给手枪上弹同出一辙。圧栈的过程就是一个一个填子弹的过程,出栈(也叫弹栈)就.........原创 2021-12-17 11:35:25 · 1075 阅读 · 0 评论 -
C语言文件读写操作详解
【代码】C语言文件读写操作详解。原创 2023-02-02 14:59:28 · 3632 阅读 · 1 评论 -
查缺补漏C++:命名空间
命名空间内部不仅可以声明或定义变量,对于其它能在命名空间以外声明或定义的名称,同样也都能在命名空间内部进行声明或定义,例如类、函数、typedef、#define 等都可以出现在命名空间中。如果命名空间 Li 中还定义了其他的变量,那么同样具有 fp 变量的效果。在 using 声明后,如果有未具体指定命名空间的变量产生了命名冲突,那么默认采用命名空间 Li 中的变量。声明了 Li::fp,它的意思是,using 声明以后的程序中如果出现了未指明命名空间的 fp,就使用 Li::fp;...转载 2022-08-13 08:36:57 · 294 阅读 · 0 评论 -
查缺补漏C语言:字符串处理函数
strcmp()从两个字符串的第0个字符开始比较,如果它们相等,就继续比较下一个字符,直到遇见不同的字符,或者到字符串的末尾。这意味着,arrayName1必须足够长,要能够同时容纳arrayName1和arrayName2,否则会越界(超出范围)。strcpy()会把arrayName2中的字符串拷贝到arrayName1中,字符串结束标志。另外,strcpy()要求arrayName1要有足够的长度,否则不能全部装入所拷贝的字符串。......转载 2022-07-19 16:04:40 · 159 阅读 · 0 评论 -
查缺补漏C语言:转义字符
对于ASCII编码,0~31(十进制)范围内的字符为控制字符,它们都是看不见的,不能在显示器上显示,甚至无法从键盘输入,只能用转义字符的形式来表示。转载 2022-07-19 08:37:22 · 167 阅读 · 0 评论 -
查缺补漏C语言:scanf( )的高阶用法
限制读取数据的长度在实际开发中非常有用,最典型的一个例子就是读取字符串我们为字符串分配的内存是有限的,用户输入的字符串过长就存放不了了,就会冲刷掉其它的数据,从而导致程序出错甚至崩溃;你看,scanf()也能读取带空格的字符串呀,谁说scanf()不能完全取代gets(),这明显是错误的说法。在用gets()函数读取字符串的时候,有一些编译器会提示不安全,建议替换为gets_s()函数,就是因为gets()不能控制读取到的字符串的长度,风险极高。,遇到其它的字符就读取结束;...转载 2022-07-18 19:21:53 · 940 阅读 · 1 评论 -
查缺补漏C语言:缓冲区(缓存)
但是有了缓冲区,就可以将数据先放入缓冲区中(内存的读写速度也远高于硬盘),然后程序可以继续往下执行,等所有的数据都准备好了,再将缓冲区中的所有数据一次性地写入硬盘,这样程序就减少了等待的次数,变得流畅起来。有时候,从键盘输入的内容,或者将要输出到显示器上的内容,会暂时进入缓冲区,待时机成熟,再一股脑将缓冲区中的所有内容“倒出”,我们才能看到变量的值被刷新,或者屏幕产生变化。在实际开发中,将数据写入文件后,打开文件并不能立即看到内容,只有清空缓冲区,或者关闭文件,或者关闭程序后,才能在文件中看到内容。...转载 2022-07-18 18:40:03 · 8198 阅读 · 6 评论 -
查缺补漏C语言:输入输出
输出只要符合代码的格式要求就能正确输出计算值。原创 2022-07-18 12:04:42 · 437 阅读 · 0 评论 -
查缺补漏C语言:字符串
我们除了用字符数组外还可以用指针的方式,在内存中直接开辟空间存储字符串,这种方式则更加灵活。putchar(a)和printf("%c",a)是C语言中两种输出字符的方式。puts(str)和printf("%s",str)是C语言中两种输出字符串的方式。而字符串是由多个字符拼接而成,由此我们可以很容易的想到可以用字符数组来表示字符串。char只能存储单个的字符,一般形式为‘a’,‘b’,‘c’。在C语言中没有专门的字符串类型,我们只能使用数组或者指针来间接地存储字符串。......原创 2022-07-18 10:57:10 · 185 阅读 · 0 评论 -
C/C++语言参考文档
链接:https://pan.baidu.com/s/14HdM-2x9XWWOwYRbHuz3dQ提取码:ht01原创 2021-11-12 09:42:18 · 743 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--STL 算法
1、什么是STL算法?STL 提供了大约 100 个实现算法的模版函数,基本都包含在<algorithm>之中,还有一部分包含在<numeric>和<functional>。完备的函数列表请参见参考手册,排序相关的可以参考排序内容的对应页面。2、相关方法find:顺序查找。find(v.begin(), v.end(), value),其中value为需要查找的值。 find_end:逆序查找。find_end(v.begin()...原创 2021-11-11 23:24:14 · 208 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--String
1、什么是string?std::string是在标准库<string>(注意不是 C 语言中的<string.h>库)中提供的一个类,本质上是std::basic_string<char>的别称。2、为什么要用string在 C 语言中,提供了字符串的操作,但只能通过字符数组的方式来实现字符串。而string则是一个简单的类,使用简单,在 OI 竞赛中被广泛使用。并且相较于其他 STL 容器,string的常数可以算是非常优秀的,基...原创 2021-11-11 23:16:15 · 485 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--关联式容器--bitset
1、什么是bitset?C++ Bitset(1)给程序员提供一种位集合的数据结构。Bitsets使用许多二元操作符,比如逻辑和,或等。(2)std::bitset是标准库中的一个存储0/1的大小不可变容器。严格来讲,它并不属于 STL。2、头文件#include <bitset>3、指定大小bitset<1000> bs; // a bitset with 1000 bits4、相关操作Constructors 创建新...原创 2021-11-11 22:51:04 · 306 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--关联式容器--自定义比较方式
set在默认情况下的比较函数为<(如果是非内置类型需要重载<运算符)。然而在某些特殊情况下,我们希望能自定义set内部的比较方式。这时候可以通过传入自定义比较器来解决问题。具体来说,我们需要定义一个类,并在这个类中重载()运算符。例如,我们想要维护一个存储整数,且较大值靠前的set,可以这样实现:struct cmp { bool operator()(int a, int b) { return a > b; }};set<int,...原创 2021-11-11 22:42:00 · 298 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--关联式容器--遍历容器
可以利用迭代器来遍历关联式容器的所有元素。set<int> s;typedef set<int>::iterator si;for (si it = s.begin(); it != s.end(); it++) cout << *it << endl;需要注意的是,对map的迭代器解引用后,得到的是类型为pair<Key, T>的键值对。在 C++11 中,使用范围 for 循环会让代码简洁很多:set<i...原创 2021-11-11 22:39:58 · 442 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--关联式容器--Maps
1、什么是Maps?C++ Maps(1)、C++ Maps是一种关联式容器,包含“关键字/值”对(2)、map是有序键值对容器,它的元素的键是唯一的。搜索、移除和插入操作拥有对数复杂度。map通常实现为红黑树。你可能需要存储一些键值对,例如存储学生姓名对应的分数:Tom 0,Bob 100,Alan 100。但是由于数组下标只能为非负整数,所以无法用姓名作为下标来存储,这个时候最简单的办法就是使用 STL 中的map了!(3)map重载了operator[],可以用任意定义了...原创 2021-11-11 22:31:26 · 568 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--关联式容器--set(集合)
1、什么是集合?C++ Sets(1)集合(Set)是一种包含已排序对象的关联容器(2)set是关联容器,含有键值类型对象的已排序集,搜索、移除和插入拥有对数复杂度。set内部通常采用红黑树实现。平衡二叉树的特性使得set非常适合处理需要同时兼顾查找、插入与删除的情况。(3)和数学中的集合相似,set中不会出现值相同的元素。如果需要有相同元素的集合,需要使用multiset。multiset的使用方法与set的使用方法基本相同。2、相关操作(函数) beg...原创 2021-11-11 22:16:28 · 265 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--容器适配器--优先队列
1、什么是优先队列?C++ Priority Queues(优先队列)(1)C++优先队列类似队列,但是在这个数据结构中的元素按照一定的断言排列有序。2、头文件#include <queue>3、定义std::priority_queue<TypeName> q; // 数据类型为 TypeNamestd::priority_queue<TypeName, Container> q; // 使用 Contain.原创 2021-11-11 15:02:51 · 162 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--容器适配器--队列
1、什么是队列?C++ Queues(队列)(1)C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。(2)STL 队列 (std::queue) 是一种先进先出 (First In, First Out) 的容器适配器,仅支持查询或删除第一个加入的元素(队首元素),不支持随机访问,且为了保证数据的严格有序性,不支持迭代器。2、头文件#include <queue>3、定义std::queue<TypeName> q; .原创 2021-11-11 14:42:43 · 1065 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--容器适配器--栈
1、什么是栈?C++ Stacks(堆栈)(1)C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。(2)STL 栈 (std::stack) 是一种后进先出 (Last In, First Out) 的容器适配器,仅支持查询或删除最后一个加入的元素(栈顶元素),不支持随机访问,且为了保证数据的严格有序性,不支持迭代器。2、头文件#include <stack>3、定义std::.原创 2021-11-11 14:26:36 · 468 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--序列式容器--forward_list(单向链表)--(C++11)
1、什么是forward_list?std::forward_list是 STL 提供的单向链表数据结构,相比于std::list减小了空间开销。2、forward_list的使用方法forward_list的使用方法与list几乎一致,但是迭代器只有单向的,因此其具体用法请参考(2条消息) C++学习笔记--STL标准模板库的认识与使用--序列式容器--list(链表)_代码骑士的博客-CSDN博客https://blog.csdn.net/qq_51701007/a...原创 2021-11-10 17:51:04 · 220 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--序列式容器--array(数组)--(C++11)
1、什么是array?std::array是 STL 提供的内存连续的、固定长度的数组数据结构。其本质是对原生数组的直接封装。2、为什么要用array?array实际上是 STL 对数组的封装。它相比vector牺牲了动态扩容的特性,但是换来了与原生数组几乎一致的性能(在开满优化的前提下)。因此如果能使用 C++11 特性的情况下,能够使用原生数组的地方几乎都可以直接把定长数组都换成array,而动态分配的数组可以替换为vector。3、成员函数隐式定义的成员函...原创 2021-11-10 17:45:45 · 544 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--序列式容器--list(链表)
1、什么是链表?C++ Lists(链表)(1)Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.(2)std::list是 STL 提供的双向链表数据结构。能够提供线性复杂度的随机访问,以及常数复杂度的插入和删除。2、相关操作:assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 e...原创 2021-11-10 17:23:46 · 198 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--序列式容器--deque(双向队列)
1、什么是双向队列?C++ Double Ended Queues(双向队列)双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。2、相关操作:Constructors 创建一个新双向队列 Operators 比较和赋值双向队列 assign() 设置双向队列的值 at() 返回指定的元素 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素.原创 2021-11-10 15:48:36 · 729 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--序列式容器--vector(向量)
1、什么是vector?(1)std::vector是 STL 提供的内存连续的、可变长度的数组(亦称列表)数据结构。能够提供线性复杂度的插入和删除,以及常数复杂度的随机访问。(2)Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。2、为什么要使用vector?1、vector可以动态分配内存很多时候我们不...原创 2021-11-10 14:56:49 · 411 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--序列式容器--squeue(队列)
1、创建方式:#include <queue>// queue构造 :1. queue<Typename T> s;2. queue<Typename T, Container> s;/* queue的 Container 需要满足有如下接口 : * back() * push_back() * pop_back() * 标准容器 std::vector / deque / list 满足这些要求 * 如使用 1 方式构造,默认容器使用 deque原创 2021-11-10 13:58:53 · 203 阅读 · 0 评论 -
C++学习笔记--STL标准模板库的认识与使用--序列式容器--stack(栈)
1、std::stack使用方式:#include <stack>// stack 构造 :1. stack<Typename T> s;2. stack<Typename T, Container> s;/* stack 的 Container 需要满足有如下接口 : * back() * push_back() * pop_back() * 标准容器 std::vector / deque / list 满足这些要求 * 如使用 1 方式构造.原创 2021-11-10 13:05:00 · 528 阅读 · 0 评论