2020年度C常见笔试题及答案.pdf
《2020年度C常见笔试题及答案.pdf》由会员分享,可在线阅读,更多相关《2020年度C常见笔试题及答案.pdf(191页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+常见笔试题及答案资料仅供参考C+面试题1#include“filename.h”和#include 的区另 U?答:对于#includefilename.h编译器从标准库开始搜索filename.h对于#include filename.h”编译器从用户工作路径开始搜索filename.h2头文件的作用是什么?答:一、经过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。二、头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与
2、头文件中的声明不一致,编译器就会指出错误,这一简单的规则,能大大减轻程序员调试、改错的负担。资料仅供参考3 C+函数中值的传递方式有哪几种?答:C+函数的三种传递方式为:值传递、指针传递和引用传递。4 内存的分配方式有几种?答:一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。二、在栈上创立。在执行函数时,函数内局部变量的存储单元都能够在栈上创立,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,可是分配的内存容量有限。三、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或 new申请任意
3、多少的内存,程序员自己负责在何时用free或 delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。资料仅供参考5 实现双向链表删除一个节点P,在节点P 后插入一个节点,写出这两个函数;答:双向链表删除一个节点Ptemplate void list:delnode(intP)(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-;delete t
4、;在节点P后插入一个节点:templatelist:insert(type tjnt p)(listnode*ptr;ptr=first;int k=l;while(ptr!=NULL&knext;k+;bool资料仅供参考if(ptr=NULL&k!=p)return false;else(listnode*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 coun
5、t=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;return true;)int main()(char buf100123t45ttt6tt65n4234t5345;coutBefore chage:endl;资料仅供参考coutbufendl;coutAfter calling the functio
6、n:endl;/buf是原字符串,100是 buf的长度(要足够大,最好是原字符串的3 倍)if(change(buf,100)=true)cout buf endl;char c;cinc;7 Windows程序的入口是哪里?写出 Windows消息机制的流程.函数 WinMain()Windows应用程序的消息处理机制如图1.2所示。(1)操作系统接收到应用程序的窗口消息,将资料仅供参考消息投递到该应用程序的消息队列中。(2)应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息。取出消息后,应用程序能够对消息进行一些预处理,例如,放 弃 对 某 些 消 息 的 响
7、 应,或者调用TranslateMessage产生新的消息。(3)应用程序调用DispatchMessage,将消息回传给操作系统。消息是由M SG结构体对象来表示的,其中就包含了接收消息的窗口的句柄。因此,DispatchMessage函数总能进行正确的传递。(4)系统利用 WNDCLASS结构体的IpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消息进行处理(即“系统给应用程序发送了消息”)。8 如何定义和实现一个类的成员函数为回调函数?把函数声明为static资料仅供参考9 C+里面是不是所有的动作都是main()引起的?如果不是,请举例.答:在运行C+程序时,一般从ma
8、in。函数开始执行。因此如果没有main(),程序将不完整,编译器将指出未定义main()函数。例外情况:如,在windows编程中,能够编写一个动态连接库(州)模块,这是其它windows程序能够使用的代码。由于DLL模块不是独立的程序,因此不需要main。.用于专用环境的程序-如机器人中的控制器芯片-可能不需要main().但常规的独立程序都需要main().10 C+里面如何声明const void f(void)函数为C程序中的库函数?extern C void f(void);1 1下列哪两个是等同的C=Dint b;A const int*a=&b;资料仅供参考B const*in
9、t a=&b;C const int*const a=&b;D int const*const a=&b;1 2内联函数在编译时是否做参数类型检查是13 三个 float:a,b,c 问值(a+b)+c=(b+a)+c 1(a+b)+c=(a+c)+b 11 4把一个链表反向填空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;1 6某 个 程 序 在 一 个 嵌 入 式 系 统(200M的CPU,50M的SDR
10、AM)中已经最化了,换到另一个系统(300M的CPU,501Vl的SDRAM)中运行,还需要优化吗?要。程序在每时每刻都要优化,只要能找到能够优化的方法。优化有多种目的,在200M的CPU中可能需要以速度为重点优化,在300M的CPU中可能要以代码长度为目的优化。17.下面哪种排序法对12354最 快Ca quick sort/快速排序b.buble sort/冒泡排序c.merge sort 归并排序资料仅供参考18.哪种结构,平均来讲,获取一个值最快Ba.binary tree/二叉树b.hash table 散 列表哈希表c.stack/栈1 9请问C+的类和C里面的struct有什么区
11、另(I?答:C+的类的成员默认情况下是私有的,C的struct的成员默认情况下是公共的.2 0请讲一讲析构函数和虚函数的用法和作用?答:析构函数的名字和类名相同,没有返回值,没有参数,不能随意调用也没有重载。只是在类对象生命期结束时由系统自动调用。虚函数用在继承中,当在派生类中需要重新定义基类的函数时需要在基类中将该函数声明为虚函数,作用为使程序支持动态联编。资料仅供参考2 1全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?答:一些变量整个程序中都是可见的,它们称为全局变量,一些变量在函数内部定义且只在函数中可知,则称为局部变量。全局变量由编译器建立且存放在内存的全局
12、数据区,局部变量存放在栈区.22 一些寄存器的题目,等一些知识。1、立即寻址2、寄存器寻址3、直接寻址4、寄存器间接寻址5、基址加变址寻址主要是寻址和内存管理资料仅供参考6、寄存器相对寻址7、相对基址加变址寻址23 8086是多少位的系统?在数据总线上是怎么实现的?8086有16根数据线和20根地址线,因为可用20位地址.8086是16位处理器.24 多态。overload 和 override 的区别。答:多态:接口的多种不同的实现方式即为多态重载在相同范围(同一个类中),函数名字相同,参数不同,virtual关键字可有可无。覆盖是指派生类函数覆盖基类函数,不同的范围,函数名字相同,参数相同
13、,基类函数必须有virtual关键字。Sony笔试题 25.完成下列程序*资料仅供参考*#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=l;k n-i+1;k+)(cout.;)coutendl;资料仅供参考)system(pause)2 6完成程序,实现对数组的降序排序#i nclude using namespace std;void sort(int*arr,int n);int main()(i
14、nt array 口=45,56,76,234,1,34,23,2,3;sort(array,9);for(int i=0;i=8;i+)曾经在这儿出界coutarrayicoutendl;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;资料仅供参考2 7费波那其数列,1,1,2,3,5 编写程序求第十项。能够用递归,也能够用其它方法,但要
15、说明你选择的理由。非递归#i nclude using namespace std;int Pheponatch(int n);main()(int Ph=Pheponatch(lO);coutPhendl;system(pause);)int Pheponatch(int n)(int elem;int nl=1;资料仅供参考int n2=1;if(n=1 11 n=2)return 1;else(for(int i=3;i=n;i+)(elem=nl+n2;nl=n2;n2=elem;return elem;递归#i nclude using namespace std;int Phepo
16、natch(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);资料仅供参考2 8下列程序运行时会崩溃,请找出错误并改正,而且说明原因。#i nclude#i nclude typedef structTNode*left;TNode*right;int value;TNode;TN
17、ode*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*temp;资料仅供参考temp=root;while(N=temp.val
18、ue&temp.left!=NULL)1 1(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 subnetmask of 255.255.240.0,what is the maximumnumber of hosts per subnet.资料仅供参考a.240 b.255 c.4094 d.6553430.What is the di
19、fference:between o(log n)ando(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 aclass s constructor from with the same class pilation error b.linking errorc.stack overflow d.none of the above32.new“in C+is
20、 a:.a.library function like malloc in cb.key word c.operatord.none of the above33.Which of the following information is notcontained in an inode.a.file owner b.file size资料仅供参考c.file name d.disk address34.What s the number of comparisons in theworst case to merge two sorted lists containing nelements
21、 each.a.2n b.2n-l c.2n+l d.2n-235.Time complexity of n algorithm T(n),where nis the input size,is T(n)=T(n-l)+l/n if nlotherwise 1 the order of this algorithm is.a.log(n)b.n c.nA2 d.nAn36.The number of 1 s in the binaryrepresentation of 3*4096+15*256+5*16+3 are.a.8 b.9 c.10 d.123 7.设计函数 int atoi(cha
22、r*s)o38.int i=(j=4,k=8,l=16,m=32);printf(%d”,i);输资料仅供参考出是多少?39.解释局部变量、全局变量和静态变量的含义。40.解释堆和栈的区别。栈 区(stack)-由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由O S 回 收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表.41 .论述含参数的宏与函数的优缺点。1 .函数调用时,先求出实参表示式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。2.函数调用是在程序运行时处理的,分配临
23、时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元,不进行值的传递处理,资料仅供参考也 没 有“返回值”的概念。3.对函数中的实参和形参都要定义类型,二者的类型要求一致,如不一致,应进行类型转换;而宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时带入指定的字符即可。宏定义时,字符串能够是任何类型的数据。4,调用函数只可得到一个返回值,而用宏能够设法得到几个结果。5,使用宏次数多时,宏展开后源程序长,因为每展开一次都使程序增长,而函数调用不使源程序变长。6.宏替换不占运行时间,只占编译时间;而函数调用则占运行时间(分配单元、保留现场、值传递、返回)。一般来
24、说,用宏来代表简短的表示式比较合适。4 2.以下三条输出语句分别输出什么?C易char strl=abc;char str2=abc;资料仅供参考const char str3=abc;const char str4=abc;const char*str5=abc;const char*str6=abc;cout boolalpha (strl=str2)endl;/输出什么?0cout boolalpha (str3=str4)endl;/输出什么?0cout boolalpha (str5=str6)endl;/输出什么?1答:分别输出 false,false,true。s trl 和 s
25、tr2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区首地址,不等;s tr3和str4同上,只是按const语义,它们所指向的数据区不能修改。s tr5和s tr6并非数组而是字符指针,并不分配存储区,其后的“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(const B&);/A 实现了non
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2020 年度 常见 笔试 答案
限制150内