暂时未有相关云产品技术能力~
暂无个人介绍
🏡概念 🏡链表结构体的定义 🏡链表为空的判断 🏡链表节点的创建 🏡链表的初始化 🏡链表的打印 🏡链表的尾插 🏡链表的头插 🏡链表的尾删 🏡链表的头删 🏡链表的查找 🏡链表中在pos之前插入 🏡删除pos的值 🏡链表的销毁 🏡链表为什么使用的是一级指针 🌸(1)单链表(非头单向不循环连链表)使用二级指针 🌸(2)带头双向循环连链表使用一级指针 🏡狡猾的面试官 🏡链表的源码 🌸main函数 🌸test.h文件 🌸test.c文件
🐰string类 🏡string类的简介 🏡C++11字符串的初始化 🏡string类型中的赋值、拼接和附加 🏡string的其他操作 🏡string类I/O
new和delete
🐰C++空指针NULL和nullptr 🏡空指针
🐰C++格式输入输出 🏡用流对象的成员函数控制输入输出格式 🌸1.控制格式的标志位 🌸2.使用成员函数设置标志字 🌸3.使用成员函数设置域宽、填充字节、精度 🏡用控制符控制输入输出格式
环形链表 环形链表 II
链表分割 链表的回文结构 相交链表
移除链表元素 反转链表 合并两个有序链表 总结
🐰单链表 🏡单链表的定义 🏡单链表的打印 🏡单链表的创建节点 🏡单链表的头插 🏡单链表的尾插 🏡单链表的尾删 🏡单链表的头删 🏡单链表的查找 🏡单链表的改动 🏡单链表的元素个数 🏡单链表的任意位置插入元素 单链表的任意位置删除元素 🏡单链表的销毁 🏡单链表中的源码 🌸main文件 🌸头文件test.h 🌸test.c文件
🐰文件操作与文件流 🏡文件流类和文件流对象 🏡文件的打开与关闭 🌸1.文件的打开 🌸2.文件的关闭 🏡对文本文件的操作 🏡对二进制文件的操作 🌸1.用成员函数write和read操作二进制文件 🌸2.随机访问二进制文件
🐰 C++的输入输出 🌸C++的输入输出 🌸C++的输入输出流 🏡iostream类库中有关的类 🌸用流成员函数put输出一个字符 🌸用流成员函数write输出字符串 🌸用流成员函数get获取一个字符 🏡1.无参数的get 🏡3.有三个参数的get函数 🌸用流成员函数getline读取字符串 🌸用流成员函数read读取字符串
🐰转换构造函数 🐰类型转换函数
🐰插入运算符">>"和提取运算符"<<"的重载 🌸(1)要对"<<"和">>"运算符进行重载,必须重载为类的友元函数 🌸(2)重载的友元函数的返回类型应该是ostream对象或者istream对象的引用,即ostream&或istream& 🌸利用"<<",">>"以及"+","-"的重载实现,时差的计算
🐰 运算符的重载 🌸实现对象之间的运算 🌸重载运算符的规则
🐰文件操作 🌸 fwrite 🌸fread 🌸fseek 🌸fteel 🌸rwind 🌸文本文件和二进制文件 🌸文件结束的判定 🌸文件缓冲区 🌸 实现拷贝一个文件
🐰文件操作 🌸打开文件 🏡文件的顺序读写 🌸fputc字符输入函数(适合所有输入流) 🌸fgetc(适合所有的输出流) 🌸fputs(适合所有的输入流) 🌸fgets(适合所有的输出流) 🏡格式化的读写 🌸fprintf(适合所有的输入流) 🌸fscanf读取文件(适合所有的输出流) 🏡流 🌸屏幕这个流(stdout)输出 🏡对比:printf/fprintf/sprintf和scanf/fscanf/sscanf 🌸sprintf(把格式化数据转换成字符串) 🌸sscanf(把字符串转换成相应格式化数据)
🐰虚基类 🌸虚基类的声明 🌸虚基类的初始化 🌸总结
🐰多重继承 🌸声明多重继承的方法 🌸多重继承派生类的构造函数与析构函数 🌸多重继承引起的二义性
🐰 基类与派生类对象的关系 🐰派生类的构造函数
🌸通讯录的需求 通讯录的功能 🐰 通讯录的原码 🌸主函数 🌸头文件 🌸函数实现文件
🐰strtok 🐰strerror 🐰memcpy 🐰模拟实现memcpy 🐰memmove 🐰模拟实现memmove 🐰memcmp 🐰memset
🐰对象与const 🏡常对象 🏡常对象成员 🌸常数据成员 🌸常成员函数 🏡指向对象的常指针 🏡指向常对象的指针(常量指针) 🏡对象的常引用
🐰析构函数 🌸析构函数的定义 🌸析构函数的应用: 🐰对象数组 🐰指向对象的指针 🌸对象指针的概念: 🌸定义对象指针: 🌸指向对象的数据成员的指针 🌸指向对象的成员函数的指针
🐰类与对象 🌸类和对象的关系: 🌸类的声明和对象的定义 🏡类的声明: 🏡对象的定义 🐰类的成员函数 🐰对象成员的访问 🐰构造函数和析构函数 🌸构造函数: 🏡构造函数的概念: 🏡构造函数的特性: 🏡构造函数的初始化列表
🐰inline 函数 🐰string类 🌸1.字符串的定义: 🌸2.访问字符串 🌸3.字符串的连接 🌸4.字符串的比较 🌸5.字符串长度的计算 🌸6.字符串的交换 🌸7.字符串数组 🐰static_cast强制类型转化
题目:BC134 蛇形矩阵 难度:中等 描述: 给你一个整数n,输出n∗n的蛇形矩阵。 输入描述: 输入一行,包含一个整数n 输出描述: 输出n行,每行包含n个正整数,通过空格分隔。 1<=n<=1000 示例1
题目:BC156 牛牛的数组匹配 描述: 牛牛刚学会数组不久,他拿到两个数组 a 和 b,询问 b 的哪一段连续子数组之和与数组 a 之和最接近。 如果有多个子数组之和同样接近,输出起始点最靠左的数组。 输入描述: 第一行输入两个正整数 n 和 m ,表示数组 a 和 b 的长度。 第二第三行输入 n 个和 m 个正整数,表示数组中 a 和 b 的值。 输出描述: 输出子数组之和最接近 a 的子数组 示例1 输入:
题目:BC139矩阵交换 难度:中等 输入描述: 第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。接下来一行输入k,表示要执行k次操作(1≤k≤5)。接下来有k行,每行包括一个字符t和两个数a和b,中间用空格格分隔,t代表需要执行的操作,当t为字符'r'时代表进行行变换,当t为字符'c'时代表进行列变换,a和b为需要互换的行或列(1≤a≤b≤n≤10,1≤a≤b≤m≤10)。 提示:当t为别的字符时不需要处理
🐰浮点型在内存的存储 🤔提示:数据类型的存储范围 🌸浮点型的类型: ✈️引入: 🐰浮点型数据存储的规则 🌸有效位数字M的规定 🌸10进制的小数转换成2进制的小数 🌸指数E的规定 🌸引入的解读
行列式是一个数,是一个结果 三阶行列式的计算:主对角线的乘积 全排列与对换 逆序数为奇就为奇排列,逆序数为偶就为偶排列 对换: 定理一:一个排列的任意两个元素对换,排列改变奇偶性(和行列式的行(列)交换,符号要变化) 行列式的定义: 上下三角行列式和对角行列式:它的值就是主对角线的乘积
🐰引用和指针的区别 🌸从现象上看 🌸从编译上看 🤔提示
🐰算数操作符:+ - * / % 🐰移位操作符:<< >> 🌸进制的定义 🌸整数二进制表示形式 🌸<< 左移操作符 🌸>>右移操作符 🐰位操作符:& | ^ 🌸&(按位与)|(按位或) 🌸^(按位异或) 🐰赋值操作符: =
🐰结构 🌸数据类型的定义 🌸关键字struct 与 class 的困惑 🌸使用struct 🐰位域(位段) 🐰成员对齐 🌸结构内存大小的计算 🐰联合(Union) 🌸联合内存大小的计算 🐰枚举(enum) 🌸枚举类型的大小
题目要求 1、构成单词的字符只有26个大写或小写英文字母; 2、非构成单词的字符均视为单词间隔符; 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符; 4、每个单词最长20个字母;
任何数组,不论是静态声明的还是动态创建的,其所有元素在内存中都是连续的字节存放的,也就是说保存在一大块连续的内存中。
首先我们得了解扫雷的规则,扫雷的规则我们随便点一个格子,方格即被打开并显示出方格中的数字,方格中数字则表示其周围的8个方格隐藏了几颗雷,点开的数字是几,则说明该数字旁边的8个位置中有几个雷,如果挖开的是地则会输掉游戏,重新开始,所以扫雷也有一定的运气成分。
这个三字棋看似生活不起眼的小游戏,但是对于像我一样才开始接触C的人来说,实现起来也不是那样轻而易举。实现三字棋的过程,让我明白掌握代码并非最重要的,最重要的是,理清实现功能的逻辑,例如:实现这个游戏时,首先得了解游戏规则,其次需要一个棋盘......只要自己逻辑清晰,写代码也是水到渠成,还有一点,只要自己掌握逻辑,下次想再次实现这个功能或着分析已写的代码就不会犯怵了。最后我们要多善于整理总结,下次我们遇到类似的问题,就可以触类旁通了。
strerror函数用于调用库函数失败时,翻译错误信息,引用头文件#include<string.h>
注意事项 1.目标空间必须要有要追加的空间的空间才能够追加成功,就是说目标空间arr剩余的空间能够容下追加空间brr的字符串 2.追加的空间必须要有'\0',srcat()是遇到‘\0’才停止追加,如果没有'\0',就一直追加,导致追加失败 3.是不能给自己追加,就是追加空间是arr,目标空间也是arr
strcpy()是在一个空间里拷贝一个字符串,遇到\0停止,同时也会拷贝\0
当我们想要交换一个字符串的顺序,我们应该怎么做呢,例如“abcdefg”我们要转化为“gfedcba”,那我们来看看下面的代码
杨辉三角(也称帕斯卡三角)相信很多人都不陌生,它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。