首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++】IO流

printf(): 将指定文字/字符串输出到标准输出设备(屏幕)。 注意宽度输出和精度输出控制。C语言借助了相应缓冲区来进行输入与输出。...C++ 流是指信息从外部输入设备(如键盘)向计算机内部(如内存)输入和从内存向外部输出设备(显示器)输出过程。这种输入输出过程被形象比喻为“流”。它特性是:有序连续、具有方向性。...在线 OJ 中输入和输出: 对于 IO 类型算法,一般都需要循环输入; 输出:严格按照题目的要求进行,多一个少一个空格都不行; 连续输入时,vs 系列编译器下在输入 ctrl+Z 结束...,也就是浅拷贝问题,相当于两个结构体对象中 string 都指向同一个空间,所以会出现析构两次情况。...使用 itoa() 函数 使用 sprintf() 函数 但是两个函数转化时,都得需要先给出保存结果空间,那空间要给多大呢,就不太好界定,而且转化格式不匹配,可能还会得到错误结果甚至程序崩溃。

12810

《剑指Offer》50道算法面试题

1到最大n位数 面试题13:O(1)时间删除链表结点 面试题14:调整数组顺序使奇数位于偶数前面 面试题15:链表中倒数第k个结点 面试题16:反转链表 面试题17:合并两个排序链表 面试题18...24:判断数组是否符合二叉搜索树后序遍历序列 面试题25:二叉树中和为某一值得路径 面试题26:复杂链表复制 面试题27:二叉搜索树转换为排序双向链表 面试题28:打印字符串中字符所有排列 面试题...面试题35:第一个只出现一次字符 面试题36:数组逆序对 面试题37:两个链表第一个公共结点 面试题38:数字排序数组中出现次数 面试题39.1:二叉树深度 面试题39.2:判断二叉树是否为二叉平衡树...面试题40:数组中只出现一次数字(除两个数字外,其余都出现两次) 面试题41.1:递增排序数组中查找和为s两个数 面试题41.2:打印出和为s连续正数序列 面试题42.1:翻转单词顺序,但单词中字符顺序不变...面试题42.2:实现字符串左旋转功能 面试题43:打印出n个骰子点数s所有可能出现概率 面试题44:随机抽5张牌是不是连续(大小王可看成任意数字) 面试题45:圆圈中最后剩下数字 面试题46:不使用乘除

2.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

Python入门(7)

请注意,这里有个术语: (1)定义函数给定参数名称,称作“形参”Parameters), (2)调用函数,给函数提供有值参数,称作“实参”(Arguments)。...请注意,函数print_num有两个形参a和b。我们调用这个函数,(有值)实参是按先后顺序来给形参传值,也就如上面的2和x是传给a,4和y是传给。...调用函数显示x和直接显示x值 func_3(x) print('函数外部变量x值:', x) #第三次打印 ‍说明:请注意,这个示例中函数外部和内部同时创建两个名为x变量,但他们本质上并不是同一个变量...(2)第二次打印输出是被修改后x值(5)。 (3)第三次是一个打印语句,输出然是x的当前值(5),已被函数修改。 5、函数默认参数 函数参数,本质上就是变量。...一些高级代码编辑器中,调用函数,我们将鼠标移动到函数名称上,就会帮我们显示这个函数描述文本,给我们编写代码带来极大便利。因此,我们应该尽可能习惯使用函数文档字符串

31240

字符串:KMP算法还能干这个!

示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成。...(或者子字符串 "abcabc" 重复两次构成。) 思路 这又是一道标准KMP题目。 我们字符串:都来看看KMP看家本领!里提到了,一个串中查找是否出现过另一个串,这是KMP看家本领。...「强烈建议大家把next数组打印出来,看看next数组规律,有助于理解KMP算法」 如图: ?...代码如下: C++代码 class Solution { public: // KMP里标准构建next数组过程 void getNext (int* next, const string...然后通过字符串:都来看看KMP看家本领!讲解一道KMP经典题目,判断文本串里是否出现过模式串,这里涉及到构造next数组代码实现,以及使用next数组完成模式串与文本串匹配过程。

57240

公司数据结构+算法面试100题

同一层中按照从左往右顺序打印。 ...注意,并不要求子串(字符串一)字符必须连续出现在字符串二中。 请编写一个函数,输入两个字符串,求它们最长公共子串,并打印出最长公共子串。...例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们最长公共子串, 则输出它们长度4,并打印任意一个子串。...(或者:怎样只用4行代码编写出一个从字符串到长整形函数?) 98.第2组微软面试题 1.给出一个函数来输出一个字符串所有排列。 2.请编写实现malloc()内存分配函数功能一样代码。...3.给出一个函数来复制两个字符串A和B。字符串A后几个字节和字符串B前几个字节重叠。  4.怎样编写一个程序,把一个有序整数数组放到二叉树中?  5.怎样从顶部开始逐层打印二叉树结点数据?

3.2K90

数组【从零到一】【纯干货】(不看后悔系列)

,其中最后一个字符是\0 使用时需注意: 数组长度和字符串长度是两个不同概念,strlen计算字符串长度,char ch[]=“'b','i','t'”,计算其长度,由于没有\0,找不到结束标志...,因此计算其长度打印出来是随机值。... 二维数组在内存中存储:有下图所示代码我们可以惊奇地发现,二位数组地址在内存中竟然也是连续存放。...也就是说,只要拿到第一个元素地址,后面的元素都可以打印出来,如下图实例所示: 三、数组重点知识点 在学习scanf函数,我们了解到了数组名不用取地址,因为数组名本身就是首元素地址,所以需要打印数组首元素地址直接打印数组名即可...数组实际使用中有两个例外 1.sizeof(数组名)--数组名表示整个数组--计算是整个数组大小--单位是字节 2.

9010

【CC++】C语言特性总结

参考链接: C++ fputs() 已经有大约半年时间没有碰C语言了,当时学习时候记录了很多笔记,但是都是特别混乱,后悔那个时候,不懂得写博客,这里凭借记忆和零零散散笔记记录,尝试系统性地复习一下...  注释  //叫行注释,注释内容编译器是忽略,注释主要作用是代码中加一些说明和解释,这样有利于代码阅读/* */叫块注释块注释是C语言标准注释方法行注释是从C++语言借鉴过来  return...当strtok()参数s字符串中发现参数delim中包含分割字符, 则会将该字符改为\0 字符,当连续出现多个只替换第一个为\0。...同一数组所有的成员都是相同数据类型,同时所有的成员在内存中地址是连续。  数组属于构造数据类型: 一个数组可以分解为多个数组元素:这些数组元素可以是基本数据类型或构造类型。 ...关于二维数组:  二维数组概念上是二维:其下标两个方向上变化,对其访问一般需要两个下标。

98600

【CC++】C语言特性总结

注释 //叫行注释,注释内容编译器是忽略,注释主要作用是代码中加一些说明和解释,这样有利于代码阅读 /* */叫块注释 块注释是C语言标准注释方法 行注释是从C++语言借鉴过来 return...当strtok()参数s字符串中发现参数delim中包含分割字符, 则会将该字符改为\0 字符,当连续出现多个只替换第一个为\0。...类型转换原则:占用内存字节数少(值域小)类型,向占用内存字节数多(值域大)类型转换,以保证精度不降低。 C语言数组字符串 数组相关 数组就是在内存中连续相同类型变量空间。...同一数组所有的成员都是相同数据类型,同时所有的成员在内存中地址是连续数组属于构造数据类型: 一个数组可以分解为多个数组元素:这些数组元素可以是基本数据类型或构造类型。...关于二维数组: 二维数组概念上是二维:其下标两个方向上变化,对其访问一般需要两个下标。

1.2K10

秋招算法岗面经(主要是撸代码题)

GBDT和LSTM,所以这两个知识点是几乎逢面必问便导致其他机器学习深度学习知识点就问比较少,所以我主要贴出我面试中遇到部分代码题,供大家参考。...百度: 一面:1、一个数组中只有两个数字只出现了一次,其他都是两次,找出这两个数字(异或方法)。2、二叉树中找出两个结点最近公共祖先。3、画出LSTM网络结构,写出GBDT过程。...搜狐(实习): 一面:输入一个表达式字符串输出该表达式值(递归方法)。 二面:反转字符串,用c++做。...滴滴外卖(实习): 一面:1、组合,一个数组中有重复元素,输出包含k个元素所有组合,时间复杂度要低。2、找一个无序数组中位数,时间复杂度尽可能优化。...三面:任意给定一个凸多边形,用一条连续线段将这个凸多边形分成面积相等两部分(这两部分也是连续两部分),只能用尺规作图,即只能画线段、取中点、画平行线等操作。

79110

笔试强训错题总结(一)

,%5.3s指的是域宽为5,但是只打印三个字符,不足地方用空格来填充 最后答案选:B ---- 头文件及上下文均正常情况下,下列代码运行结果是() int a[] = {1, 2, 3,...有语法错,不能正确执行 D. %%%% 转义字符是我没想到两个%只能输出一个%,所以答案选A ---- C++ 中,有如下类模板定义: 已知 b1, b2 是 BigNumber 两个对象,...个元素,求连续数组最大和。...输出描述:所有连续数组中和最大值。...,那么就说明比这个数大数放进来也不会是幸运,那么此时就打断回溯 4.回溯以后进行去重,如果有两个一样数,就不能再将这个数作为开头了,否则会将两个重复结果作为两次输出,而且因为前面排序原因,不用担心会有

14810

Java 学习笔记(4)——java 常见类

== 比较是它们地址是否相同,这个程序分别输出是 true、false、false,也就是说a b 是指向同一个地址空间,而c则不是。...C中如果我们写下这样代码: char* psz1 = "abc"; char* psz2 = "abc"; 那么程序加载到内存中全局数据段中会存在一个连续内存空间保存是 'a','b',...它使用十分简单,与C/C++数组使用基本相同,注意事项也是基本相同。...+ c来退出sc.next输入 > ctrl+c //输出 >hello world python java c++ c lisp 上述代码首先执行到sc.next 位置,并且中断下来,我们输入上述一些字符串...当没有值,程序会再次中断sc.next() 位置,这个时候输入 ctrl + c ,此时程序再次执行到 sc.hasNext() 这个地方会返回false,这个时候循环退出,并依次打印这些内容。

61530

CoreJava第三章要点速记

int -> float、long -> float、long -> double 可能丢失精度 二元操作需要将两个操作数转为同一类型。...注意:   一定不要使用 == 检查两个字符串是否相等!这只能判断两个字符串是否放在同一内存位置上。虽然放在同一位置上字符串必然相等,但是完全有可能将内容相同多个字符串拷贝防止不同位置上!...3.7.2 格式化输出   幸运是,Java沿用了C/C++标准输入输出printf(),Java中是System.out.printf()方法。...文件输出:同理,构造一个打印流对象即可。...C/C++中,多维数组所有数据通常也是连续摆放在内存一片区域中,而Java中数组更像是“数组数组”,例如二维数组a引用内存中,其实保存是row个一位数组引用。

1.9K30

精读《JS 数组内部实现》

HOLEY_ELEMENTS PACKED 翻译为打包,实际意思是 “连续有值数组”;HOLEY 翻译为孔洞,表示这个数组有很多孔洞一样无效项,实际意思是 “中间有孔洞数组”,这两个名词是互斥...SMI 表示数据类型为 32 位整型,DOUBLE 表示浮点类型,而什么类型都不写,表示数组类型还杂糅了字符串、函数等,这个位置上描述也是互斥。.../test.js --allow-natives-syntax 同时, test.js 里使用 %DebugPrint 打印我们要调试数组,如: const arr = [] %DebugPrint...实际上这两种模式是根据固定规则相互转化,具体查了下 V8 源码: 字典模式 V8 代码里叫 SlowElements,反之则叫 FastElements,所以要看转化规则,主要就看两个函数:ShouldConvertToSlowElements...也就是说,我们随意创建数组时候,V8 会分析数组元素构成与长度变化,自动分发到各种不同子模式处理,以最大化提升性能。

80920

c++之复合类型笔记(二)

1.使用new和delete 不要使用delete来释放不是new分配内存。 不要使用delete释放同一块内存两次 如果使用new[]为数组分配内存,则应使用delete[]释放。...  多数情况下,c++数组名视为数组第一个元素地址。...注:仅当两个指针指向同一数组(也可以指向超出结尾一个位置),这种运算才有意义 int tacos[10]={1,2,3,4,6,7,9,8,10}; int * pt = tacos;...  cout和多数c++表达式中,char数组名、char指针以及用引号括起来字符常量都被解释为字符串第一个字符地址。...自动变量通常存储栈中。(这意味着执行代码时候,其中变量依次加入到栈中,而在离开代码,将按反方向释放这些变量,即后进先出FILO)。

28340

【数据结构】第一章——绪论2

当i值不为1且i值也不为2,我们执行是一对一输出,可以看到结果展示每一个输入值都能得到一个输出,并且同一个输入能得到同一输出; 当i值为2,我们执行是多对一输出,这时需要输入第二个变量...j,从结果中可以看到当满足i==2这个条件,不管j值为多少,我们都能得到hello打印结果; 当i值为1,我们执行是一对多输出,我们通过rand函数与srand函数生成随机数使数组下标随机...,在这种情况下同一个i值得到结果却是截然不同; 我们现在从算法确定性角度来分析,那么对于输出数组元素这个内容实现显然就不满足算法的确定性;为了实现输出数组元素功能,我们可以如下进行代码编写:...理解 对于一个好算法,能够让大家很好理解每一句代码含义,比如我要实现两个整数互换: 在这个代码中我们很容易理解每一句代码含义,我们进行输入后,第一次输出值就是我们输入值,我们通过第三个变量...理解 对于健壮性,我们可以通过switch语句来进行理解: 在这个代码中,我们通过多组输入方式来进行连续输入,如果输入值都为整型,则可以进入循环执行分支语句,但是当输入值不是整型,则结束循环打印

11830

数组还能这么用,学到了!

来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 这个问题源于读者阅读redis源码一个疑问。...先看下面的代码,对于包含动态字符串成员两个结构体Test0和Test1占用空间分别是多少呢?...(关于字节对齐,参考《字节对齐,看这篇就懂了》) 柔性数组(flexible array) 实际上这是C99中引入柔性数组特性。...前者需要两次内存申请,而后者只需要一次。前者地址不连续两次malloc),后者地址连续。而你访问成员c时候,只需要下面这样就可以: t1->c,和普通成员无异。...要判断它们地址是否连续也非常简单,只需要分别打印b和c地址就可以了。 和内存释放类似,前面需要单独释放成员c申请内存,而后者可以一起释放。

39120

【C语言经典例题】——程序员必须会经典基础例题(三)

方法一:题目没有考虑到时间复杂度,这里最简单粗暴就是将两次输入数据放在一个m+n数组里,然后再进行冒泡排序。...如下: #include //有序序列合并 //把两次输入都放到同一数组,然后对它进行冒泡排序 int main() { int n = 0; int m = 0...,然后进行比较,将数据小元素输出,然后下标++,但是需要考虑到两种特殊情况,就是一个数组已经输出完了,另一个还没输出完,完整实现代码如下: #include int main()...思路:最简单思路就是与上面相同,将插入数放在同一数组,然后直接qsort或者冒泡排序,简单粗暴。...,实现一个函数, 来调整该数组中数字顺序使得数组中所有的奇数位于数组前半部分 所有偶数位于数组后半部分 思路:这里题目没有说要保持相对位置不变,所以我们只需要将偶数与奇数分离即可 定义两个指针

64740

翻转字符串单词

如果两个单词间有多余空格,将反转后单词间空格减少到只含一个。 进阶: 请选用 C 语言用户尝试使 ,意思是说原地反转。 输入: " hello world! " 输出: "world!...示例 3: 输入: "a good example" 输出: "example good a" 解释: 如果两个单词间有多余空格,将反转后单词间空格减少到只含一个。...这个题目试着这里开始入手 算法五个重要特征: 有输入,有输出(题目已经给了) 可行性(复杂问题转化成熟悉子问题) 有穷性(算法描述体现) 确切性(算法描述体现) ?...反转前消除空格 最终转化成同一连续空间,移动copy字符串问题。 不同空间肯定没有问题,同一个空间呢?内存重叠呢? 解决了:数组特点 地址空间连续,删除一个元素,后面整体一定问题。...非空 第三步:反转一个句子 三、代码 放轻松,虽然是c++实现,拒绝奇技淫巧,通俗易懂。

85810

CC++ 最常见50道面试题

注意:数组名 a 可以作数组首地址,而&a 是数组指针。思考,将原式 int *ptr=(int *)(&a+1); 改为 int *ptr=(int *)(a+1);输出结果将是什么呢?...一个 C、C++程序编译内存分为 5 大存储区:堆区、栈区、全局区、文字常量区、程序代码区。...面试题 17:简述类成员函数重写、重载和隐藏区别 (1)重写和重载主要有以下几点不同。  范围区别:被重写和重写函数两个类中,而重载和被重载函数同一个类中。...面试题 19:链表和数组有什么区别 数组和链表有以下几点不同: (1) 存储形式:数组是一块连续空间,声明时就要确定长度。链表是一块可不连续动态空间,长度可变,每个结点要保存相邻结点指针。...面试题 39:流操作符重载为什么返回引用 程序中,流操作符>>和<<经常连续使用。因此这两个操作符返回值应该是一个仍旧支持这两个操作符流引用。其他数据类型都无法做到这一点。

2.4K10

C++ Primer Plus 第四章 复合类型 学习笔记

基于String类库方法 存储连续字节中一系列字符意味着可以将字符串存储char数组中。其中每个字符都位于自己数组元素中。...❌警告:不能创建两个指向同一个内存块指针。会增加错误地删除同一个内存块两次可能性。 7.5 使用new创建动态数组 C++中,创建动态数组,只需要将数组元素类型和元素数目告诉new即可。...对于指针数组使用,直接可以按照普通数组使用即可。 7.6 使用new和delete,要遵循规则 不要使用delete来释放不是new分配内存。 不要使用delete释放同一个内存块两次。...也可以将一个指针减去另一个指针,获得两个指针差。得到一个整数,仅当两个指针指向同一数组(也可以指向超出结尾一个位置),这种情况会得到两个元素间隔。...8.4 C++管理数据内存方式 自动存储 函数内部定义常规变量使用自动存储空间,称为自动变量。只特定函数被执行时存在。 自动变量一个局部变量,作用域为包含它代码块。

1.8K00
领券