c语言综合测试试题.docx

上传人:b****0 文档编号:17390968 上传时间:2023-07-24 格式:DOCX 页数:18 大小:23.43KB
下载 相关 举报
c语言综合测试试题.docx_第1页
第1页 / 共18页
c语言综合测试试题.docx_第2页
第2页 / 共18页
c语言综合测试试题.docx_第3页
第3页 / 共18页
c语言综合测试试题.docx_第4页
第4页 / 共18页
c语言综合测试试题.docx_第5页
第5页 / 共18页
c语言综合测试试题.docx_第6页
第6页 / 共18页
c语言综合测试试题.docx_第7页
第7页 / 共18页
c语言综合测试试题.docx_第8页
第8页 / 共18页
c语言综合测试试题.docx_第9页
第9页 / 共18页
c语言综合测试试题.docx_第10页
第10页 / 共18页
c语言综合测试试题.docx_第11页
第11页 / 共18页
c语言综合测试试题.docx_第12页
第12页 / 共18页
c语言综合测试试题.docx_第13页
第13页 / 共18页
c语言综合测试试题.docx_第14页
第14页 / 共18页
c语言综合测试试题.docx_第15页
第15页 / 共18页
c语言综合测试试题.docx_第16页
第16页 / 共18页
c语言综合测试试题.docx_第17页
第17页 / 共18页
c语言综合测试试题.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言综合测试试题.docx

《c语言综合测试试题.docx》由会员分享,可在线阅读,更多相关《c语言综合测试试题.docx(18页珍藏版)》请在冰点文库上搜索。

c语言综合测试试题.docx

c语言综合测试试题

综合测试试题

第一部分:

C语言

一、请填写BOOL,float,指针变量与“零值”比较的if语句。

提示:

这里“零值”可以是0,0.0,FALSE或者“空指针”。

例如int变量n与“零值”比较的if语句为:

if(n==0)

if(n!

=0)

以此类推。

请写出BOOLflag与“零值”比较的if语句:

If(flag==FALSE)

请写出floatx与“零值”比较的if语句:

if(x==0.0)

请写出char*p与“零值”比较的if语句:

If(p==NULL)

二、以下为WindowsNT下的32位C++程序,请计算sizeof的值

charstr[]=“Hello”;

char*p=str;

intn=10;

请计算

sizeof(str)=6;

sizeof(p)=4;

sizeof(n)=4;

voidFunc(charstr[100])

{

请计算

sizeof(str)=4;

}

void*p=malloc(100);

请计算

sizeof(p)=4;

三、简答题

1、头文件中的ifndef/define/endif干什么用?

防止头文件重复包含

2、#include和#include“filename.h”有什么区别?

<>表示系统直接按照系统指定的目录检索filename.h

“”系统先在filename.c所在的当前目录下查找filename.h如果找不到,再按系统指定的目录进行检索

<>通常包含库函数的头文件;””通常包含自定义的头文件

3、const有什么用途?

(请至少说明两种)

可以定义const常量,具有不可变性;可以修饰函数参数,防止意外修改增强程序健壮性

4、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?

extern"C"是连接申明(linkagedeclaration),被extern"C"修饰的变量和函数是按照C语言方式编译和连接的,实现C++与C混合编程。

5、请简述以下两个for循环的优缺点

//第一个

for(i=0;i

{

if(condition)

DoSomething();

else

DoOtherthing();

}

//第二个

if(condition)

{

for(i=0;i

DoSomething();

}

else

{

for(i=0;i

DoOtherthing();

}

优点:

程序较为简洁

缺点:

多执行了N-1次判断降低了效率

优点:

只判断一次,效率高

缺点:

程序不简洁

四、有关内存的思考题

voidGetMemory(char*p)

{

p=(char*)malloc(100);

}

voidTest(void)

{

char*str=NULL;

GetMemory(str);

strcpy(str,"helloworld");

printf(str);

}

请问运行Test函数会有什么样的结果?

答:

段错误

char*GetMemory(void)

{

charp[]="helloworld";

returnp;

}

voidTest(void)

{

char*str=NULL;

str=GetMemory();

printf(str);

}

请问运行Test函数会有什么样的结果?

答:

helloworld

VoidGetMemory2(char**p,intnum)

{

*p=(char*)malloc(num);

}

voidTest(void)

{

char*str=NULL;

GetMemory(&str,100);

strcpy(str,"hello");

printf(str);

}

请问运行Test函数会有什么样的结果?

答:

hello

voidTest(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,constchar*strSrc);

其中strDest是目的字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数strcpy

char*strcpy(char*strDest,constchar*strSrc)

{

While(*strsrc!

=NULL)

{

*strdest=*strsrc;

Strdest++;

Strsrc++;

}

Returnstrdest;

}

(2)strcpy能把strSrc的内容复制到strDest,为什么还要char*类型的返回值?

这样方便调用例如strcpy(strcpy(des,src),src_1);

六:

编程题

1、写出程序把一个链表中的接点顺序倒排

2、写出程序删除链表中的所有接点

使用冒泡、选择法、快速排序法对数组进行排序

选择法:

for(i=0;i

{

Min=i;

For(j=min+1;j

{

If(k[min]>k[j])

{

交换;

}

}

}

冒泡法:

For(i=0;i

{

For(j=0;j

{

If(k[j]>k[j+1])

{

交换;

}

}

}

第二部分:

C++与QT

C++对C语言做了很多改进,下列描述中 ()

 使得C语言发生了质变,即从面向过程变成面向对象。

A)增加了一些新的运算符      

B)允许函数重载,并允许设置默认参数 

C)规定函数说明必须用原型      

D)引进类和对象的概念

下面说法中正确的是( )

A)一个类只能定义一个构造函数,但可以定义多哥析构函数

B)一个类只能定义一个析构函数,但可以定义多个构造函数

C)构造函数与析构函数同名,知识名字前加了一个求反符号(~)

D)构造啊函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以

下面关于友元的描述中,错误的是()。

A)   友元函数可以访问该类的私有数据成员。

B)    一个类的友元类中的成员函数都是这个类的友元函数。

C)    友元可以提高程序的运行效率。

D)    类与类之间的友元关系可以继承。

有关析构函数的说法不正确的是()。

A)析构函数有切仅有一个

B)析构函数和构造函数一样可以有形参

C)析构函数的功能是用来释放一个对象

D)析构函数无任何函数类型

下列对重载函数的描述中,()是错误的。

A)重载函数中不允许使用默认参数    

B)重载函数中编译时根据参数表进行选择

C)不要使用重载函数来描述毫无相干的函数  

D)构造函数重载将会给初始化带来多种方式

下面叙述错误的是( )

派生类可以使用private派生

B.对基类成员的访问必须是无二义性的

C.基类成员的访问能力在派生类中维持不变

D.赋值兼容规则也适用于多继承的组合

一、选择题:

(共10小题,每题3分)

1.类的构造函数被自动调用执行的情况是在定义该类的()

A)成员函数时

B)数据成员时

C)对象时

D)友元函数时

2.说明友元函数使用关键字()

A)friend

B)static

C)const

D)colatile

3.已知类X中的一个成员函数说明如下:

VoidSet(x&a);其中,X&a的含义是()

A)指向类X的指针为a

B)将a的地址赋给变量Sst

C)a是类X的对象引用,用来做为Set()的形参

D)变量X是a按位相与作为函数Set()的参数

4.关于new运算符的下列描述中( )是错误的.

A) 它可以用来动态创建对象和对象数组

B) 使用它创建对象或对象数组,可以使用运算符DELETE删除

C) 使用它创建对象时要调用构造函数

D) 使用它调用对象数组时不E) 许指F) 定初始值

5.允许访问类的所有对象的私有成员,公有成员和保护成员的是()

A)友元函数

B)成员函数

C)内联函数

D)重载函数

6.局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用()

提供对全局变量的访问

A)域运算符

B)类运算符

C)重载

D)引用

7.缺省析构函数的函数体是()

A)不存在

B)随机产生的

C)空的

D)无法确定的、

8.通常拷贝构造函数的参数表是()

A)某个对象名

B)某个对象的成员名

C)某个对象的引用名

D)某个对象的指针名

9.对定义重载函数的下列要求中,()是错误的

A)要求参数的个数不同    

B)要求参数中至少有一个类型不同

C)要求参数个数相同时,参数类型不同 

D)要求函数的返回值不同

10.对于多重继承,有()

A.一个派生类只能有一个基类

B.一个基类只能产生一个派生类

C.一个基类必须产生多个派生类

D.一个派生类可有多个基类

C和C++有什么不同?

(4分)

面向对象的三个基本特征及各自的作用(6分)

c和c++中的struct有什么不同?

(5分)

const符号的作用有哪些?

(5分)

引用与指针有什么区别?

(6分)

重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

(4分)

static在类内修饰成员的作用是什么,如何引用这些成员?

(4分)

虚析构函数的作用是什么?

(6分)

类成员函数的重载、覆盖和隐藏区别?

在C中引用C++语言中的函数和变量时,C++的头文件需添加extern"C",但是在C语言中不能直接引用声明了extern"C"的该头文件,应该仅将C文件中将C++中定义的extern"C"函数声明为extern类型。

三、编程题:

(共3小题每小题10分)

编写一个字符串处理的类,MyString,实现拷贝构造,‘=’号重载等基本函数。

使用MyString作为成员对象实现一个Person类,包含:

姓名,年龄。

实现一个Student类:

有性名,年龄,学号,老师姓名。

编写类String的构造函数、析构函数和赋值函数

已知类String的原型为:

classString

{

public:

String(constchar*str=NULL);//普通构造函数

String(constString&other);//拷贝构造函数

~String(void);//析构函数

String&operate=(constString&other);//赋值函数

private:

char*m_data;//用于保存字符串

};

请编写String的上述4个函数。

Qt图形库部分:

1、什么是Qt图形库,你是怎么理解的?

2、Qt库的QApplication类有什么作用?

3、Qt怎么处理绘图事件和鼠标事件?

4、举例说明怎么实现自定义信号和槽。

5、要设计开发一个扫雷游戏,写出你的设计思路。

二、编程题:

1.继承自QWidget,自定义一个Button,功能如下:

1)enter与leave有不同的背景状态变化,提示:

enterEvent(),leaveEvent();

2)Press与Release也有不同的背景状态变化

3)当鼠标点击时可以发出clicked()信号

4)创建一个窗口,测试自定义的Button

第三部分:

linux系统编程

Linux根目录下一般有哪些目录?

每个目录的作用是什么?

用gcc编译文件test.c,要经过哪几个步骤?

gcc的参数“-L”,“-l”“-I”分别是什么意义?

举例说明。

写一个脚本完成如下功能:

首先,让使用者输入一个文件名,脚本作如下判断:

(1)这个文件是否存在,若不存在则给出一个“Filenamedoesnoetexist”提示,并中断程序。

(2)若这个文件存在,则判断它是文件还是目录,结果输出“Filenameisregularfile”或“Filenameisdirectory”

(3)判断用户对这个文件或目录所具有的权限并显示出来。

什么是系统调用?

请写出你对系统调用的理解。

什么是标准I/O库?

标准I/O库和系统调用有什么区别?

什么是进程?

用fork()创建一个子进程时,系统会做什么工作?

管道和命名管道使用上有什么不同之处?

信号的处理方式有几种?

怎样指定信号的处理方式?

进程和线程有什么区别?

什么是线程的互斥和同步,举例说明怎么实现线程的互斥和同步?

实现三个进程

其中一个是父进程,其余两个是该父进程创建的子进程,其中一个子进程运行“ls–l”指令,另一个子进程在暂停5s之后退出,父进程等待子进程的退出信息,待收集到该信息,父进程就返回。

编写一个多进程多线程的程序:

要求创建4个子进程,每个进程都分别创建2个线程,进程和线程的功能不做要求,可只提供简单的打印语句。

编制一段程序,实现进程的管道通信:

使用系统调用pipe()建立一条管道线,两个子进程分别向管道各写一句话:

Childprocess1issendingamessage!

Childprocess2issendingamessage!

而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。

要求:

父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。

第四部分:

网络编程

路由器工作在哪一层(B)

A:

链路层B:

网络层C:

传输层D:

应用层

一台主机要实现通过局域网与另一个局域网通信,需要做的工作是(C)。

A:

配置域名服务器

B:

定义一条本机指向所在网络的路由

C:

定义一条本机指向所在网络网关的路由

D:

定义一条本机指向目标网络网关的路由

下列提法中,不属于ifconfig命令作用范围的是(D)。

A:

配置本地回环地址B:

配置网卡的IP地址

C:

激活网络适配器D:

加载网卡到内核中

下面的网络协议中,面向连接的的协议是:

(A)。

A:

传输控制协议B:

用户数据报协议

C:

网际协议D:

网际控制报文协议

在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是(D)

A主机IP设置有误

B没有设置连接局域网的网关

C局域网的网关或主机的网关设置有误

D局域网DNS服务器设置有误

DHCP是动态主机配置协议的简称,其作用是可以使网络管理员通过一台服务器来管理一个网络系统,自动地为一个网络中的主机分配(D)地址。

A:

UDPB:

MACC:

TCPD:

IP

在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中,(A)B是能够实现本地与远程主机之间的文件传输工作。

AtelnetBFTPC:

SNMPD:

NFS

当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是(A)。

C

A:

pingB:

ifconfigC:

tracerouteD:

netstat

关于代理服务器的论述,正确的是(A)。

A:

使用internet上已有的公开代理服务器,只需配置客户端。

B:

代理服务器只能代理客户端http的请求。

C:

设置好的代理服务器可以被网络上任何主机使用。

D:

使用代理服务器的客户端没有自己的ip地址。

公司需要把192.168.3.0/255.255.255网段划分成10个子网,子网掩码应该是(C)?

A:

255.255.255.5B:

255.255.255.4

C:

255.255.255.240D:

255.255.255.248

二:

填空题(本题共5小题,每空1分共10分)

网络192.168.220.0/24定向广播地址是(192.168.220.254),受限的广播地址为(255.255.255.255),定向广播和受限广播的区别(

定向广播是网络号是具体对应的网络号而主机号全为1,它是对具体网络上的所有主机进行广播

受限广播是ip全为1,指的是在本网络上(即主机所连接的局域网上)进行广播

);

在tcp/ip模型中进程到进程之间通信属于(传输层)层,主机到主机属于(网络层)层,设备到设备属于(链路层)层,程序到程序属于(应用层)层。

Ping命令的功能为(来检查网络是否通畅或者网络连接速度)。

进行远程登录的命令是(SSH)。

DNS域名系统的作用是(将域名转换成IP地址)。

三:

问答题(本题共4小题,每题6分共24分)

简述TCP/IP协议中各层的主要功能,各有哪些主要协议。

应用层:

程序与程序之间(FTP,HTTP)

传输层:

进程与进程之间(TCP,UDP)

网络层:

主机与主机之间(IP)

链路层:

设备与设备之间

什么是TCP、UDP?

协议优缺点,应用场合?

TCP(传输层控制协议)面向链接优点:

可靠缺点:

效率低

UDP(用户数据包协议)面向无连接优点:

效率高缺点:

不可靠

简述TCP/IP协议中三次握手的过程及涵义

简述TCP/IP模型中应用层数据从主机A发送到主机B的整个过程。

利用setsocketopt()使用嵌套字支持广播,并编写两个程序,其中一个发送广播数据,另一个接收广播数据。

编写一个UDP类型的client/server实例。

写一个TCP并发的服务器,实现echo功能。

写一个UDPecho服务器

第五部分:

嵌入式平台架构

什么是嵌入式系统,描述一下你对嵌入式系统的理解?

搭建一个完整的嵌入式Linux开发平台需要做哪些工作,描述一下详细步骤?

什么是Bootloader,详细描述一下你对Bootloader的理解。

常用的Bootloader有哪些?

Bootloader的启动过程一般分为两个阶段,以vivi为例说明Bootloader的两个阶段完成什么工作。

什么是Bootloader的“启动加载模式”和“下载模式”?

vivi的命令是怎样实现的?

vivi传递给内核的参数“noinitrdroot=/dev/bon/2init=/linuxrcconsole=ttyS0”是什么意思?

怎样把一个SD卡驱动程序编译到Linux内核中?

描述一下详细步骤。

你是怎样理解Linux内核配置编译机制的?

Linux内核源码各个子目录分别包含哪些内容?

执行makemenuconfig配置完Linux内核后,会生成两个文件.config和include/autoconf.h,它们分别是什么作用?

什么是根文件系统,你是怎样理解这一概念的?

怎样制作一个cramfs格式的根文件系统?

描述一下详细过程。

常用的根文件系统格式有哪些?

它们分别具有什么特点?

Busybox工具包的作用是什么?

TinyLogin工具包的作用是什么?

用Busybox实现的命令和PC上的Linux命令有什么区别?

内核是怎样启动根文件系统的?

描述一下详细过程。

怎样移植Qt图形库到根文件系统中,描述一下详细过程。

第六部分:

驱动篇

简述某一32处理器最小系统的组成与器件功能

简述NANDFLASH与NORFLASH的区别与适用场合

简述2440的中断响应过程

简述互斥锁与信号量的异同与应用领域

简述在linux下编写一个2*3键盘驱动的思路,要求动态扫描、去抖、检测键抬起、检测长短键按下

简述2401驱动编写思路与架构

用自己的话简述你所理解的linux字符设备驱动架构

第五部分:

综合项目部分

描述学生管理系统功能实现、编程思路、涉及知识点及各模块特点

描述歌词解析项目功能实现、编程思路、涉及知识点及各模块特点

描述wdbsever功能实现、编程思路、涉及知识点及各模块特点

描述TFTP客户端程序功能实现、编程思路、涉及知识点及各模块特点

描述飞鸽传输功能实现、编程思路、涉及知识点及各模块特点

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2