《天津大学c++期末考试样卷及答案》由会员分享,可在线阅读,更多相关《天津大学c++期末考试样卷及答案(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中重复出现最多的那个数以及该数重复出现的次数和首次出现的位置。