自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 二维数组逐行和逐列遍历效率

按行遍历效率高首先数组在内存中是按行存储的,按行遍历时可以从数组首元素地址一直走下去,就可以遍历完整个数组,而按列遍历则需要每次指向每一列的第n行元素;但是指针寻址很快,所以并不会有明显的区别;那么到底按行遍历比按列遍历效率高在哪里呢?1:CPU高速缓存CPU高速缓存是用于减少处理器访问内存所需平均时间的部件。在金字塔存储体系中位于第二层,仅次于CPU寄存器;其容量远小于内存,但是速度却可以接近处理器的频率。当处理器发出访问请求时,会先查看缓存内是否有请求数据,如果存在(命中),则直接返回数

2020-10-11 19:40:30 1841

原创 c++ 继承详细总结

c++中的继承1:继承的概念及定义a.继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。b.继承定义定义格式:class Student : public Person{public: int _id; int _major;}继承关

2020-08-14 23:16:42 248 1

原创 C++ list与vector的区别总结

vectorvector和数组类似,它拥有一段动态连续的内存空间,因此它能非常好的支持随机存取(即使用[]操作符访问其中的元素),但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝(复杂度是O(n)),另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。vector介绍与实现vector模拟实现listlist是由数据结构中的双向链表实现的,因此它的内存空间可以是不连续的。因此只能通过指针来进行数据的访问,这

2020-08-07 11:55:03 657

原创 C++ list深度刨析及模拟实现

1.list的介绍及使用1:list的介绍官方文档1:list是可以在常数范围内任意位置插入和删除的序列式容器,并且该容器可以前后双向迭代;2:list的底层是双向链表结构,双向链表的每个节点存储在互不相关的独立节点中,在节点中通过指针指向其前一个和后一个元素;3:list与forward_list非常相似:最主要的是forward_list是单链表,只能朝前迭代,以让其更简单高效;4:与其他序列式容器相比(array,vector,deque),list通常在任意位置进行插入,移除圆度的执行

2020-08-07 11:31:34 309 1

原创 C++vector深度刨析及实现

vector介绍及使用1:vector介绍官方文档1:vector是可变大小数组的序列容器2:就像数组一样,vector也采用连续存储空间来存储元素。也就意味着可以采用下标的方式对vector 的元素进行访问,和数组一样高效。但是又不像数组,它的大小是 可以动态改变的,而且它的大小会被容器自动处理。3:本质上讲,vector使用动态分配数组来存储元素。当新元素插入时,这个数组需要被重新分配大小来增加存储空间。其做法是,分配一个新的数组,然后将全部元素移动到这个数组当中去。就时间而言,这是一个相对

2020-08-05 23:55:48 382

原创 c++string类实现(现代写法与传统写法)

标准库中的string类:string是表示字符串的类;该类的接口与常规容器的接口基本相同,再添加了一些专门操作string的常规操作;string在底层实际是:basic_string模板类的别名:typedef basic_string<char,char_traits,allocator>string;不能操作多字节或者变长的序列;string类的常用构造函数string() 构造空的string类对象string(const char* s) 用C风格

2020-08-03 10:17:30 359

转载 c++指针与迭代器的区别

这是我感觉总结的很好的一篇回答:知乎原回答链接如果只讨论 STL container 类的 iterator,它们其实都是一种泛型指针。C风格指针是属于 iterator 的一种的。iterator 根据功能做了更细的划分,STL 中的 iterator 分成了五类。我觉得它们的区别:在范围上,pointer 属于 iterator 的一种(random access iterator)在功能上,iterator 有着比pointer 更细的划分并对应能力不同的功能(重载不同的运算符 )在行为上

2020-07-31 23:22:32 1113 1

原创 C&C++内存管理

c&c++内存分布先来看下面的代码:int globalVar = 1; static int staticGlobalVar = 1; void Test() { static int staticVar = 1; int localVar = 1; int num1[10] = {1, 2, 3, 4}; char char2[] = "abcd"; char* pChar3 = "abcd"; int* ptr1 = (int*)mall

2020-07-31 21:06:23 149 1

原创 c++类和对象详细总结

类和对象空类空类并不是什么都没有的,任何一个类在我们不写的情况下,都会自动生成六个默认成员函数:构造函数:主要内容不是开空间创建对象,而是初始化对象构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员 都有 一个合适的初始值,并且在对象的生命周期内只调用一次特性:(1):函数名与类名相同,无返回值,可以重载,对象实例化时编译器自动调用;(2):有无参构造和带参构造;(3):只有当类中没有任何构造函数时,编译器才会自动生成一个无参构造,如果类中已

2020-07-29 20:15:08 238

原创 c++类的大小

1:类大小与什么有关系?a:有关因素:普通成员变量;虚函数;继承(单一继承,多重继承,重复继承,虚拟继承)b:无关因素:静态成员变量;静态成员函数;普通成员函数为什么静态成员变量,静态成员函数和普通成员函数是无关因素?a:对于成员函数来说,函数名本身就指明了函数是属于哪个类的(连参数类型都有),因此,编译器在编译代码时,可以直接调用该类的成员函数,而不需要类本身提供任何信息。b: 对于静态成员变量来说, 静态成员变量占用全局的内存. 和全局变量分配的内存在同一个区域里面.,而sizeof()

2020-07-07 03:01:34 265

原创 C++11范围for详解

这里写自定义目录标题作用使用方法例子使用范围for来修改字符串的值为什么要用引用范围for与常规for循环语句比较使自己定义的容器类型支持范围循环作用C++ 11提供了一个特殊版本的 for 循环,在很多情况下,它都可以简化数组的处理,这就是基于范围的 for 循环。在使用基于范围的 for 循环处理数组时,该循环可以自动为数组中的每个元素迭代一次。使用方法如果对一个 8 元素的数组使用基于范围的 for 循环,则该循环将迭代 8 次。因为基于范围的 for 循环可以自动知道数组中元素的个数,所以不

2020-07-01 00:58:29 717 1

原创 最大子序列和问题(四种解法)-----c/c++语言

最大子序列和问题给定A1,A2,A3,…An(可能有负数),求最大的子序列和例如:输入-2,11,-4,13,-5,-2时,答案为20(11±4+13)。第一种:(穷举法)#include<iostream>//时间复杂度为O(N*N*N)int Maxsum(const int A[], int n){//三重循环列举所有可能序列,找出最大的 int thissum...

2020-02-16 15:33:32 2889

原创 关于qsort函数的分析以及用冒泡排序思想模拟实现回调函数

qsort函数qsort函数的定义为:void qsort (void* base, size_t num, size_t size, int (compar)(const void,const void*));这是c语言标准库中对qsort函数的定义,共有四个参数:1)->void *base :是要排序的数组名(或者可以理解为数组首元素地址)2)->size_t nu...

2019-12-28 14:25:45 150

原创 无符号数与有符号数相比

无符号数与有符号数相比较先来看一段代码#include<stdio.h>int i = 0;int main(){i–;if(i>sizeof(i)){printf(">\n");}else{printf("<\n");}return 0;}这段代码的输出结果是什么?结果出乎意料:>缓缓地打出三个问号 ???下面就来分析...

2019-12-25 22:00:32 206

原创 c 语言 -> 函数指针数组的用途: 转移表

函数指针数组要了解函数指针数组,先来看数组的定义int a[10] = {0};再看函数指针的定义void p(){printf(“hellow world\n”);}void (*p)();//这就是一个函数指针,顾名思义,首先它是一个指针,里面存的是函数p 的入口地址接下来就是函数指针数组的定义int (*p[10])(int x,int y);对于此类复杂式子,...

2019-12-22 22:04:23 211

原创 判断一个字符串是否为另一个字符串旋转后的字符串

题目判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 =AABCD和s2 = BCDAA,返回1给定s1=abcd和s2=ACBD,返回0.AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABC解题思路:1:将一个字符串旋转一次比较一次,如果出现完全相同的返回12:旋转的最大次数就是字符串的长度3:左旋...

2019-11-24 19:19:52 357

原创 实现一个可以将字符穿左旋k位的函数

题目实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB解题思路:1:根据题目,要用函数实现,所以可考虑指针2:先考虑左旋一位,将第一位标记,从第二位开始往后每一位前移一位,然后将标记的第一位放在字符串最后一位3:左旋k位就将第二步执行k次代码如下:#include<stdio.h>#include<w...

2019-11-24 19:04:47 107

原创 直接插入排序,折半插入排序和冒泡排序思想以及实现(c语言)

直接插入排序算法思想:直接插入排序的基本操作是将第 i 个记录插入到前面 i-1 个已经排好序的记录中。具体过程为:将第 i 个记录的关键字 K 依次与前面排好序的关键字比较,如果比较的关键字大于 K ,则将该关键字后移一位,直至遇到小于 K 的关键字或到序列头部,然后将 K 插入到该关键字后面或序列头部(之前比较过的已经后移一位,所以会留有一个空位置供 K 插入)。算法描述:void...

2019-11-09 11:41:32 715

原创 c语言实现扫雷游戏

扫雷实现思路:(1):首先要有棋盘,(类似于上一篇博客中的棋盘)供玩家扫雷(2):那么需要几个棋盘呢?至少要一个吧(玩家可见的),然后,还要再有一个棋盘(玩家不可见的)来存储雷的位置信息(3):扫雷游戏中,到玩家输入的坐标处没雷是要显示其周围类的个数,所以要有一个计算周围雷个数的函数大概的结构就是这样了,具体流程还是在代码中说明依旧采用多文件格式首先是头文件game.h#ifn...

2019-11-03 22:26:08 666 1

原创 C语言实现简单三子棋

三子棋实现思路:其实三子棋就是五子棋的简易版,只是三子棋的棋盘较小(本例子中棋盘较小),判断输赢的逻辑比较简单,要实现三子棋:(1):显示棋盘,棋盘可以用二维数组表示;(2):实现人机对战,电脑落子的位置可以用随机数表示;(3):判断输赢(三子连珠),还要注意棋盘是否已满;(4):每下一步子显示棋盘的时候刷新界面(这个属于windows的命令,很有意思,有兴趣可以搜索一下);具体...

2019-11-03 21:46:12 238

原创 二进制数转为十进制数 c语言实现

二进制转十进制二进制转十进制原理如下十进制数除二 余数再除二 余数……1或者0 1 / 0然后结果就是余数从下至上的所有数。余数只可能是0 / 1.代码#include<stdio.h>#include<math.h>int main(){ int a[10] = {1,0,0,1,0,1,1...

2019-10-30 22:51:33 1844 1

原创 蓝桥杯 特殊字符 c语言实现

题目问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式输出n行,每个m个字符,为你的图形。样例输入5 7样例输出ABCDEFGBAB...

2019-10-30 22:42:44 203

原创 老生常谈 杨辉三角形 蓝桥杯 c语言实现

题目问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。  它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1  1 3 3 1要求:  给出n,输出它的前n行。输入格式输入包含一个数n。输出格式输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个...

2019-10-30 22:25:37 565

原创 蓝桥杯 数列排序 c语言实现

蓝桥杯 数列排序题目问题描述  给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式  第一行为一个整数n。  第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式  输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 8 9思路假设i是外层循环,j为内层循环i从...

2019-10-28 22:55:58 2010

原创 蓝桥杯 特殊回文数 c 语言实现

蓝桥杯 特殊回文数 c语言实现题目题目问题描述  123321是一个非常特殊的数,它从左边读和从右边读是一样的。  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式  输入一行,包含一个正整数n。输出格式  按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出899998989989998899数据规模和约...

2019-10-28 22:28:06 719 1

原创 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表。

#题目:实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,输入9,输出99口诀表,输入12,输出1212的乘法口诀表。代码:#include<stdio.h>#include<windows.h>#pragma warning(disable:4996)void multiplication(int n)//子函数{ int i = 0, j = 0...

2019-10-21 22:41:24 166

原创 可以一直从键盘接收字符,小写就输出大写,大写就输出小写,其他不输出

#思路使用getchar() 和 putchar()函数(使用方法在前几次的博客中)代码:#include<stdio.h>#include<windows.h>int main(){ int c; printf("输入字符:\n"); while ((c = getchar()) != EOF)//EOF的值其实为-1 { if ('A' &...

2019-10-17 20:00:31 127

原创 折半查找,在有序数列中查找指定值(也叫二分法查找)

#折半查找折半查找的思想:每次与数列中间值进行比较,小于中间值就与前半部分的中间值比较,大于就与后半部分的中间值比较,直至剩最后一个数。代码:#include<stdio.h>#include<windows.h>#pragma warning(disable:4996)int bin(int A[],int left, int right, int key)/...

2019-10-17 19:55:47 653

原创 c语言实现简单猜数字游戏

#题目计算机随机生成一个数,用户来猜,程序只会提醒大了还是小了,直至猜出答案程序结束。代码:#include<stdio.h>#include<windows.h>#pragma warning(disable:4996)#define USER "wang"//定义用户名和密码#define psd "456123"//游戏开始界面void J(){ ...

2019-10-17 19:45:53 1595 1

原创 错题总结(2)求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字, 例如:2+22+222+2222+22222

#题目求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222思路:首先求出数列的每一位数值,然后求和就好了之前的错误在代码中标明#include<stdio.h>#include<windows.h>#pragma warning(disable:4996);int ride(int n ,...

2019-10-15 16:32:44 387

原创 错题总结(1)水仙花数

#题目:在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:153 = 1^3 + 5^3 + 3^3。370 = 3^3 + 7^3 + 0^3。371 = 3^3 + 7...

2019-10-15 16:15:54 241

原创 关于stdio.h中四种常用方法gets(),getchar(),puts().putchar()的总结

#gets函数功能:从缓冲区读取一个“字符串”存储到字符指针变量str指向的内存空间例如:#include<stdio.h> int main() {  char str[20];//定义字符数组  printf("输入字符串:\n");  gets(str);//调用gets()函数  printf("%s",str);  ret...

2019-10-13 22:49:12 1439

原创 c语言求最大公约数的三种方法

##一:辗转相除法(最常见的一种方法)公式:gcd(i,j) = i;(b = 0)思路:(1)判断两数大小,如果i > j;直接进行下一步;若i < j;交换两数值;(2)i 对 j 求余,如此循环,直至 j = 0;(3)返回 i 的值,此时 i 即为最大公约数。代码如下:#include<stdio.h>#include<windows.h&gt...

2019-10-03 13:28:15 14352

原创 学习规划

初来乍到本人是来自工程大的一名大三学生,就读于软件工程专业,学习过C语言以及JAVA,但是总感觉编程能力不好,因此注册这个博客,用来记录以后在编程方面的学习进程。一:编程目标对编程过程中的各种语句足够熟练对常用的几种数据结构和算法做到精通并能灵活运用可以针对不同的题目设计合理的数据结构以及高效正确的算法代码简洁明了,有结构性二:怎么学习理论知识与实践能力同步提升,在通过阅读各种资料...

2019-09-28 11:24:30 178

空空如也

空空如也

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

TA关注的人

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