您好,欢迎访问三七文档
综合测试试题第一部分: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、#includefilename.h和#include“filename.h”有什么区别?表示系统直接按照系统指定的目录检索filename.h“”系统先在filename.c所在的当前目录下查找filename.h如果找不到,再按系统指定的目录进行检索(通常包含库函数的头文件;””通常包含自定义的头文件)3、const有什么用途?(请至少说明两种)可以定义const常量,具有不可变性;可以修饰函数参数,防止意外修改增强程序健壮性4、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?externC是连接申明(linkagedeclaration),被externC修饰的变量和函数是按照C语言方式编译和连接的,实现C++与C混合编程。5、请简述以下两个for循环的优缺点//第一个for(i=0;iN;i++){if(condition)DoSomething();elseDoOtherthing();}//第二个if(condition){for(i=0;iN;i++)DoSomething();}else{for(i=0;iN;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函数会有什么样的结果?答:helloworldVoidGetMemory2(char**p,intnum){*p=(char*)malloc(num);}voidTest(void){char*str=NULL;voidTest(void){char*str=(char*)malloc(100);strcpy(str,“hello”);free(str);if(str!=NULL){GetMemory(&str,100);strcpy(str,hello);printf(str);}请问运行Test函数会有什么样的结果?答:hellostrcpy(str,“world”);printf(str);}}请问运行Test函数会有什么样的结果?答:段错误五、编写strcpy函数已知strcpy函数的原型是char*strcpy(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。(1)不调用C++/C的字符串库函数,请编写函数strcpychar*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、写出程序删除链表中的所有接点3、使用冒泡、选择法、快速排序法对数组进行排序选择法:for(i=0;in-1;i++){Min=i;For(j=min+1;jn;j++){If(k[min]k[j]){交换;}}}冒泡法:For(i=0;in;i++){For(j=0;jn-i-1;j++){If(k[j]k[j+1]){交换;}}}第二部分:C++与QT1.C++对C语言做了很多改进,下列描述中()使得C语言发生了质变,即从面向过程变成面向对象。A)增加了一些新的运算符B)允许函数重载,并允许设置默认参数C)规定函数说明必须用原型D)引进类和对象的概念2.下面说法中正确的是()A)一个类只能定义一个构造函数,但可以定义多哥析构函数B)一个类只能定义一个析构函数,但可以定义多个构造函数C)构造函数与析构函数同名,知识名字前加了一个求反符号(~)D)构造啊函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以3.下面关于友元的描述中,错误的是()。A)友元函数可以访问该类的私有数据成员。B)一个类的友元类中的成员函数都是这个类的友元函数。C)友元可以提高程序的运行效率。D)类与类之间的友元关系可以继承。4.有关析构函数的说法不正确的是()。A)析构函数有切仅有一个B)析构函数和构造函数一样可以有形参C)析构函数的功能是用来释放一个对象D)析构函数无任何函数类型5.下列对重载函数的描述中,()是错误的。A)重载函数中不允许使用默认参数B)重载函数中编译时根据参数表进行选择C)不要使用重载函数来描述毫无相干的函数D)构造函数重载将会给初始化带来多种方式6.下面叙述错误的是()A.派生类可以使用private派生B.对基类成员的访问必须是无二义性的C.基类成员的访问能力在派生类中维持不变D.赋值兼容规则也适用于多继承的组合一、选择题:(共10小题,每题3分)1.类的构造函数被自动调用执行的情况是在定义该类的()A)成员函数时B)数据成员时C)对象时D)友元函数时2.说明友元函数使用关键字()A)friendB)staticC)constD)colatile3.已知类X中的一个成员函数说明如下:VoidSet(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.局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用()提供对全局变量的访问A)域运算符B)类运算符C)重载D)引用7.缺省析构函数的函数体是()A)不存在B)随机产生的C)空的D)无法确定的、8.通常拷贝构造函数的参数表是()A)某个对象名B)某个对象的成员名C)某个对象的引用名D)某个对象的指针名9.对定义重载函数的下列要求中,()是错误的A)要求参数的个数不同B)要求参数中至少有一个类型不同C)要求参数个数相同时,参数类型不同D)要求函数的返回值不同10.对于多重继承,有()A.一个派生类只能有一个基类B.一个基类只能产生一个派生类C.一个基类必须产生多个派生类D.一个派生类可有多个基类7.C和C++有什么不同?(4分)8.面向对象的三个基本特征及各自的作用(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++的头文件需添加externC,但是在C语言中不能直接引用声明了externC的该头文件,应该仅将C文件中将C++中定义的externC函数声明为extern类型。三、编程题:(共3小题每小题10分)17.编写一个字符串处理的类,MyString,实现拷贝构造,‘=’号重载等基本函数。18.使用MyString作为成员对象实现一个Person类,包含:姓名,年龄。19.实现一个Student类:有性名,年龄,学号,老师姓名。20.编写类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系统编程1.Linux根目录下一般有哪些目录?每个目录的作用是什么?2.用gcc编译文件test.c,要经过哪几个步骤?3.gcc的参数“-L”,“-l”“-I”分别是什么意义?举例说明。4.写一个脚本完成如下功能:首先,让使用者输入一个文件名,脚本作如下判断:(1)这个文件是否存在,若不存在则给出一个“Filenamedoesnoetexist”提示,并中断程序。(2)若这个文件存在,则判断它是文件还是目录,结果输出“Filenameisregularfile”或“Filenameisdirectory”(3)判断用户对这个文件或目录所具有的权限并显示出来。5.什么是系统调用?请写出你对系统调用的理解。6.什么是标准I/O库?标准I/O库和系统调用有什么区别?7.什么是进程?用fork()创建一个子进程时,系统会做什么工作?8.管道和命名管道使用上有什么不同之处?9.信号的处理方式有几种?怎样指定信号的处理方式?10.进程和线程有什么区别?11.什么是线程的互斥和同步,举例说明怎么实现线程的互斥和同步?12.实现三个进程其中一个是父进程,其余两个是该父进程创建的子进程,其中一个子进程运行“ls–l”指令,另一个子进程在暂停5s之后退出,父进程等待子进程的退出信息
本文标题:c语言综合测试试题
链接地址:https://www.777doc.com/doc-2908438 .html