一、C++string的创建方式1、string的头文件#include <iostream>//等价于C语言中的#include<stdio.h>#include <cstring>#include <string.h>//以上两种都是C语言的string头文件#include <string>//真正的C++头文件在C++中,#inc
一、常见的coding技巧1、使用assert断言使用场景:当我们不希望某件事情发生时,我们就使用断言,断言里面的判断条件可为任意的判断语句。当发生时,编译器会自动报错,并且会锁定到具体的行数。2、const修饰指针技巧当const放在*的左边时,限制的是指针指向的内容,不能通过指针变量改变指针指向的内容,但是指针变量本身是可以改变的。当const放在*的右边时,限制的是指针变量本身,指针变量本身
引言:完成一个三子棋游戏,这其实也算一个小项目。因此需要分文件书写。test.c用于测试game.c用于实现游戏里面的函数。game.h用于包含所有的头文件。其余test.c和game.c只需要引用 #include "game.h" 一步到位即可。一、大致的游戏框架。先是一个菜单,输入1/0,1表示开始游戏,0表示结束游戏。1/0表达式不仅方便我们等会在switch 语句中放入整数,
题目:彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。输入格式:输入在第一行中给出一个正整数 N(≤ 100)。随后 N 行,每行给出一张彩票的 6 位数字。输出格式:对每张彩票,如果它是幸运的,就在一行中输出 You are lucky!;否则输出 Wish you go
前言:在C/C++学习时,我们把内存大概分为3个区域。1、栈区用来存放局部变量和形式参数。临时作用的变量都是在栈区。栈区上变量的特点:进入作用域创建,出作用域自动销毁(将内存返回操作系统)2、堆区用于动态内存的分配。malloc,calloc,realloc,free3、静态区用于全局变量,实际参数,静态变量静态区变量的特点:创建好后,直到程序结束后才销毁。引言:static关键字修饰局部变量,全
变量:1、变量的定义2、变量的命名规则只能由字母(包括大写和小写)、数字和下划线_组成。不能以数字开头 长度不能超过63个字符变量名中区分大小写变量名中不能使用关键字3、变量的作用域和生命周期变量的作用域:1、局部变量的作用域是变量所在局部的范围。2、全局变量的作用域是整个工程!举例:在不同的文件,全局变量也可以使用,只需要在不同的文件里面extern需要声明外部符号变量的生命周期1、局部变
一、概念函数指针:指向函数的指针!(存放函数地址的指针)函数名和&函数名:数组名!=&数组名函数名= =&函数名如何将函数地址存放起来?跟数组指针很像首先为了表明它是一个指针,所以先需要(*pf),用括号括起来表示接着考虑函数的参数类型和返回类型为什么是函数指针,因为看到了()圆括号,所以就相当于数组指针需要看到【】,标识符!int (*pf) (int,int)注意后面那
引言:我于去年高考结束8月初开始接触编程,怀揣着激动的心下载了第一个编译软件(VS2022),并且成功调试编译出“hello world”,现如今,我还能记得那时激动的心,颤抖的手~这篇博客的意义就在于,回顾往事,不忘自己编程的那份初心!编程的目标:先不说遥远的目标(什么大学四年几万行代码),就立足于当下,争取每天能拿出一份像样的代码提交到gitee上去,编程这件事不是一蹴而就的,而是需要坚持不懈
一、题目:请输出该题的输出结果#include<stdio.h> int i; int main() { i--; if (i > sizeof(i)) { printf(">\n"); } else { printf("<\n"); } return 0; }答案:>解析:刚开始定义i是全局变量,若没有定义,则默认是0.i--就是-1.
一、概念下面哪个是数组指针?int *p1[10]; int (*p1)[10];int (*p)[10];解释:p先和*结合,说明p是一个指针变量,然后指向一个大小为10的整型数组,所以p是一个指针,指向整型数组,叫做数组指针。注意:【】的优先级要高于号,所以必须加上()保证先跟p结合,形成指针,不然就是一个整型数组。举个例子:double *d[5]写出他的数组指针。书写顺序:先写指针,说明这
一、字符指针普通用法:指向一个字符int main(){ char ch = 'w'; char* pc = &ch; *pc = 'm'; printf("%c\n", ch); return 0;}特殊用法:存入字符串此时将一个字符串存入一个字符指针,本质上是把这个字符串的首字母的地址存放到字符指针。TIP:C语言如何打印字符串?默认给出首元素地址,并用%s打印即可。一道笔试
一、题目:求a,b,c的值nt main(){ int a, b, c; a = 5; c = ++a;//c=6,a=6 b = ++c, c++, ++a, a++;//c=8,a=8,b=7 b += a++ + c;//a=9,b=23,注意先使用后++ printf("%a=%d b=%d c=%d:\n", a, b, c); return 0;}注意:1、a++,++a
常见题目类型:先看两道相同类型题目。这两道题的相同之处在于都是变化字符串的顺序,但其中某些部分按原来位置不变。解题思路:按照旋转数组进行解答。首先将后k个逆置,再将前n-k个逆置,最后整体逆置。即可得到答案。三步逆置也就体现了算法的核心思维,也就是三步翻转法。注意三步翻转法,无论是先整体逆置还是后整体逆置,效果是一样的,都翻转了两次算法实现:上述需要创建一个逆置函数,便于调用。只需要给出逆置的范围
一、题目#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int a = 1;//定义全局变量void test(){ int a = 2;//定义局部变量 a += 1;}int main(){ test(); printf("%d\n", a); return 0;}请问输出结果是什么?答案:a=1解析:定义a两次,一个是
1、指针关系运算比较两个指针(地址)的大小2、指针加减整数运算根据指针的类型,判断指针加减整数的步长。3、指针-指针的运算指针减去指针得到的是两个指针之间相差的元素个数!指针和指针相减的前提是两个指针指向同一块空间举几个例子int main(){ int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int* p = arr; int* pend = arr+9;
概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)野指针比喻为路上的野狗,没有主人的野指针成因1、指针不初始化TIP:局部变量和全局变量的初始化局部变量表示在主函数内部创建的变量(在main函数大括号里面创建的变量),局部变量不初始化,就默认是随机值。而全局变量不初始化,默认是0.int main(){ //这里的p就是野指针 int* p;//p是一个局部的指针变量
我们主要研究技术岗位。客户端开发客户端:客户使用的这一端,客户使用的软件的开发就称为客户端开发。客户端开发又分为移动客户端和PC客户端。移动客户端就是手机软件,PC客户端就是电脑软件。这些软件的开发就是客户端开发!服务端开发(后端开发)举两个例子,我们在百度网盘上上传电影,此时百度网盘的服务器需要接收,而这个服务器的开发就是服务端开发。淘宝上我们看到一个商品,想要他进行销量排序,此时淘宝的后端服务
调试可以看出不论是声明类型的指针变量,他的字节大小都是8个字节(在32位平台上是4个字节,在64位平台是8个字节),在大小上,指针类型没有任何区别。TIP:一个十六进制位==4个二进制位原因:假设1111是一个二进制位所能够表达的最大值,十进制表示就是15,而15就等于十六进制最大的表示字母f,所以为了能够让二进制位更加正确的表示十六进制位,直接最大限度让4个二进制位表示1个十六进制位!第一个意义
函数的声明:1、告诉编译器有个函数叫什么,参数是什么,返回类型是什么。但是具体存在不存在无关紧要2、函数的声明一般出现在函数的使用之前,要满足先声明后使用。3、函数的声明一般要放在头文件当中。函数定义:函数的定义是指函数的具体实现,交代函数的功能实现。test.h的内容:放置函数的声明test.h内容add .c内容test.c内容
题目:给定一个数组,将数组中的元素向右移动k个位置,其中k是正整数。进阶:尽可能相处更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为O(1)算法解决这个问题吗?示例解答:思路1:一步一步进行分解向右旋转一步时,可以将最右边的数移到第一个位置上,然后num-1向右移动一位,再嵌套循环k次。源码:int main(){ int num[7] = { 1,2,3,4,5,6
题目:消失的数字数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?示例:输入【3,0,1】输出:2解答:想法1:先排序后查找但一个排序耗费的时间就不符合O(n),最快的排序O(n*logn)。(注意二分查找的基础是已经排好序的数组!)想法2:相加再相减把0~N加到一起再减去数组中的数,即可求得,并且时间复杂度就是O(n)源码:#inc
1、什么是时间复杂度和空间复杂度1.1算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,二空间效率被称为空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,二空间复杂度主要衡量的一个算法所需要的额外空间。在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不
一、题目:小明写了一个十六进制数ABCDEF,他问你对应的十进制数是多少?思路:不能被带偏,想要自己将十六进制数转化位十进制数,再输出,其实不需要。只需要利用printf函数使用格式化打印%d即可。但需要输入前缀0x,不然以为是字符串!%x是打印十六进制数,十六进制的字母大小写区分和你格式化打印时的x有关。源码:#define _CRT_SECURE_NO_WARNINGS 1#include&l
一、题目:请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序。思路:数据是存储在内存当中,假设将1存储到内存之中,小端存储和大端存储区别就在于第一个字节内容是1/0;而我们知道指针类型的作用有解引用操作时访问几个字节,char类型的指针就访问一个字节。指针类型的意义:1、指针类型决定了指针解引用操作符能访问几个字节:char *p;*p 访问了一个字节,int *p; *p
引言:int a=20;int b=-10;我们知道为a分配四个字节的空间。那如何存储?下来先了解下面的概念一、原码反码补码计算机中的有符号数(是整型,与浮点数在内存中的存储无关)有三种表示方法,即原码反码补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位三种表示方法各不相同。辨析:有符号数分为正数和负数,正数和无符号数一样,原码反码补码相同,只有有符号
一、题目给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。输入格
一、题目时间限制:500ms空间限制:64MB很久以前,有位同学,在学完算法课的二分后,激动的振臂高呼:“我学会二分了!”。此时,一位学长从旁边经过听到此话,决定出一道题考考他,挫挫同学的锐气,让这位学弟再去好好刷二分.学长告诉学弟n个数据,再询问他q次,每次询问告诉学弟一个x,要求学弟在每次询问给出的x的下标。二、解题思路那么我们该怎么根据值找下标呢,如果能做到一对一映射,每个值对应一个下标,实
引言:在Easyx中,专门给了一个函数绘制多边形——polygon函数一、打印较简单的多边形像长方形、正方形、三角形、梯形这些多边形较容易打印,因为他们的顶点坐标较容易求出。比如三角形#include<easyx.h>#include<stdio.h>int main(){ initgraph(800, 600); setorigin(400, 300); setas
一、时间复杂度BigO首先我们不能以机器运行算法的时间来评判一个算法的时间复杂度,因为即使是相同的算法在不同机器上(机器的个体差异性)运行时间都可能不尽相同,因此我们采用【大O表示法】——算法的渐进复杂度T(n)=O(f(n))。 首先解读这个公式,f(n)表示代码执行的次数,O表示正比例关系,而T(n)就表示算法的渐进复杂度(就是当一个问题量
一、题目小明的一位同学是学霸,他的家中有很多藏书,真可谓汗牛充栋。小明想考一考学霸,给学霸出了一道难题。小明问这么多书籍,到底有多少本不一样的书,每样书的名字是什么?(因为有的书名是一样的,所以我们把它们视为同样的书)学霸就是学霸,张口就说出了答案。不知道你是否也是学霸?一起来挑战下!输入格式第一行是书籍总量n(1<=n<=1e6)。然后有n行书名(书名是一个英文字符串,字符串的长度小
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号