收藏 分销(赏)

2014年秋江苏省等级考试C++试卷(附答案).doc

上传人:二*** 文档编号:4515200 上传时间:2024-09-26 格式:DOC 页数:18 大小:64KB
下载 相关 举报
2014年秋江苏省等级考试C++试卷(附答案).doc_第1页
第1页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 . . . . . 2014年秋省等级考试C+试卷笔试题,共60分第一局部局部 计算机信息根底 20道选择题,共20分,略第二局部 C+语言程序设计共430分一、 选择题用答题卡答题,答案依次填在2130答题号21. 以下不符合C+语法规那么的数值常量是d。A034B2.1E3C0Xab23D2E1.422.表达式:3.6-5/2+1.2+5%2的值是c。A4.3B4.8C3.8D3.323.以下关于虚函数的表达中,正确的选项是c。A.虚函数可以是一个static类型的成员函数B.基类中用virtual说明一个虚函数后,派生类中定义一样原型的函数时可不必加virtual说明C. 派生类中的虚

2、函数与基类中一样原型的虚函数具有不同的参数个数或类型D.虚函数可以是非成员函数24.以下关于缺省构造函数的表达中,不正确的选项是a。 A每个类至少有一个缺省构造函数B缺省构造函数没有参数或每一个参数都有缺省值C缺省构造函数是唯一的D每个类至少有两个构造函数25.在循环体中,使用break和continue语句的作用分别是d。A两语句都完毕该层循环B前者完毕该层的本次循环,后者完毕该层循环C两语句都完毕该层的本次循环D前者完毕该层循环,后者完毕该层的本次循环26.以下表达中,不正确的选项是d。A派生类可以继承多个基类B可以有多个派生类继承同一个基类C派生类可以有多个虚基类D抽象类必须是虚基类27

3、.设由类的成员函数和友元函数分别实现一样的运算符重载功能,以下表达中正确的选项是b。A两种函数的参数个数一样B友元函数比成员函数多一个参数C成员函数比友元函数多一个参数D两种函数都带有this指针28. 以下对函数重载的表达中,正确的选项是c。A函数名不同,但函数实现的功能一样B函数名一样,函数的参数个数一样但参数的类型不同C函数名一样,但函数的参数个数不同或参数的类型不同D函数名一样,但函数的参数类型不同或函数的返回值的类型不同29. 以下关于类成员的表达中, 不正确的选项是a。A类的析构函数可以重载B类的构造函数可以重载C类中的成员都有明确的访问权限D可将成员函数定义为静态的30. 以下的

4、表达中,不正确的选项是c。A在不同函数中可以使用一样名字的变量B函数的形式参数是局部变量C在函数的复合语句中定义的变量在本函数围有效D在函数定义的变量只在本函数围有效二、 填空题请将答案填写在答题纸的相应答题号,每个答案只占一行根本概念题,共5分1. 在C+中,函数的参数传递方式有三种:第一种是值传递,第二种是指针传递,第三种是引用传递。2.符号“&作为单目运算符时的功能是取地址;作为双目运算符时,其功能是按位与。3.设有以下语句:#define S(x) x*xint k=3,y;y= S(k+k);执行赋值语句:“y= S(k+k);,那么y的值为15。4.如果派生类没有重载基类的纯虚函数

5、时,那么该派生类也是抽象类。阅读程序题,共13分5. 程序 2分#include void f1(void)int x=10;static int y=10;x+=y;y+=x;coutxtyendl;void main(void)f1( );f1 ( );f1 ( );执行程序,输出的第二行是40,第三行是70。6.程序 2分#include int x=100;void main(void)int x=30;x+=:x+; int x=60;:x+=x;cout+xn;cout:xn;执行程序,输出的第一行是131,第二行是161。7. 程序 3分#include int fact(int

6、 n)if (n1) return n*fact(n-1);return 1;int f (int a , int n)if (n=2) return f(a,n-1) + an-1 ;return a0 ;void exchange(int a, int n)int i, temp ;for (i=0; in/2; i+) temp=ai; ai=an-i-1; an-i-1=temp; void main(void) int aa5 = 1, 2, 3, 4;cout f(aa,4) endl;coutfact(aa3)endl;exchange (aa, 4); for (int i=0

7、; i4; i+) coutaait; coutendl;执行程序,输出的第一行是10,第二行是24,第三行是4 3 2 1 。8. 程序 3分#include class Aint x;public:A(int i) x=i; coutA: x=xendl; void print( ) coutx=x ; ;class B: public Aint y;A a;public:B(int i, int j): A(i+j), a(j+10)y=i*j; coutB: y=yendl; void print( )A:print( );a.print( );couty=yendl;void mai

8、n(void)B b(5,10);b.print( );执行程序,输出的第一行是A:x=15,第三行是B:y=50,第四行是x=15,x=20,y=50。9. 程序 3分#include const int SIZE=100;class Stackchar stckSIZE;int top;public:Stack( ) top=0; virtual void push(char ch)if (top= SIZE) return;if(a=ch & ch=z)stcktop=ch;top+;virtual char pop( )if(top=0;i-)coutstcki;coutendl;cl

9、ass Stack2: public Stackchar stckSIZE;int top;public:Stack2( ) top=0; void push(char ch)if (top= SIZE) return;if(0=ch & ch=9)stcktop=ch;top+;char pop( )if(top0) return NULL;top-;return stcktop;void print( ) for (int i=0; itop;i+)coutstcki;coutpush(*ptr+);ptr=str2; p=&s2;while(*ptr) p-push(*ptr+);s1.

10、print( ); s2.print( );while(ch=p-pop()coutch;coutendl;执行程序,输出的第一行是cba,第二行是5678,第三行是8765。完善程序题,共12分10. 以下函数sortdel(char *s)的功能是:首先将s所指向的字符串中的字符按照字符ASII码值的大小按升序排序,然后在排序后的字符串中删除重复的字符。在主函数中输入一个字符串,调用函数sortdel( ),输出排序后的字符串。 程序 4分#include void sortdel(char *s) char *p,*q,*r,c;for(p=s; *p; p+) / 选择法排序 for(

11、r=p,q=p+1; *q; q+)if(*r*q)r=q; if(r!=p) c=*r; *r=*p;*p=c; for(p=s; *p; p+) / 删除重复的字符r=p+1;while(*p=*r) r+;if(p != r ) for(q=p+1; *r; q+) *q=*r;r+;*q=0;void main(void) char str200;cin.getline(str,199);coutstrendl;sortdel(str);coutstr完成数组的输入;成员函数add( )实现将一个实数参加线性表。 程序 4分#include class Listpublic: List

12、(int=1); List( ) delete list; List& operator =(const List&);void print( )for(int i=0;inum;i+)coutlisti,;if(i+1)%5=0)cout(istream&, List&);void add(double x)if( num=size)double *list1= new doublesize+1;for(int i=0;isize;i+)list1i=listi;delete list;list=list 1;size+;listnum=x;num+;private:int size,num

13、;double *list;List:List(int sz) size=sz;list= new doublesize ; num=0;List& List:operator =(const List& v) if(&v!=this) delete list;size=v.size;list=new doublev.size或doublesize;for(int i=0;i(istream& is, List& v) for(int i=0;iv.size;i+) coutiv.listi ; v.num=v.size;return is;void main(void) List a(10)

14、,b(14);coutb; b.print( );a=b;a.add(37.25);a.print( );12. 以下程序的功能是:先创建两条带有空头结点链表的第一个结点不存储数据,只是为了方便处理的有序单向链表结点元素值按升序排列,假设每条链表中的元素均不一样。然后将两条具有一样次序的单链表归并成一条有序单链表,并且规定一样元素只归并一次。函数Create( )利用给定的参数数组数组中元素不要求有序创建一条具有空头结点的有序单链表,函数Merge( )把两条有序链表归并成一条有序链表,原先的两条链表保持不变。程序 4分#include struct Node int data;Node *n

15、ext;void Create(Node *&head,int *a,int n)/根据数组a中n个数据产生一条有序链表Node *L, *t, *p, *q;/p指向待处理结点,q指向p的前驱结点head=new Node;L=head-next=NULL; /L总是指向第一个结点(头结点的下一个结点)for (int i=0;idata=ai; t-next=NULL;if (L=NULL | aidata)/假设链表为空或ai小于第一个结点的值t-next=L;head-next=t;L=t;elseq=L;p=q-next;while (p!=NULL & aip-data)/找出新结

16、点t的插入点q=p;p=p-next;t-next=p;q-next=t;void Print(Node *h)h=h-next;while (h!=NULL) coutdatanext;coutnext=NULL;t=head;p=h1-next;q=h2-next;while (p!=NULL & q!=NULL)s=new Node;if (p-datadata)s-data=p-data;p=p-next;else if (p-dataq-data)s-data=q-data;q=q-next;elses-data=p-data;p=p-next; q=q-next;t-next=s;

17、t=s;if (q!=NULL) p=q;while (p!=NULL)s=new Node;s-data=p-data;p=p-next;t-next=s;t=s;t-next=NULL;return head;void main(void) int a=12,1,8,2,5,11,3,6,9,7,10,16,4;int b=0,12,8,2,5,18,13,16,9,17,3,6;int m=sizeof(a)/sizeof(int), n=sizeof(b)/sizeof(int);Node *h1,*h2,*h3;Create(h1,a,m);Create(h2,b,n);cout有序表h1为:; Print(h1);cout有序表h2为:; Print(h2);h3=Merge(h1,h2);cout26. return is27. L=t28. p=p-next29. s-data=q-data30. p=p-next21 / 18

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服