c/c++面试习题总结
每日积累习题,用三天复习时间更新每十天的量。每天十道题,节选有意义的题目以记录
jjjstephen
就读于天津大学,在做视觉检测相关研究。
技能:软件开发
正在开发技能:ML&DL Paper撰写
待开发技能:硬件开发、硬件设计
展开
-
62day---C++面试题
1.若有说明 int c;则 while(c=getchar());是正确的 C 语句。请问这句话的说法是正确的解:对赋值语句进行逻辑真假判断的时候,比如if(a=n), while(a=n), (a=n) ?2:3……诸如此类其实是对赋值后的等号左边的值进行逻辑判断。2.C++中关于堆和栈的说法,哪个是错误的:A 堆的大小仅受操作系统的限制,栈的大小一般一般较小B 在堆上频繁的调用new/delete容易产生内存碎片,栈没有这个问题C 堆和栈都可以静态分配D 堆和栈都可以动态分配解:静态原创 2020-10-24 19:10:28 · 244 阅读 · 0 评论 -
61day---C++面试题
1.给定声明 const char * const * pp; 下列操作或说明正确的是 AA pp++B (*pp)++C (*pp) = \c\;D 以上都不对解:相当于(char const) ( const) *pp**p是char型常量*p是char const *型常量p是char const *const型变量2.c++定义一个空的类CTest,CTest没有定义任何成员变量和成员函数,在32位机器上,以下结论正确的有 BCA 对该类求sizeof,结果为0.B 给CTes原创 2020-10-23 20:32:25 · 181 阅读 · 0 评论 -
57day---C++面试题(补)
1.以下定义语句中正确的是A char a='A’b=‘B’;//小儿科B float a=b=10.0;个人理解10.0编译器默认为double型C int a=10,b=&a;D float a,b=&a;//b=&a b变为**b了2.下列程序的运行结果是3,5,请为横线处选择合适的程序ABC#include<stdio.h> struct S { int n; char c[10]; } *p; main() { s原创 2020-10-23 20:18:20 · 254 阅读 · 6 评论 -
60day---C++面试题
1.线性表是一个有限序列,可以为空2.设数组a[]作为循环队列SQ的存储空间,数组的长度为m,f为队头指示,r为队尾指示则执行出队操作的语句为 f=(f+1)%m解:循环队列的相关条件和公式:队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度1)队空条件:rearfront2)队满条件:(rear+1) %QueueSIzefront3)计算队列长度:(rear-front+QueueSize)%QueueSize4)入队:(rear+1)%QueueSize原创 2020-10-22 21:39:07 · 107 阅读 · 0 评论 -
59day---C++面试题
1.代码执行后,a和b的值分别为 200 10class Test{public: int a; int b; virtual void fun() {} Test(int temp1 = 0, int temp2 = 0) { a=temp1 ; b=temp2 ; } int getA() { return a; } int getB() { r原创 2020-10-21 17:21:08 · 177 阅读 · 0 评论 -
58day---C++面试题
1.若已包含标准库头文件及相关命名空间,则系统不允许用户重新定义标准库函数2.以下定义错误的是:AA struct A{A _a};B struct A{A* _a;};C struct A{A& _a;};D struct B;struct A{B& _b;};struct B{A& _a;};解:struct成员类型不可以是它自己3.有如下语句序列:char str[10];cin>>str;当从键盘输入”I love this game”时,s原创 2020-10-20 18:35:58 · 183 阅读 · 0 评论 -
57day---C++面试题
1.已知: int m=10;下列表示引用的方法中,正确的是 CA int & Z;B int & t=10;C int & X=m;D float &f =&m;解:(1)引用必须被初始化(2)引用类型的初始值必须是一个对象(3)非常量引用的初始值必须是左值(4)不能用int类型的值初始化double类型的引用2.强制类型转换的运算符是 ()3.在64位系统上,如果Data的地址是x,那么data[1][5].c的地址是struct Date原创 2020-10-19 20:10:51 · 664 阅读 · 0 评论 -
56day---C++面试题
1.某32位系统下, C++程序void *p = malloc( 100 ); sizeof § = 4解:== 指针大小依赖平台 32位机器上一般指针大小都是4==2.程序输出结果为: 8 0 7 10#define MAX(a, b) ((a) > (b) ? a : b )int main(){ int a = 5, b = 0; int c = MAX(++a, b); int d = MAX(++a, b + 10); printf("%d %d原创 2020-10-15 10:45:06 · 553 阅读 · 0 评论 -
55day---C++面试题
1.程序的输出是什么 Cvoid main (void) { double x=28; int r; r= x%5; printf (“\n r=%d”, r);}A r = 3B 运行错误C 编译错误D 都不是解:%取余运算符只能用于整形原创 2020-10-14 17:05:42 · 227 阅读 · 0 评论 -
54day---C++面试题
1.顺序循环队列 Q 空的条件是: Q.front==Q.rear. 正确解:为了方便起见,约定:初始化建空队时,令front=rear=0,当队空时:front=rear当队满时:front=rear 亦成立因此只凭等式front=rear无法判断队空还是队满。 有两种方法处理上述问题:(1)另设一个标志位以区别队列是空还是满。(2)少用一个元素空间,约定以“队列头指针front在队尾指针rear的下一个位置上”作为队列“满”状态的标志。即:队空时: front=rear队满时: (r原创 2020-10-13 19:32:31 · 154 阅读 · 0 评论 -
53day---C++面试题
1.请问在64位平台机器下sizeof(string_a),sizeof(string_b)大小分别是 100 8char *string_a=(char *)malloc(100*sizeof(char));char string_b[100];解:string_a是一个char型的指针,在64位系统中sizeof(char*)=8string_b是一个char型的数组,在64位系统中sizeof(char)=1,共100值因此为1002.使用printf函数打印一个double类型的数据原创 2020-09-25 20:24:44 · 198 阅读 · 0 评论 -
52day---C++面试题
1.请问在64位平台机器下sizeof(string_a),sizeof(string_b)大小分别是 8 1001.char *string_a=(char *)malloc(100*sizeof(char));2.char string_b[100];解:string_a是一个char型的指针,在64位系统中sizeof(char*)=8string_b是一个char型的数组,在64位系统中sizeof(char)=1,共100值因此为1002.以下哪个选项中可能应用到栈 A B C D原创 2020-09-18 19:38:30 · 153 阅读 · 0 评论 -
51day---C++面试题
1.判断一个单向链表中是否存在环的最佳方法是快慢指针2.双循环链表中,任意一结点的后继指针均指向其逻辑后继(错)解:尾节点的后继指向头结点,而头结点不是尾节点的逻辑后继3.对于变换矩阵的平移矩阵,以下说法正确的是 ABDA 平移矩阵属于仿射变换B 平移矩阵可逆C 平移矩阵是正交矩阵D 平移矩阵属于线性变换...原创 2020-09-11 16:49:04 · 213 阅读 · 0 评论 -
50day---C++面试题
1.只能使用成员函数重载的运算符有:=、()、[]、->、new、delete2.静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据3.下面程序运行后的结果为char str[] = "glad to test something";char *p = str;p++;int *p1 = reinterpret_cast<int *>(p);p1++;p = reinterpret_cast<char *>(p1);原创 2020-09-10 19:32:40 · 93 阅读 · 0 评论 -
49day---C++面试题
1.有如下一段程序,则以下不合法的是 Cint f1(float);int f2(char);int f3(float);int f4(float);int (*pf)(float);A int (*p)(float)=&f1;B pf=&f4;C pf=&f2;D pf=f3;解:函数指针变量:函数指针变量的声明方法为:返回值类型 ( * 指针变量名) ([形参列表]);根据定义,int(*pf)(float);int (*p)(float)=&a原创 2020-09-09 19:37:32 · 550 阅读 · 0 评论 -
48day---C++面试题
1.设有数组定义: char array []=“China”;则数组array所占的存储空间为 DA 4个字节B 5个字节C 6个字节D 7个字节解:数组中包含了五个字母和一个字符串结尾’\0’,总共6个字节2.在32位环境下,程序的输出结果是2014#include<iostream>using namespace std;class Base{public: virtual int foo(int x) { return x * 1原创 2020-09-08 20:01:58 · 409 阅读 · 0 评论 -
47day---C++面试题
1.在 C 语言中,引用数组元素时,其数组下标的数据类型允许是整型常量整型表达式整型变量解:注意题“引用数组元素时”,区别数组定义时2.在C语言中:(1)boolean类型只有两个直接量值:true和false.(2)除成员变量会有默认初始值外,其他变量必须在第一次使用之前初始化boolean类型的默认值是false;其余的7种基本类型默认值:byte是 (byte)0;short是 (short)0;int是 0;long是 0L;float 是0.0f;double 是0.原创 2020-09-07 19:26:27 · 196 阅读 · 0 评论 -
百度面试题大题---腐烂的橘子
解:#include<iostream>#include<vector>void createMatrix(std::vector<std::vector<int>> & _grid);int findRotOrange(std::vector<std::vector<int>> & _grid);bool rotNeiborOrange(std::vector<std::vector<int..原创 2020-09-06 16:05:11 · 181 阅读 · 0 评论 -
46day---C++面试题
1.以下程序片段输出什么内容: 输出"hello world"class Demo {public: Demo():count(0) {} ~Demo() {} void say(const std::string&msg) { fprintf(stderr,"%s\n", msg.c_str()); } private: int count;}; int main(in原创 2020-09-05 19:47:57 · 149 阅读 · 0 评论 -
百度面试题1
写在前面:第一次做公司面试题大题,能力有限语法和代码有待优化,欢迎批评指正:解:#include<iostream>#include<vector>std::vector<int> fun(const std::vector<int> & _leastPlayValue, const std::vector<int> & _lastValue);int main(){ std::cout << "请原创 2020-09-04 18:54:29 · 1716 阅读 · 0 评论 -
45day---C++面试题
1.循环队列SQ的存储空间是数组d[m],队头、队尾指针分别是front和rear,则执行出队后其头指针front值是front=(front+1)%m解:循环队列进队:队尾指针(rear+1)%m出队:对头指针(front+1)%mm为数组容量2.阅读C++语言代码输出 3 3int main(){ int arr[]={1,2,3,4,5,6,7}; int *p=arr; *(p++)+=89; printf("%d,%d\n",*p,*(++p));原创 2020-09-04 18:50:46 · 151 阅读 · 0 评论 -
44day---C++面试题
1.设 x,y,t 均为 int 型变量,执行下列语句后,y的值为 3x=y=3; t=++x||++y;解:当解析器遇到了||时,只要前面的++x为真,后面的语句就不执行了2.单循环链表的主要优点是从表中任一结点出发都能扫描到整个链表3.不能被重载的运算符 1、. (成员访问运算符) 2、.* (成员指针访问运算符) 3、:: (域运算符) 4、sizeof(长度运算符) 5、?: (条件运算符)...原创 2020-09-03 19:43:09 · 132 阅读 · 0 评论 -
43day---C++面试题
下面程序段的运行结果是 A B char s[]="12345",*p=s; printf("%d\n",*(p+5)); A 字符’\0’的ASCII码值B 0C 字符’5’ 的地址D 字符’5’解:字符’\0’的ASCII码值就是0原创 2020-09-02 20:28:12 · 131 阅读 · 0 评论 -
42day--C++面试题
1.假设有说明 int a=0; double x=5.16;,则在以下语句中,( )属于编译错误A x=a/x;B x=x/a;C a=a%x;D x=x*a;解:%要求两边都是整数,如果你非要一个整数%另外一个非整数的可以用强制类型转换把它装换成整形2.常用的线性结构有:线性表,栈,队列,双队列,数组,串常用的线性结构有:线性表,栈,队列,双队列,数组,串常见的非线性结构有:二维数组,***数组,广义表,树(二叉树等),图3.int *p[4]; //表示指针数组,有四个元素,每个元原创 2020-09-01 19:14:33 · 248 阅读 · 0 评论 -
c/c++/数据结构错题集1
1.下面函数的执行结果是输出7 4 4char str[]=”xunlei”;char *p=str;int n=10;printf(“%d,%d,%d\n”,sizeof(str),sizeof(p),sizeof(n));解:sizeof(str),str是字符数组,所以第一个是7个字节sizeof§, str的首元素地址赋给指针p,指针总占4个字节sizeof(n), int型整数,所以4个字节char str[]=“xunlei”;char str2[]={‘x’,‘u’,‘n原创 2020-08-31 10:21:46 · 319 阅读 · 0 评论 -
41day---C++面试题
1.循环队列是队列的一种顺序存储结构相关知识点:数据结构=逻辑结构(线性、非线性)+存储结构(顺序、链式、索引、散列) 逻辑结构:数据元素间抽象化的相互关系 存储结构:(物理结构),在计算机存储器中的存储形式2.需要频繁的插入删除操作使用链表结构比较合适相关知识点:数组是连续地址的,插入和删除都需要移动大量元素,不适合插入删除操作队列适合一端插入另一端删除的情况链表适合插入和删除,不需要移动元素栈适合在同一端插入和删除的操作3.设栈的初始状态为空,当字符序列原创 2020-08-29 09:55:21 · 196 阅读 · 0 评论 -
40day---C++面试题
1.用C语言编写的代码程序 BA 可立即执行B 是一个源程序C 经过编译即可执行D 经过编译解释才能执行解:C语言写的代码程序肯定是源程序 它不能立即执行,必须经过编译成可执行代码如果这个源程序中不含有main函数,编译后的代码也是不可执行的 C语言不是解释执行的2.int **a[3][4]:由于 [] 运算符的优先级高于 *,所以变量a首先与[]结合,形成数组,该数组的内容为int ** 类型;在32位系统中,指针大小为4个字节,数组的占空间为4(34)=48字节。3.64位操作系原创 2020-08-27 18:29:39 · 137 阅读 · 0 评论 -
39day---C++面试题
1.用链接方式存储的队列,在进行删除运算时头、尾指针可能都要修改解:在有头结点的链队列的出队操作中,一般只需修改队头指针,但当原队列中只有一个结点时,该结点既是队头也是队尾,故删去此结点时亦需修改队尾指针,使其指向头结点,且删去此结点后队列变空。2.单链表的存储密度 小于1解:存储密度=单链表数据项所占空间/结点所占空间结点所占空间由数据项所占空间和存放后继结点地址的链域,所以,存储密度小于1即存储密度 = 单链表数据项所占空间 / (单链表数据项所占空间 +存放后继结点地址的链域)...原创 2020-08-27 10:41:39 · 785 阅读 · 0 评论 -
38day---C++面试题
1.拷贝构造函数调用的时机:(1)当用类的一个对象初始化该类的另一个对象时(2) 如果函数的形参是类的对象,调用函数时,进行形参和实参结合时.(3)如果函数的返回值是类的对象,函数执行完成返回调用者时.(4)需要产生一个临时类对象时2.基本数据类型的等级从低到高如下:char int long float double运算的时候是从低转到高的,表达式的类型会自动提升为参与表达式求值的最上级类3....原创 2020-08-25 14:51:59 · 238 阅读 · 0 评论 -
37day---C++面试题
1.双循环链表中,任意一结点的后继指针均指向其逻辑后继错解:尾节点的后继指向头结点,而头结点不是尾节点的逻辑后继原创 2020-08-24 19:16:51 · 349 阅读 · 0 评论 -
36day----C++面试题
1.说明“double(*ptr)[N];”中的标识符ptr是一个指向由N个double类型元素组成的一维数组和指针2.定义语句"double * array [8]"的含义正确的是array是一个数组,数组的每一个元素是指向双精度实型数据的指针3.下面程序段的输出结果是出错char *p1 = ”123”, *p2 = ”ABC”, str[50] = “xyz”;strcpy(str + 2, strcat(p1, p2));printf(“%s\n”, str);解:p1和p2都指向常原创 2020-08-23 15:27:04 · 189 阅读 · 0 评论 -
35day---C++面试题
1.在有序双向链表中定位删除一个元素的平均时间复杂度为O(n)解:链表只能顺序查找定位一个元素的时间为O(N),删除一个元素的时间为O(1)2.设链式栈中结点的结构为(data ,link),且top是指向栈顶的指针,若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行s->link=top;top=s;操作...原创 2020-08-20 21:00:06 · 181 阅读 · 0 评论 -
34day---C++面试题
1.下面C程序的输出结果是(windows 32位机)32 4struct MyStruct{ int i; char c;//5 变为 8 struct InnerStruct { int i; long l; double d; char c;//21 变为24 } innerStruct;};//共32union MyUnion{ int i; char c;};in原创 2020-08-19 20:04:20 · 224 阅读 · 0 评论 -
33day---C++面试题
1.一个抽象类并不需要其中所有的方法都是抽象的 ×解:1)抽象类中可以包含抽象方法和非抽象方法;2)类中含抽象方法的,一定是抽象类2.int *const ptr含义 ptr不可修改,*ptr可修改解:常量指针:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。指针常量:指向的地址不可以重新赋值,但内容可以改变,必须初始化,地址跟随一生const 的作用就是封锁它后面的东西,即后面的不可改变。对于 int *const ptr; 没有const关键字时,为原创 2020-08-18 19:50:08 · 450 阅读 · 0 评论 -
32day---C++面试题
1.双向链表可随机访问任一结点,这样的说法正确吗 错误解:顺序表:随机访问;链表:顺序访问。2.在一个设有头指针和尾指针的单链表中,执行删除该单链表中最后一个元素的操作与链表的长度无关 错解:必须要遍历到倒数第二个元素把它设为尾部(链表不是双向链表)3.从一个具有 n 个结点的单链表中查找其值等于 x 结点时,在查找成功的情况下,需平均比较(n+1)/2个结点解:最少1次 最多n次 平均(n+1)/2次4....原创 2020-08-17 19:30:04 · 1724 阅读 · 0 评论 -
31day---C++面试题
1.有以下程序,程序的输出结果是 0#include <stdio. h>int fun( int a ){ int b = 0; static int c = 3; a = ( c + +,b + + ); return ( a );}main( ){ int a = 2,i,k; for( i = 0;i<2;i + + ) k = fun( a + + ); printf("%d\n",k );}原创 2020-08-14 19:46:19 · 264 阅读 · 0 评论 -
30day---C++面试题
1.在c语言程序中,当调用函数时,正确的是 CA 全局变量开始占用存储单元B 形参不需要分配存储单元C 内部变量开始占用存储单元D 外部变量开始占用存储单元解:A项 全局变量在函数调用前后始终是占用内存的。B项 形参本来是不占用存储单元的 但是 只有当函数调用时,发生实参向形参的数据传递时,系统才分配给形参存储单元,调用完之后就释放。D项 extern是外部变量,这个变量在程序外部定义,在调用函数前后是始终存在的。2.下面赋值语句中正确的是 AA double d=5.3e1原创 2020-08-13 19:43:00 · 152 阅读 · 0 评论 -
29day---C++面试题
1.只能使用成员函数重载的运算符有:=、()、[]、->、new、delete。2.关于指针的知识点(1)free 掉一个指针后,指针仍然指向原来的地址。free 的意义在于告诉系统目标地址可以被回收。(2)32 位系统中MAR(内存地址寄存器)为32位,可寻址范围为2的32次方Byte,共大约不足4G的内存空间。指针中保存内存地址,所以大小和MAR大小相同。32位系统下任何类型指针的长度都是4个字节(3)指针的类型用于确定指针所指的对象的类型,因此初始化或赋值时必须保证类型匹配。指针用于间接原创 2020-08-12 20:08:20 · 244 阅读 · 0 评论 -
28day---C++面试题
1.静态外部变量只在本文件内可用。解:在外部变量的定义前面加上关键字static,就表示定义了一个外部静态类。外部静态变量具有全局的作用域和全局的生存期,定义成static类型的外部变量将无法再使用extern将其作用范围扩展到其他文件中,而是被限制在本身所在的文件内。2. * p++表示: 自增p解:后缀++ 和-- 操作符本质上比前缀一目操作的优先级高, 因此p++ 和*(p++) 等价3.以下程序:程序运行时出现错误#include "stdio.h"#include "string.原创 2020-08-10 20:02:44 · 231 阅读 · 0 评论 -
27day---C++面试题
1.有如下定义#define D 2 int x=5;floaty=3.83; char c=′D′; 则下面选项中错误的是 DA x++;B y++;C c++;D D++;本题目解析众说纷纭,但是谨记:不可以对宏变量做原子操作2.在C语言中,形参的缺省存储类是auto3.以下涉及到内存管理的代码段中,有错误的是:ABDAint *a=new int(12);//..... free(a);Bint *ip=static_cast<int*>(malloc(size原创 2020-08-06 19:46:21 · 156 阅读 · 0 评论