西工大软微C++兴趣小组笔试题_第1页
西工大软微C++兴趣小组笔试题_第2页
西工大软微C++兴趣小组笔试题_第3页
西工大软微C++兴趣小组笔试题_第4页
西工大软微C++兴趣小组笔试题_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2011年C+兴趣小组招新笔试试题班级 姓名 学号 联系电话C语言部分(60分)一、选择题(6 * 2=12) 下面能从数组x中复制前n个元素到数组y中,正确的代码是()i=0; while(in)yi=xi+;i=0; while(in)yi+=xi;i=0; while(in)yi=xi;i+for(i=1;i b+ ) & b 2 )a=b;elsea=(a4 );printf(%d,a);则最终打印a的值为() TOC o 1-5 h z 0123有这样一段程序int a=3;doprintf(%d ,a);while( a -= 2 );则最终输出结果为()3 13 1 -133 1

2、 -1 -3 . 下列选项中错误的是()A)所有的无符号运算都是以2的n次方为模(这里n是结果中的位数),所以没 有所谓的溢出一说。B)a和b是两个非负整数,一种检测a+b是否溢出的代码是if( a INT_MAX b ) complain();C)当一个运算的结果发生溢出时,做出任何假设都是不安全的。D)两个无符号数相加,溢出的后的结果为负。下列关于关键字static的作用,说法不正确的是()A)当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 全局可见性。B)static变量具备持久性和默认值0;C)static变量使整形(int)变量初始化为0,但是对浮点型则不一

3、样,其初始 化值不能确定。D)static变量存放在静态存储区;C语言程序,头文件中不应该包含的内容为()A)函数原型B)结构声明C)函数定义D)宏定义二、填空题(5*2=W阅读下面代码片段struct asint a;char c;union auchar c; int i;请回答:sizeof(as)=sizeof(au)=阅读下面代码片段 char cArray = g, o, o, d, T, u, c, k;char *cpointer = goodluck;请回答:sizeof(cArray) issizeof(cpointer) isstrlen(cpointer) is三、简答

4、题(5 * 4=20)9.包含头文件时,通常include后面跟着尖括号,如#include 。但也会 跟着双引号,请简述二者的区别(#include #include .)。10. main函数中return 0; return 1;的区别是什么?11.关键词NULL(空指针)是一个在c库中的宏定义。尝试写出该宏定义。12.请简述数组名和指针的区别13.请简述自动变量(auto),寄存器变量(register),易失变量(volatile,选做),静态变量(static),外部变量(extern),以及restrict (可选)的区别。四、程序题(2 * 9 =1814.以下是一段冒泡排序算

5、法,请完成空白内容void bubbleSort(int *a, int num) /*num is the number of the array*/int temp;for(int i=0; inum; i+)for(int j=0; j aj+1);对于这个冒泡排序算法,总会对这个数组进行n趟筛选。但是n趟并不是必须的, 比如说当执行了 i趟(in),数组就已经排好序了,剩下的n-i趟只是无聊的重复。 请提出改进意见,提高效率,避免这种无聊的重复。15.第一个二分搜索算法早在1946年就出现了,但是第一个完全正确的二分搜索 算法却直到1962年才出现,之间竟有16年的时间。可现在需要请你

6、在这场考试 中写出一个正确的二分搜索算法。/* a是按升序排序后的数组,data是要搜索的元素,n是数组的长度*/int BinarySearch(int a, int data, int n)/*end BinarySearch */C+语言部分(40分)一、填空题(7 * 2=1)4阅读下面代码片段int f(int, int) const;以下为函数f的重载函数的有.(多选)A. void f(int, int); B.int f(int) const; C.void f(int,int) const; D.int f(char) const;阅读下面代码片段char *p = I li

7、ke c+;cout p + 2 = 1; i /= 2) +j; 可知,该片段的时间复杂度为阅读下面代码片段char array = hello, c;cout *array+ endl;显示屏上应显示阅读下面代码片段enum open_modes input, output = 5, append;cout input endl;显示屏上应显示阅读下面代码片段void subFun(int &arg) static int x = 5;x += arg;arg = x + arg;int main() int i = 10;for (int j = 1; j = 3; +j) subFun

8、(i);cout i endl;return 0;显示屏上应显示有如下程序class Base public :void printf1() cout Base:f1()n; virtual void printf2() cout Base:f2()n; ;class Derived : public Base public :virtual void printf1() cout Derived:f1()n; void printf2() cout dividend divisor; /由用户输入被除数和除数 int result = dividend / divisor;cout resu

9、lt endl;该程序是否存在安全风险?为增加其鲁棒性,请利用C+的异常处理机制对其 进行修改。10.相信汉诺塔问题已经让你领略到递归的巨大威力。以下请利用递归程序求解。 有一个大小为size的整型数组intArray。请求出该数组的最大元素。(提示:对 int Max(int intArray, int size);递归调用)11. Bob初学C+编程,写了如下程序void f() char *myName = new char4;myName 0 = B;myName 1 = o;myName 2 = b;/*输出姓名Bob*/cout myName endl;该程序是否有错误或不完整?应

10、如何修改?(直接在原程序处修改)12. Bob有个朋友Pally,和Bob在一起学习c+,写了如下程序:class friend private :char *name = Bob;public :friend() friend() delete name; void setName(const char *iniN) int len = strlen(iniN);name = new charlen + 1;strcpy(name, iniN);char* getName() return name; /*end friend */但是在编译时,该程序老是出错。Pally很恼火。你能帮助他找

11、到问题所在吗?(至少找出两处错误);请在下方的空白处用文字描述。附加题(3*10=30)设有自然数n (1 =n = 7)。从1到105-1这么多正数数中,数字1出现的次数是多少?常用的Linux系统发行版本有哪些?列出你所知道的常用的Linux文件系 统?当你登入linux系统时,会将你的用户名及密码 与 哪些文件比较?通常 这些文件是无法正常访问的,请使用chmod命令,修改这些文件的访问权限。请分别简述WIN32 API消息机制和QT信号槽机制。C+兴趣小组笔试试题答案仅供参考一下C语言部分、选择题(6*2分=12分)1-6 CBDDCC二、填空题8 (填5给一分),48,4, 8三、简

12、答题答:(1)使用双引号:系统首先到当前目录下查找被包含文件,如果没找到, 再到系统指定的“包含文件目录”(由用户在配置环境时设置)去查找。(2)使用尖括号:直接到系统指定的“包含文件目录”去查找。答:return 0表示main函数正常退出,而return非零表示main函数异常退出, 返回的值可以作为异常代码。答:#define NULL 0。(1)数组名是常量,指针是变量(2)对数组名sizeof可以求得数组占用的字节 数,对指针sizeof只能获得指针占用的字节数。13auto函数中的局部变量,默认类型,动态分配方式,(1分)static静态局部变量,函数调用后,其值不变,(1分)限制

13、作用域在文件内(1 分)extern在一个或多个文件中声明外部变量(1分)register寄存器变量,只是对编译器的一个建议(1分),volatile优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而 不是使用保存在寄存器里的备份(1分)restrict是c99引入的,它只可以用于限定指针,并表明指针是访问一个数据对 象的唯一且初始的方式(1分)四、程序题14.num-i-1 (2 分)temp=aj (1分)aj=aj+1(1 分)aj+1=temp (1分)优化方案:设置一个bool变量,当交换一次或者一次以上时,改变bool变量的值。如果在一趟排序中没有发生交换,则说明排序完

14、成。(4分)15能写出基本思路得(3分).数组为1,2,查找2,进行测试,看是否陷入陷入死循环。不陷入死循环得(3分。)思路清晰且有注释得(2分)代码示例一:int BinarySearch( int a, int data, int n ) Int first=0;Int middle;Int last=n;While(first data)Last=middle;else if(amiddle dividend divisor; 由用户输入被除数和除数int result = dividend / divisor;cout result void calDiv() int dividend

15、;int divisor;try cin dividend divisor;if (divisor = 0) throw divisor is 0;int result = dividend / divisor;cout result endl; catch(const char *error) cout error n;版本一:int Max(int intArray, int size) if (size = 1) return intArray0;else return max(Max(intArray, size - 1), intArraysize - 1);版本二int Max(i

16、nt intArray, int size)static int max = intArraysize-1;if(size=0)return max;elseif(maxmax?temp:max;11.delete myNmae;添加myName3=/0改对一个算两S分)12.a. friend Frienda. friend Friend char *name;b.char *name = Bob = 类声明大括号后面加上; char *name;附加题1f(n)=10f(n-1)+10n-22常用 linux 操作系统: fedaro Ubuntu minit。(2 分)会和/etc/password(用户信息)以及/etc/shadow (密码)文件比较(两个文件,每个 2分,共4分)Sudo chmod 777文件名(只要大于600就可以)(4分)3.WIN32消息机制:用于应用程序和操作系统的交互Win32系统是基于事件驱动的,维护了多个消息队列,会把系统本身产生的事件 或者用户触发的事件解释成一个消息,所有产生的消息都回被放入或是插入队列 中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥 有该窗口的程序的消

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论