《c语言.综合测试试题.doc》由会员分享,可在线阅读,更多相关《c语言.综合测试试题.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、综合测试试题第一部分:C语言一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: if ( n = 0 ) if ( n != 0 )以此类推。请写出 BOOL flag 与“零值”比较的 if 语句:If(flag=FALSE)请写出 float x 与“零值”比较的 if 语句:if(x=0.0)请写出 char *p 与“零值”比较的 if 语句:If(p=NULL)二、以下为Windows NT下的32位C+程序,请计算sizeof的值c
2、har str = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) = 6; sizeof ( p ) = 4; sizeof ( n ) =4;void Func ( char str100)请计算 sizeof( str ) = 4; void *p = malloc( 100 );请计算sizeof ( p ) =4;三、简答题1、头文件中的 ifndef/define/endif 干什么用?防止头文件重复包含2、#include 和 #include “filename.h” 有什么区别?表示系统直接按照系统指定的目录检索file
3、name.h “”系统先在filename.c所在的当前目录下查找filename.h 如果找不到,再按系统指定的目录进行检索(通常包含库函数的头文件;” ”通常包含自定义的头文件)3、const 有什么用途?(请至少说明两种)可以定义const常量,具有不可变性;可以修饰函数参数,防止意外修改增强程序健壮性4、在C+ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?extern C是连接申明(linkage declaration),被extern C修饰的变量和函数是按照C语言方式编译和连接的,实现C+与C混合编程。5、请简述以下两个for循环的优缺点/ 第一个f
4、or (i=0; iN; i+)if (condition) DoSomething();else DoOtherthing();/ 第二个if (condition)for (i=0; iN; i+) DoSomething();else for (i=0; iN; i+) DoOtherthing();优点:程序较为简洁缺点:多执行了N-1次判断降低了效率优点:只判断一次,效率高缺点:程序不简洁四、有关内存的思考题void GetMemory(char *p)p = (char *)malloc(100);void Test(void) char *str = NULL;GetMemory
5、(str);strcpy(str, hello world);printf(str);请问运行Test函数会有什么样的结果?答:段错误char *GetMemory(void)char p = hello world;return p;void Test(void)char *str = NULL;str = GetMemory();printf(str);请问运行Test函数会有什么样的结果?答:hello worldVoid GetMemory2(char *p, int num)*p = (char *)malloc(num);void Test(void)char *str = NUL
6、L;GetMemory(&str, 100);strcpy(str, hello);printf(str);请问运行Test函数会有什么样的结果?答:hellovoid Test(void)char *str = (char *) malloc(100);strcpy(str, “hello”);free(str); if(str != NULL) strcpy(str, “world”);printf(str);请问运行Test函数会有什么样的结果?答:段错误五、编写strcpy函数已知strcpy函数的原型是char *strcpy(char *strDest, const char *s
7、trSrc);其中strDest是目的字符串,strSrc是源字符串。(1)不调用C+/C的字符串库函数,请编写函数 strcpychar *strcpy(char *strDest, const char *strSrc)While(*strsrc != NULL)*strdest = *strsrc;Strdest+;Strsrc+;Return strdest;(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?这样方便调用 例如 strcpy(strcpy(des,src),src_1);六:编程题1、写出程序把一个链表中的接点顺序倒排2
8、、写出程序删除链表中的所有接点3、 使用冒泡、选择法、快速排序法对数组进行排序选择法:for(i=0;in-1;i+)Min=i;For(j=min+1;jkj)交换;冒泡法:For(i=0;in;i+)For(j=0;jkj+1)交换;第二部分:C+ 与QT1. C+对C语言做了很多改进,下列描述中()使得C语言发生了质变,即从面向过程变成面向对象。A)增加了一些新的运算符 B)允许函数重载,并允许设置默认参数C)规定函数说明必须用原型 D)引进类和对象的概念2. 下面说法中正确的是()A) 一个类只能定义一个构造函数,但可以定义多哥析构函数B) 一个类只能定义一个析构函数,但可以定义多个构
9、造函数C) 构造函数与析构函数同名,知识名字前加了一个求反符号()D)构造啊函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以3. 下面关于友元的描述中,错误的是( )。A)友元函数可以访问该类的私有数据成员。B)一个类的友元类中的成员函数都是这个类的友元函数。C)友元可以提高程序的运行效率。D)类与类之间的友元关系可以继承。4. 有关析构函数的说法不正确的是()。A) 析构函数有切仅有一个B) 析构函数和构造函数一样可以有形参C) 析构函数的功能是用来释放一个对象D) 析构函数无任何函数类型5. 下列对重载函数的描述中,()是错误的。A)重载函数中不允许使用默认
10、参数 B)重载函数中编译时根据参数表进行选择C)不要使用重载函数来描述毫无相干的函数 D)构造函数重载将会给初始化带来多种方式6. 下面叙述错误的是( )A. 派生类可以使用private派生B.对基类成员的访问必须是无二义性的C.基类成员的访问能力在派生类中维持不变D.赋值兼容规则也适用于多继承的组合一、选择题:(共10小题,每题3分)1.类的构造函数被自动调用执行的情况是在定义该类的( )A)成员函数时B)数据成员时C)对象时D)友元函数时2.说明友元函数使用关键字( )A)friendB)staticC)constD)colatile3.已知类X中的一个成员函数说明如下:Void Set
11、(x &a); 其中,X&a的含义是( )A)指向类X的指针为aB)将a的地址赋给变量SstC)a是类X的对象引用,用来做为Set()的形参D)变量X是a按位相与作为函数Set()的参数4.关于new运算符的下列描述中( )是错误的.A)它可以用来动态创建对象和对象数组B)使用它创建对象或对象数组,可以使用运算符DELETE删除C)使用它创建对象时要调用构造函数D)使用它调用对象数组时不E)许指F)定初始值5.允许访问类的所有对象的私有成员,公有成员和保护成员的是( )A)友元函数B)成员函数C)内联函数D)重载函数6局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用(
12、)提供对全局变量的访问A) 域运算符B) 类运算符C) 重载D) 引用7缺省析构函数的函数体是( )不存在)随机产生的)空的)无法确定的、8.通常拷贝构造函数的参数表是( )A)某个对象名B)某个对象的成员名C)某个对象的引用名D)某个对象的指针名9.对定义重载函数的下列要求中,( ) 是错误的A)要求参数的个数不同 B)要求参数中至少有一个类型不同C)要求参数个数相同时,参数类型不同 D)要求函数的返回值不同10.对于多重继承,有( )A.一个派生类只能有一个基类B.一个基类只能产生一个派生类C.一个基类必须产生多个派生类D.一个派生类可有多个基类7. C和C+有什么不同?(4分)8. 面向
13、对象的三个基本特征及各自的作用(6分)9. c和c+中的struct有什么不同?(5分)10. const符号的作用有哪些?(5分)11. 引用与指针有什么区别?(6分)12. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?(4分)13. static 在类内修饰成员的作用是什么,如何引用这些成员?(4分)14. 虚析构函数的作用是什么?(6分)15. 类成员函数的重载、覆盖和隐藏区别?16. 在C中引用C+语言中的函数和变量时,C+的头文件需添加extern C,但是在C语言中不能直接引用声明了extern C的该头文件,应该仅将C文件中将C+中定义的ext
14、ern C函数声明为extern类型。三、编程题:(共3小题 每小题10分)17. 编写一个字符串处理的类,MyString,实现拷贝构造,号重载 等基本函数。18. 使用MyString作为成员对象实现一个Person类,包含:姓名,年龄。19. 实现一个Student 类:有性名,年龄,学号,老师姓名。20. 编写类String的构造函数、析构函数和赋值函数已知类String的原型为:class String public:String(const char *str = NULL);/ 普通构造函数String(const String &other); / 拷贝构造函数 String(
15、void); / 析构函数String & operate =(const String &other);/ 赋值函数 private:char *m_data;/ 用于保存字符串;请编写String的上述4个函数。Qt图形库部分:1、什么是Qt图形库,你是怎么理解的?2、Qt库的QApplication类有什么作用?3、Qt怎么处理绘图事件和鼠标事件?4、举例说明怎么实现自定义信号和槽。5、要设计开发一个扫雷游戏,写出你的设计思路。二、编程题:1.继承自QWidget ,自定义一个Button, 功能如下:1)enter与leave有不同的背景状态变化 ,提示:enterEvent(), l
16、eaveEvent();2)Press 与Release 也有不同的背景状态变化3)当鼠标点击时可以发出clicked() 信号4)创建一个窗口,测试自定义的Button第三部分:linux系统编程1. Linux根目录下一般有哪些目录?每个目录的作用是什么?2. 用gcc编译文件test.c,要经过哪几个步骤?3. gcc的参数“-L”,“-l”“-I”分别是什么意义?举例说明。4. 写一个脚本完成如下功能:首先,让使用者输入一个文件名,脚本作如下判断:(1)这个文件是否存在,若不存在则给出一个“Filename does noet exist”提示,并中断程序。(2)若这个文件存在,则判断
17、它是文件还是目录,结果输出“Filename is regular file”或“Filename is directory”(3)判断用户对这个文件或目录所具有的权限并显示出来。5. 什么是系统调用?请写出你对系统调用的理解。6. 什么是标准I/O库?标准I/O库和系统调用有什么区别?7. 什么是进程?用fork()创建一个子进程时,系统会做什么工作?8. 管道和命名管道使用上有什么不同之处?9. 信号的处理方式有几种?怎样指定信号的处理方式?10. 进程和线程有什么区别?11. 什么是线程的互斥和同步,举例说明怎么实现线程的互斥和同步?12. 实现三个进程其中一个是父进程,其余两个是该父进
18、程创建的子进程,其中一个子进程运行“ls l”指令,另一个子进程在暂停5s之后退出,父进程等待子进程的退出信息,待收集到该信息,父进程就返回。13. 编写一个多进程多线程的程序:要求创建4个子进程,每个进程都分别创建2个线程,进程和线程的功能不做要求,可只提供简单的打印语句。14. 编制一段程序,实现进程的管道通信: 使用系统调用pipe()建立一条管道线,两个子进程分别向管道各写一句话: Child process 1 is sending a message! Child process 2 is sending a message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏
19、幕上。 要求:父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。 第四部分:网络编程1) :路由器工作在哪一层(B)A:链路层B:网络层C:传输层D:应用层2) 一台主机要实现通过局域网与另一个局域网通信,需要做的工作是 (C) 。A: 配置域名服务器B :定义一条本机指向所在网络的路由C :定义一条本机指向所在网络网关的路由D :定义一条本机指向目标网络网关的路由3) 下列提法中,不属于ifconfig命令作用范围的是 (D) 。A: 配置本地回环地址 B :配置网卡的IP地址C :激活网络适配器 D: 加载网卡到内核中4) 下面的网络协议中,面向连接的的协议是:(A) 。A
20、:传输控制协议B :用户数据报协议 C :网际协议 D: 网际控制报文协议5) 在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是(D)A 主机IP设置有误B 没有设置连接局域网的网关C 局域网的网关或主机的网关设置有误D 局域网DNS服务器设置有误6) DHCP是动态主机配置协议的简称,其作用是可以使网络管理员通过一台服务器来管理一个网络系统,自动地为一个网络中的主机分配(D)地址。A :UDP B :MAC C: TCP D: IP7) 在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中,(A)B是能够实现本地
21、与远程主机之间的文件传输工作。A telnetB FTPC: SNMPD: NFS8) 当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是(A)。CA :pingB: ifconfigC :tracerouteD: netstat9) 关于代理服务器的论述,正确的是(A )。A :使用internet上已有的公开代理服务器,只需配置客户端。B :代理服务器只能代理客户端http的请求。C :设置好的代理服务器可以被网络上任何主机使用。D :使用代理服务器的客户端没有自己的ip地址。10) 公司需要把192.168.3.0 /255.255.
22、255 网段划分成10个子网,子网掩码应该是( C)?A:255.255.255.5B:255.255.255.4C:255.255.255.240D:255.255.255.248二:填空题(本题共5小题,每空1分 共10分)1) 网络192.168.220.0/24 定向广播地址是( 192.168.220.254 ),受限的广播地址为( 255.255.255.255),定向广播和受限广播的区别(定向广播是网络号是具体对应的网络号而主机号全为1,它是对具体网络上的所有主机进行广播受限广播是ip全为1,指的是在本网络上(即主机所连接的局域网上)进行广播);2) 在tcp/ip模型中进程到进
23、程之间通信属于( 传输层 )层,主机到主机属于( 网络层 )层,设备到设备属于( 链路层 )层,程序到程序属于( 应用层 )层。3) Ping命令的功能为( 来检查网络是否通畅或者网络连接速度 )。 4) 进行远程登录的命令是 ( SSH )。5) DNS 域名系统的作用是( 将域名转换成IP地址 )。三:问答题(本题共4小题,每题6分共24分)1) 简述TCP/IP协议中各层的主要功能,各有哪些主要协议。应用层:程序与程序之间(FTP,HTTP)传输层:进程与进程之间(TCP,UDP)网络层:主机与主机之间(IP)链路层:设备与设备之间2) 什么是TCP 、UDP ?协议优缺点,应用场合?T
24、CP(传输层控制协议)面向链接 优点:可靠 缺点:效率低UDP(用户数据包协议)面向无连接 优点:效率高 缺点:不可靠3) 简述TCP/IP协议中三次握手的过程及涵义4) 简述TCP/IP模型中应用层数据从主机A发送到主机B的整个过程。5) 利用setsocketopt()使用嵌套字支持广播,并编写两个程序,其中一个发送广播数据,另一个接收广播数据。6) 编写一个UDP类型的client/server实例。7) 写一个TCP 并发的服务器,实现echo功能。8) 写一个UDP echo服务器第五部分:嵌入式平台架构1. 什么是嵌入式系统,描述一下你对嵌入式系统的理解?2. 搭建一个完整的嵌入式
25、Linux开发平台需要做哪些工作,描述一下详细步骤?3. 什么是Bootloader,详细描述一下你对Bootloader的理解。常用的Bootloader有哪些?4. Bootloader的启动过程一般分为两个阶段,以vivi为例说明Bootloader的两个阶段完成什么工作。5. 什么是Bootloader的“启动加载模式”和“下载模式”?6. vivi的命令是怎样实现的?7. vivi传递给内核的参数“noinitrd root=/dev/bon/2 init=/linuxrc console=ttyS0”是什么意思?8. 怎样把一个SD卡驱动程序编译到Linux内核中?描述一下详细步骤
26、。9. 你是怎样理解Linux内核配置编译机制的?10. Linux内核源码各个子目录分别包含哪些内容?11. 执行make menuconfig配置完Linux内核后,会生成两个文件.config和include/autoconf.h,它们分别是什么作用?12. 什么是根文件系统,你是怎样理解这一概念的?13. 怎样制作一个cramfs格式的根文件系统?描述一下详细过程。14. 常用的根文件系统格式有哪些?它们分别具有什么特点?15. Busybox工具包的作用是什么?TinyLogin工具包的作用是什么?16. 用Busybox实现的命令和PC上的Linux命令有什么区别?17. 内核是怎
27、样启动根文件系统的?描述一下详细过程。18. 怎样移植Qt图形库到根文件系统中,描述一下详细过程。第六部分:驱动篇1. 简述某一32处理器最小系统的组成与器件功能2. 简述NAND FLASH与NOR FLASH的区别与适用场合3. 简述2440的中断响应过程4. 简述互斥锁与信号量的异同与应用领域5. 简述在linux下 编写一个 2*3 键盘驱动的思路,要求动态扫描、去抖、检测键抬起、检测长短键按下6. 简述2401驱动编写思路与架构7. 用自己的话简述你所理解的linux 字符设备驱动架构第五部分:综合项目部分1、 描述学生管理系统功能实现、编程思路、涉及知识点及各模块特点2、 描述歌词解析项目功能实现、编程思路、涉及知识点及各模块特点3、 描述wdbsever功能实现、编程思路、涉及知识点及各模块特点4、 描述TFTP客户端程序功能实现、编程思路、涉及知识点及各模块特点5、 描述飞鸽传输功能实现、编程思路、涉及知识点及各模块特点6、 描述黑白棋功能实现、编程思路、涉及知识点及各模块特点
限制150内