(完整版)C++期末考试样卷及答案.doc

上传人(卖家):2023DOC 文档编号:5762789 上传时间:2023-05-06 格式:DOC 页数:12 大小:36.50KB
下载 相关 举报
(完整版)C++期末考试样卷及答案.doc_第1页
第1页 / 共12页
(完整版)C++期末考试样卷及答案.doc_第2页
第2页 / 共12页
(完整版)C++期末考试样卷及答案.doc_第3页
第3页 / 共12页
(完整版)C++期末考试样卷及答案.doc_第4页
第4页 / 共12页
(完整版)C++期末考试样卷及答案.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、天津大学C+期末考试样卷及答案一. 单项选择题(每题1分,共20分) 1C+源程序文件的扩展名是 。BA).C B).CPP C).DLL D).EXE2. 下列属于C+合法的字符常量是 C 。A)97 B)“A” C)t D) “0” 3设const int B=6; int a12; 则下列错误的是 _。AA)B+=3; B)a5=B+3; C)int xB+3; D)aB+3=25;4. a、b均为int型且b0,则表达式a-a/b*b的值为 C 。)0 ) a )a被b除的余数部分 )a被b除商的整数部分5. 设int a=5,b=6,c=7; 则cout(a+b)c&b!=c),(a

2、+b)c,b=c);的输出是 B 。 A) 0,0 B) 0,7 C) 1,0 D) 1,7 6. 以下关于编译预处理的叙述中,错误的是 C 。A)预处理命令必须以“#”开始 B)一条预处理命令行必须独占一行 C)一条预处理命令行必须以分号结束 D)预处理命令是在正式编译之前先被处理的7设int型数据占4个字节,若有定义:int x10=0,2,4; 则sizeof(x)的值为 C 。A) 3 B) 12 C) 40 D) 108.下列关于C+函数的叙述中,正确的是 。A)每个函数至少要有一个形参 B)C每个函数都必须有返回值C)函数在被调用之前必须先声明 D)函数不能自己调用自己 9下面有关

3、重载函数的说法中正确的是 C 。A) 重载函数必须具有不同的返回值类型 B) 重载函数形参个数必须不同C) 重载函数必须有不同的形参表 D) 重载函数名可以不同10. 表达式strcmp(box,boss) 的值是 A 。A) 正整数 B) 负整数 C) 0 D) 不确定的数 11设int a34,*p=a0; 以下不能正确访问数组元素aij的是 A 。 A) *(a+i+j) B) *(*(a+i)+j) C) *(ai+j) D) p4*i+j 12当一个派生类公有继承一个基类时,基类的所有public成员成为派生类的 D 。A) 友元 B) private成员 C) protected成

4、员 D) public成员13设int a=3,*p=&a; 则*p的值是 D 。A) 变量a的地址值 B) 无意义 C) 变量p的地址值 D) 314设int i=5,f=15; 则执行语句 if(i=0) f-=5; 后i和f的值分别是 C 。A) 5,15 B) 5,10 C) 0,15 D) 0,10 15设int *p;以下对new运算符的正确使用形式是 C 。A) p=new a10; B) *p=new int10;C) p=new int10; D) p=new int5=1,2,3,4,5,6;16下列关于动态联编的描述错误的是 C。A) 动态联编在运行时选择联编函数 B)

5、动态联编也称为动态多态性C) 函数重载和运算符重载属于动态联编 D) 动态联编可用来选择虚函数17设二叉树的高度为k(k0),若其包含的结点总数为2k+1-1,则该二叉树是 B 。A) 完全二叉树 B) 满二叉树 C) 二叉排序树 D) 普通的二叉树18设用一个大小为6的一维数组存储顺序循环队列,若当前front和rear的值分别为3和5,当从队列中删除一个元素,再加入两个元素后,front和rear的值分别是 D 。A)5和0 B)4和7 C)无法完成要求的操作 D)4和119以下关于关键字的描述中错误的是 C 。A)关键字可由元素的一个或多个数据项组成 B) 可以按关键字进行查找C) 不同

6、元素的关键字值可以相同 D) 每个元素的关键字必须是唯一的20直接插入排序在被排序的数据 B 时效率较高。A) 完全无序 B) 基本有序 C) 逆序排列 D) 最大值与最小值相差不大 二写出以下程序的运行结果(每题4分,共20分) 1. #include void main()int a8=12,25,33,5,8,16,51,22,i;int *p=a;for(i=0;i4;i+) cout*(p+i*2)endl;程序运行的结果是:12 33 8 512 #include int fun() static int d2=0,d1=1;int t=d2+d1;d1=d2; d2=t;retu

7、rn d2;void main()for(int i=0;i6;i+) coutfun()“ ”;coutendl;程序运行的结果是:1 1 2 3 5 8 3 #include class Apublic:A() a=b=10; A(int i,int j) a=i; b=j; void operator+=(const A &x) a+=x.a; b+=x.b; void print();private:int a,b;void A:print() couta= a,b= bendl; void main()A m,n(15,18); m.print(); n.print();m+=n;m

8、.print(); n.print();程序运行的结果是:a=10, b=10a=15,b=18a=25,b=28a=15,b=184 #include void main()int x=3,y=3;switch(x%2) case 1: switch (y%x)case 0:coutfirstn;case 1:coutsecondn;break; default: couthellown;case 2:coutthirdn; 程序运行的结果是:firstsecond third5 #include #include void fun(char *str)char t;int i,j;for(

9、i=1;i=0&tstrj;j-)strj+1=strj;strj+1=t;void main()char s=CFBEAD;fun(s);coutsendl;程序运行的结果是:ABCDEF 6 .#include class pointprivate:int x,y;public:point(int x1=0,int y1=0)x=x1;y=y1;virtual void move(int x1,int y1)x+=x1;y+=y1;virtual void disp()cout点:(x,y); ;class line:public pointprivate:int xx,yy;public

10、:line(int x1,int y1,int x2,int y2):point(x1,y1)xx=x2;yy=y2;void move(int x1,int y1)point:move(x1,y1);xx+=x1;yy+=y1;void disp()point:disp ();cout-点:(xx,yymove (4,4);p.disp ();coutdisp ();coutendl;结果:点:(5,7) 点:(6,8)-点:(10,12) Press any key to continue三程序填空(每空2分,共32分):1. 设一个数列的第1、2项分别为0和1,以后每个奇数编号的项是前两

11、项之和,偶数编号项是前两项之差的绝对值。下面程序的功能是生成该数列的前20项并存入一个数组x,然后将这20个数存入文本文件data.txt。 #include #include void main() int x20,i;x0=0;x1=1i=2;doxi= ; /xi-1+xi-2xi+1=abs(xi-1-xi);i= ; /i+2while( ); /i19;if(!fout) return;for( ;i20 ; j+) /i=0foutxi“ ”;fout.close();2以下程序实现将任意正整数转换成相应字符串。例如,将1234转换为“1234”。 #include class

12、Cstack /定义字符栈 char s80;int top; /栈顶指示器 public:Cstack() top=-1 ; /把栈置为空 void push(char ch) /将ch入栈 if(top=79) return;s+top= ch ; char pop() /出栈并返回栈顶元素值(栈空时返回0) if(top=-1)return 0;return ; /stop-;void itos(int num, char *str) /将num转换为字符串并存入strCstack s1;while(num!=0)s1.push( ); / 0+num%10num/=10;char ch

13、;for(int i=0;(ch=s1.pop()!=0;i+) ; /stri=chstri=0;void main() char s80; itos(1234,s); coutsendl; 3以下函数的功能是删除字符串最前面和最后面的所有空格。 #include void DelSpace(char *s)for(int i=strlen(s)-1;i=0;i-) if(si!= ) break; /删除后面的空格 s =0; /i+1char *p=s;while(*s!=0 ) s+; /&*s= /删除前面的空格 strcpy( ); /p,s4以下程序输出数组a中重复出现最多的那个

14、数以及该数重复出现的次数和首次出现的位置。 #include void main()int i,j,k,t, ,n(0); /M=20int a20=1,2,3,4,5,6,7,8,4,5,4,5,4,6,7,1,2,3,4,5;for(i=0;iM-1;i+)for( k=1;j=i+1 ;jM;j+) if( ) k+; /ai=ajif(nk) ;t=i; /n=kcout重复最多的数是:at 重复次数:n 首次位置:tnext , *q;while( ) p = p - next; /p!=NULL&p-data!=xif( p=NULL)q= ; /new Nodeq-data=x;

15、= head-next; /q-nexthead-next=q;else coutx已存在!n; 四简答题(12分) 1 假设S和X分别表示进栈和出栈操作,由输入序列“ABC”得到输出序列“BCA”的操作序列为SSXSXX,则由“a*b+c/d”得到“ab*cd/+”的操作序列什么?(4分)。SXSSXXSSXSSXX2 已知一个散列表如下图所示:5164292035380123456789101112其散列函数为h(key)=key%13,处理冲突的方法为现行地址序列探查法。请回答下列问题:(1)将关键字35,20,33,38,51,64存入哈希表。(3分) (2)对表中关键字29和64进行

16、查找时,所需进行的比较次数各为多少?(1分) 29 1次 , 64 3次 3 以下是两个重载函数的原型声明:void overload(int a,int b,double c=5.5);void overload(int x,int y);请问此函数重载正确吗?如果不正确请说明原因。(4分) 不正确,因为第一个函数的第三个参数有缺省值,调用时也可以给两个实参;而第2个函数与第1个函数形成重载,调用时也需要2个参数,此时,将会产生二义性,系统无法判断应该调用哪一个函数。 五编写程序。(12分) 编写函数用辗转相除法求整数a和b的最大公约数。算法为:将较大的数放在变量a中,较小的数放在b中。然后求a除以b的余数r。如果r为0,则除数b即为最大公约数;否则,将b存入a,将r存入b,反复求a和b的余数,直到余数为0。 在主函数中从键盘输入两个整数,调用上述函数求出它们的最大公约数并输出。

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

当前位置:首页 > 办公、行业 > 商业、管理、HR类
版权提示 | 免责声明

1,本文((完整版)C++期末考试样卷及答案.doc)为本站会员(2023DOC)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|