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