ImageVerifierCode 换一换
格式:DOCX , 页数:93 ,大小:104.36KB ,
资源ID:19063365      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19063365.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++常见笔试题及答案.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++常见笔试题及答案.docx

1、C+常见笔试题及答案C+面试题1 include “filename.h ”和 include 的区别 ?答:对于 include 编译器从标准库开始搜索 filename.h对于 include “ filename.h ”编译器从用户工作路径开始搜索 filename.h2 头文件的作用是什么 ?答:一、 通过头文件来调用库功能。 在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能, 而不必关心接口怎么实现的。编译器会从库中提取相应的代码。二、头文件能加强类型安全检查 。如果某个接口被实现或被使用时, 其方式与头文

2、件中的声明不一致,编译器就会指出错误,这一简单的规则,能大大减轻程序员调试、改错的负担。3 C+函数中值的传递方式有哪几种 ?答: C+函数的三种传递方式为:值传递、指针传递和引用传递。4 内存的分配方式有几种 ?答:一、从静态存储区域分配。 内存在程序编译的时候就已经分配好, 这块内存在程序的整个运行期间都存在。例如全局变量。二、在栈上创建。 在执行函数时,函数内局部变量的存储单元都可以在栈上创建, 函数执行结束时这些存储单元自动被释放。 栈内存分配运算内置于处理器的指令集中, 效率很高, 但是分配的内存容量有限。三、从堆上分配, 亦称动态内存分配。程序在运行的时候用 malloc 或 ne

3、w 申请任意多少的内存,程序员自己负责在何时用 free 或 delete 释放内存。动态内存的生存期由我们决定, 使用非常灵活,但问题也最多。5 实现双向链表删除一个节点 P,在节点 P 后插入一个节点,写出这两个函数 ;答:双向链表删除一个节点 Ptemplate void list:delnode(int p)int k=1; listnode *ptr,*t; ptr=first;while(ptr-next!=NULL&k!=p)ptr=ptr-next; k+;t=ptr-next;cout 你已经将数据项 data 删除 next=ptr-next-next;length-; d

4、elete t;在节点 P 后插入一个节点:template bool list:insert(type t,int p)listnode *ptr; ptr=first;int k=1; while(ptr!=NULL&knext; k+;if(ptr=NULL&k!=p) return false;elselistnode *tp; tp=new listnode; tp-data=t;tp-next=ptr-next; ptr-next=tp; length+;return true;6 写一个函数,将其中的 t 都转换成 4 个空格。bool change(char *buf, int

5、 len)int count = 0; int i;/ 统计有多少个 tfor (i = 0; bufi != 0; i+) if (bufi = t)count+;/ 给定的 buf 空间是否能装下生成的字符串int j = i + 3 * count; if (len 0)while (bufi != t)bufj- = bufi-; count-;bufj = bufj - 1 = bufj - 2 = bufj - 3 = ;j -= 4; i-;return true;int main()char buf100 = 123t45ttt6tt65n4234t5345;coutBefor

6、e chage:endl; coutbufendl;coutAfter calling the function:endl;/ buf 是原字符串, 100 是 buf 的长度(要足够大,最好是原字符串的 3 倍) if (change(buf, 100) = true)cout buf c;7 Windows 程序的入口是哪里?写出 Windows 消息机制的流程 .函数 WinMain()Windows 应用程序的消息处理机制如图 1.2 所示。(1) 操作系统接收到应用程序的窗口消息,将消息投递到该应用程序的消息队列中。(2) 应用程序在消息循环中调用 GetMessage 函数从消息队

7、列中取出一条一条的消息。 取出消息后,应用程序可以对消息进行一些预处理,例如,放弃对某些消息的响应,或者调用TranslateMessage 产生新的消息。(3) 应用程序调用 DispatchMessage,将消息回传给操作系统。消息是由 MSG 结构体对象来表示的,其中就包含了接收消息的窗口的句柄。因此, DispatchMessage 函数总能进行正确的传递。(4) 系统利用 WNDCLASS结构体的 lpfnWndProc 成员保存的窗口过程函数的指针调用窗口过程,对消息进行处理(即“系统给应用程序发送了消息”)。8 如何定义和实现一个类的成员函数为回调函数? 把函数声明为 stati

8、c9 C+里面是不是所有的动作都是 main() 引起的?如果不是,请举例 .答:在运行 c+程序时,通常从 main() 函数开始执行。因此如果没有 main(), 程序将不完整, 编译器将指出未定义 main() 函数。例外情况: 如, 在 windows 编程中, 可以编写一个动态连接库 ( dll)模块, 这是其他 windows 程序可以使用的代码。由于 DLL 模块不是独立的程序,因此不需要 main(). 用于专用环境的程序 -如机器人中的控制器芯片 -可能不需要 main(). 但常规的独立程序都需要 main().10 C+里面如何声明 const void f(void)

9、函数为 C 程序中的库函数? extern C void f(void);11 下列哪两个是等同的 C=D int b;A const int* a = &b; B const* int a = &b;C const int* const a = &b;D int const* const a = &b;12 内联函数在编译时是否做参数类型检查是13 三个 float:a,b,c 问值(a+b)+c=(b+a)+c 1 (a+b)+c=(a+c)+b 114 把一个链表反向填空void reverse(test* head)test* pe = head;test* ps = head-nex

10、t; while(ps) pe-next = ps-next;ps-next = head; head = ps;ps = pe-next;16 某个程序在一个嵌入式系统 (200M 的 CPU,50M 的 SDRAM)中已经最化了,换到另一个系统(300M 的 CPU,50M 的 SDRAM)中运行,还需要优化吗?要。程序在每时每刻都要优化,只要能找到可以优化的方法。优化有多种目的,在 200M 的 CPU 中可能需要以速度为重点优化,在 300M 的 CPU 中可能要以代码长度为目的优化。17. 下面哪种排序法对 12354 最快 C a quick sort / 快速排序b.buble

11、sort / 冒泡排序c.merge sort / 归并排序18. 哪种结构,平均来讲,获取一个值最快 Ba. binary tree / 二叉树b. hash table / 散列表 ,哈希表c. stack / 栈19 请问 C+的类和 C 里面的 struct 有什么区别?答: c+的类的成员默认情况下是私有的 ,c 的 struct 的成员默认情况下是公共的 .20 请讲一讲析构函数和虚函数的用法和作用?答: 析构函数 的名字和类名相同,没有返回值,没有参数 ,不能随意调用也没有重载。只是在类对象生命期结束时由系统自动调用。虚函数 用在继承中, 当在派生类中需要重新定义基类的函数时需要

12、在基类中将该函数声明为虚函数,作用为使程序支持动态联编。21 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?答:一些变量整个程序中都是可见的, 它们称为全局变量, 一些变量在函数内部定义且只在函数中可知,则称为局部变量。全局变量由编译器建立且存放在内存的全局数据区,局部变量存放在栈区 .22 一些寄存器的题目,主要是寻址和内存管理等一些知识。1、 立即寻址2、 寄存器寻址3、 直接寻址4、 寄存器间接寻址5、 基址加变址寻址6、 寄存器相对寻址7、 相对基址加变址寻址23 8086 是多少位的系统?在数据总线上是怎么实现的?8086 有 16 根数据线和 20 根地

13、址线,因为可用 20 位地址 .8086 是 16 位处理器 .24 多态。 overload 和 override 的区别。答:多态: 接口的多种不同的实现方式即为多态重载在相同范围(同一个类中),函数名字相同,参数不同, virtual 关键字可有可无 。覆盖是指派生类函数覆盖基类函数, 不同的范围, 函数名字相同, 参数相同,基类函数必须有 virtual 关键字。 25完成下列程序*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.i nclude using namespace std; cons

14、t int n = 8;main()int i; int j; int k;for(i = n; i = 1; i-)for(j = 0; j n-i+1; j+)cout*;for(k=1; k n-i+1; k+)cout.;coutendl;system(pause)26 完成程序,实现对数组的降序排序i nclude using namespace std; void sort(int* arr, int n); int main()int array=45,56,76,234,1,34,23,2,3;sort(array, 9);for(int i = 0; i = 8; i+)/

15、曾经在这儿出界coutarrayi ; coutendl; system(pause);void sort(int* arr, int n)int temp;for(int i = 1; i 9; i+)for(int k = 0; k 9 - i; k+)/ 曾经在这儿出界if(arrk arrk + 1)temp = arrk; arrk = arrk + 1; arrk + 1 = temp;27 费波那其数列, 1,1,2,3,5 编写程序求第十项。 可以用递归, 也可以用其他方法, 但要说明你选择的理由。非递归i nclude using namespace std; int Phe

16、ponatch(int n); main()int Ph = Pheponatch(10); coutPhendl; system(pause);int Pheponatch(int n)int elem; int n1 = 1; int n2 = 1;if(n = 1 | n =2)return 1; elsefor(int i = 3; i = n; i+)elem = n1 + n2; n1 = n2;n2 = elem;return elem;递归i nclude using namespace std; int Pheponatch(int n); main()int n; cinn

17、;int ph = Pheponatch(n);coutphendl; system(pause);int Pheponatch(int n)if(n = 0) exit(-1); elseif(n = 1 | n =2)return 1; elsereturn Pheponatch(n - 1) + Pheponatch(n - 2);28 下列程序运行时会崩溃,请找出错误并改正,并且说明原因。i nclude i nclude typedef struct TNode* left;TNode* right; int value; TNode;TNode* root=NULL; void a

18、ppend(int N); int main()append(63); append(45); append(32); append(77);append(96); append(21);append(17); / Again, 数字任意给出void append(int N)TNode* NewNode=(TNode *)malloc(sizeof(TNode); NewNode-value=N;if(root=NULL)root=NewNode; return;elseTNode* temp; temp=root;while(N=temp.value & temp.left!=NULL)

19、| (N=temp.value & temp.left!=NULL) temp=temp.left;while(N=temp.value) temp.left=NewNode; else temp.right=NewNode; return; 29. A class B network on the internet has a subnet mask of 255.255.240.0, what is the maximum number of hosts per subnet .a. 240 b. 255 c. 4094 d. 6553430. What is the difference

20、: between o(log n) and o(log n2), where both logarithems have base 2 .a. o(log n2) is bigger b. o(log n) is biggerc. no difference31. For a class what would happen if we call a class s constructor from with the same class s constructor .a. compilation error b. linking errorc. stack overflow d. none

21、of the above32. “ new ” in c+ is a: .a. library function like malloc in cb. key word c. operatord. none of the above33. Which of the following information is not contained in an inode .a. file owner b. file sizec. file name d. disk address34. What s the number of comparisons in the worst case to mer

22、ge two sorted lists containing n elements each .a. 2n b.2n-1 c.2n+1 d.2n-235. Time complexity of n algorithm T(n), where n is the input size ,is T(n)=T(n-1)+1/n if n1 otherwise 1 the order of this algorithm is .a. log (n) b. n c. n2 d. nn36. The number of 1 s in the binary representation of 3*4096+

23、15*256+5*16+3 are .a. 8 b. 9 c. 10 d. 1237. 设计函数 int atoi(char *s) 。38 int i=(j=4,k=8,l=16,m=32); printf( “ %d” , i); 输出是多少?39. 解释局部变量、全局变量和静态变量的含义。40. 解释堆和栈的区别。栈区( stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆: 一般由程序员分配释放, 若程序员不释放,程序结束时可能由 OS 回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表 .41. 论述含参数的宏与函数的

24、优缺点。1. 函数调用时,先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。2. 函数调用是在程序运行时处理的,分配临时的内存单元;而宏展开则是在编译时进行的, 在展开时并不分配内存单元,不进行值的传递处理,也没有“返回值”的概念。3. 对函数中的实参和形参都要定义类型, 二者的类型要求一致, 如不一致, 应进行类型转换; 而宏不存在类型问题,宏名无类型, 它的参数也无类型, 只是一个符号代表,展开时带入指 定的字符即可。宏定义时,字符串可以是任何类型的数据。4. 调用函数只可得到一个返回值,而用宏可以设法得到几个结果。5. 使用宏次数多时,宏展开后源程序长,因为每展开

25、一次都使程序增长,而函数调用不使源程序变长。6. 宏替换不占运行时间,只占编译时间;而函数调用则占运行时间(分配单元、保留现场、值传递、返回)。一般来说,用宏来代表简短的表达式比较合适。42. 以下三条输出语句分别输出什么? C 易 char str1 = abc;char str2 = abc;43. 非 C+内建型别 A 和 B,在哪几种情况下 B 能隐式转化为 A?C+中等 答: BDa. class B : public A / B 公有继承自 A,可以是间接继承的b. class B operator A( ); / B 实现了隐式转化为 A 的转化c. class A A( con

26、st B& ); / A 实现了 non-explicit 的参数为 B(可以有其他带默认值的参数) 构造函数d. A& operator= ( const A& ); / 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个44. 以下代码中的两个 sizeof 用法有问题吗? C 易void UpperCase( char str ) / 将 str 中的小写字母转换成大写字母for( size_t i=0; isizeof(str)/sizeof(str0); +i ) if( a=stri & stri=z )stri -= (a-A );char str = aBcDe;cout

27、str 字符长度为 : sizeof(str)/sizeof(str0) endl; UpperCase( str );cout str 9 ) ch += (A-9-1);char cl = c%0x10 + 0; if( cl 9 ) cl += (A-9-1); cout ch cl ;char str = I love 中国 ;for( size_t i=0; istrlen(str); +i ) char2Hex( stri );cout endl;46. 以下代码有什么问题? C+易 struct TestTest( int ) Test() void fun() ;void main( void )Test a(1);a.fun();Test b();b.fun();* Test b();/ 定义了一个函数47. 以下代码有什么问题? C+易 cout (true?1:1) endl;8. 以下代码能够编译通过吗,为什么? C+易 unsigned int con

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1