2020年度C常见笔试题及答案.docx





《2020年度C常见笔试题及答案.docx》由会员分享,可在线阅读,更多相关《2020年度C常见笔试题及答案.docx(178页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+常见笔试题及答案C+面试题1 # include filename.h ”和# include filename.h的区另?答:对于# includefilename.h编译器从标准库 开始搜索filename.h对于#include “filename.h”编译器从用户工作 路径开始搜索filename.h2头文件的作用是什么?答:、经过头文件来调用库功能。在很多场合, 源代码不便(或不准)向用户公布,只要向用户 提供头文件和二进制的库即可。用户只需要按照 头文件中的接口声明来调用库功能,而不必关心 接口怎么实现的。编译器会从库中提取相应的代 码。二、头文件能加强类型安全检查。如果某个接
2、口 被实现或被使用时,其方式与头文件中的声明不 一致,编译器就会指出错误,这一简单的规则, 能大大减轻程序员调试、改错的负担。3 C+函数中值的传递方式有哪几种?答:C+函数的三种传递方式为:值传递、指针 传递和引用传递。4内存的分配方式有几种?答:、从静态存储区域分配。内存在程序编译 的时候就已经分配好,这块内存在程序的整个运 行期间都存在。例如全局变量。二、在栈上创立。在执行函数时,函数内局部变 量的存储单元都能够在栈上创立,函数执行结束 时这些存储单元自动被释放。栈内存分配运算内 置于处理器的指令集中,效率很髙,可是分配的 内存容量有限。三、从堆上分配,亦称动态内存分配。程序在运 行的时
3、候用malloc或new申请任意多少的内存, 程序员自己负责在何时用free或delete释放内 存。动态内存的生存期由我们决定,使用非常灵 活,但问题也最多。5实现双向链表删除个节点P,在节点P后插 入个节点,写出这两个函数;答:双向链表删除个节点Ptemplate void list:delnode(int P)int k=l;listnode *ptr,*t;ptr=first;while(ptr-next!=NULL&k!=p)(ptr=ptr-next;k+;t=ptr-next;cout你已经将数据项t-data删除,next=ptr-next-next;length-;delet
4、e t;)在节点P后插入一个节点:booltemplatelist:insert(type t,int p)(listnode *ptr;ptr=first;int k=l;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 len)int count = 0;
5、int i;/Z统计有多少个、for (i = 0; bufi != 0; i+) if (bufi = t)count+;/Z给定的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()charbuf100123t45ttt6tt65n4234t5345;coutBefore chage:endl;coutbufendl;coutAfte
6、r calling the function:endl;/ buf是原字符串,100是buf的长度(要足够大,最好是原字符串的3倍)if (change(buf, 100) = true)cout buf endl;char c;cinc;7 Windows程序的入口是哪里?写出Windows 消息机制的流程.函数 WinMain()Windows应用程序的消息处理机制如图L2所示。(1)操作系统接收到应用程序的窗口消息,将 消息投递到该应用程序的消息队列中。(2)应用程序在消息循环中调用GetMessage 函数从消息队列中取出一条一条的消息、。取出消 息后,应用程序能够对消息进行一些预处理
7、,例 如,放弃对某些消息的响应,或者调用 TranslateMessage产生新的消息。(3)应用程序调用DispatchMessage,将消息回 传给操作系统。消息是由MSG结构体对象来表 示的,其中就包含了接收消息的窗口的句柄。因 此DispatchMessage函数总能进行正确的传递。(4)系统利用 WNDCLASS结构体的IpfnWndProc 成员保存的窗口过程函数的指针调用窗口过程, 对消息进行处理(即“系统给应用程序发送了消 息”)。8如何定义和实现个类的成员函数为回调函 数?把函数声明为static9 C+里面是不是所有的动作都是main()引起的? 如果不是,请举例.答:在运
8、行C+程序时,一般从main()函数开始 执行。因此如果没有main(),程序将不完整,编 译器将指出未定义main()函数。例外情况:如,在windows编程中,能够编写 个动态连接库(dll)模块,这是其它windows 程序能够使用的代码。由于DLL模块不是独立的 程序,因此不需要main().用于专用环境的程序 如机器人中的控制器芯片一可能不需要main(). 但常规的独立程序都需要main().10 C+里面如何声明const void f(void)函数为C程序中的库函数?extern C void f(void);11下列哪两个是等同的C=Dint b;A const int*
9、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-next;while(ps)pe-next = ps-next;ps-next = head;head = ps;ps = pe-next;16某个程序在个嵌
10、入式系统(200M的 CPU,50M的SDRAM)中已经最化了,换到另个 系统(300M的CPU,50M的SDRAM)中运行,还需 要优化吗?要。程序在每时每刻都要优化,只要能找到能够 优化的方法。优化有多种目的,在200M的CPU中可能需要以 速度为重点优化,在300M的CPU中可能要以代 码长度为目的优化。17 .下面哪种排序法对!2354最快Ca quick sort /快速排序 b.buble sort /冒泡排序c.merge sort 归并排序18 .哪种结构,平均来讲,获取个值最快Ba. binary tree /叉树b. hash table 散列表,哈希表c. stack /
11、栈19请问C+的类和C里面的struct有什么区另?答:C+的类的成员默认情况下是私有的,C的 struct的成员默认情况下是公共的.20请讲讲析构函数和虚函数的用法和作用?答:析构函数的名字和类名相同,没有返回值, 没有参数,不能随意调用也没有重载。只是在类 对象生命期结束时由系统自动调用。虚函数用在继承中,当在派生类中需要重新定义 基类的函数时需要在基类中将该函数声明为虚 函数,作用为使程序支持动态联编。21全局变量和局部变量有什么区别?是怎么实 现的?操作系统和编译器是怎么知道的?答:些变量整个程序中都是可见的,它们称为 全局变量,些变量在函数内部定义且只在函数 中可知,则称为局部变量。
12、全局变量由编译器建立且存放在内存的全局数 据区,局部变量存放在栈区.主要是寻址和内存管理22 些寄存器的题目, 等些知识。1、 立即寻址2、 寄存器寻址3、直接寻址4、 寄存器间接寻址5、 基址加变址寻址6、 寄存器相对寻址7、 相对基址加变址寻址23 8086是多少位的系统?在数据总线上是怎么 实现的?8086有16根数据线和20根地址线,因为可用20位地址.8086是!6位处理器.24 多态。overload 和 override 的区别。答:多态:接口的多种不同的实现方式即为多态重载在相同范围(同一个类中),函数名字相同, 参数不同,virtual关键字可有可无。覆盖是指派生类函数覆盖基
13、类函数,不同的范围, 函数名字相同,参数相同,基类函数必须有 virtual关键字。Sony笔试题25 .完成下列程序* * * * * * *#i nclude using namespace std;const 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*n: for(k=l; k n-i+1; k+)cout.;coutendl;system(pause)26完成程序,实现对数组的降序排序# i nclude using namespace std;void sort
14、(int* ai% int n);int main()int array 卜45,56,76,234,1,3433,2,3;sort(array, 9);for(int i = 0; i = 8; i+)曾经在这儿出界coutarrayicoutendl;system(pause);void sort(int* an; 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费
15、波那其数列,1, 1, 2, 3, 5编写程序 求第十项。能够用递归,也能够用其它方法,但 要说明你选择的理由。非递归# i nclude using namespace std;int Pheponatch(int n);main()(int Ph = Pheponatch(lO);coutPhendl;system(pauseH);)int Pheponatch(int n)int elem;int nl = 1;int n2 = 1;if(n = 1 11 n =2)return 1;elsefor(int i = 3; i = n; i+)(elem = nl + n2;nl = n2
16、;n2 = elem;Jreturn elem;递归#i nclude using namespace std;int Pheponatch(int n);main()int n;cinn;int ph = Pheponatch(n);coutphendl;system(pause);)int Pheponatch(int n)(if(n = 0)exit(-l);elseif(n = 1 11 n =2)return 1;elsereturn Pheponatch(n -1) + Pheponatch(n - 2);28下列程序运行时会崩溃,请找出错误并改正, 而且说明原因。#i nclud
17、e #i nclude typedef structTNode* left;TNode* right;int value; TNode;TNode* root=NULL;void append(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
18、=NewNode;return;)elseTNode* temp;temp=root;while(N=temp.value & temp.left!=NULL) 11 (N=temp.value & temp.left!=NULL)temp=temp.left;while(N=temp.value)temp.left=NewNode;elsetemp.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 o
19、f hosts per subnet.a. 240 b. 255 c. 4094 d. 6553430. What is the difference: between o(log n) and o(log nA2), where both logarithems have base 2 .a. o(log nA2) 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2020 年度 常见 笔试 答案

限制150内