收藏 分销(赏)

2023年秋江苏省等级考试C++试卷附答案.docx

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

1、2023年秋江苏省等级考试C+试卷(笔试题,共60分)第一部分部分 计算机信息基础 (20道选择题,共20分,略)第二部分 C+语言程序设计(共430分)一、 选择题(用答题卡答题,答案依次填在2130答题号内)21. 以下不符合C+语法规则的数值常量是 d 。A034 B2.1E3C0Xab23 D2E1.422. 表达式:3.6-5/2+1.2+5%2的值是 c 。A4.3B4.8C3.8D3.323. 下列关于虚函数的叙述中,对的的是 c 。A. 虚函数可以是一个static类型的成员函数B. 基类中用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明

2、C. 派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型D. 虚函数可以是非成员函数24. 下列关于缺省构造函数的叙述中,不对的的是 a 。 A每个类至少有一个缺省构造函数B缺省构造函数没有参数或每一个参数都有缺省值C缺省构造函数是唯一的D每个类至少有两个构造函数25. 在循环体中,使用break和continue语句的作用分别是 d 。A两语句都结束该层循环B前者结束该层的本次循环,后者结束该层循环C两语句都结束该层 的本次循环D前者结束该层循环,后者结束该层的本次循环26. 以下叙述中,不对的的是 d 。A派生类可以继承多个基类B可以有多个派生类继承同一个基类C派生类可以有多

3、个虚基类D抽象类必须是虚基类27. 设由类的成员函数和友元函数分别实现相同的运算符重载功能,以下叙述中对的的是 b 。A两种函数的参数个数相同B友元函数比成员函数多一个参数C成员函数比友元函数多一个参数D两种函数都带有this指针28. 以下对函数重载的叙述中,对的的是 c 。A函数名不同,但函数实现的功能相同B函数名相同,函数的参数个数相同但参数的类型不同C函数名相同,但函数的参数个数不同或参数的类型不同D函数名相同,但函数的参数类型不同或函数的返回值的类型不同29. 以下关于类成员的叙述中, 不对的的是 a 。A类的析构函数可以重载B类的构造函数可以重载C类中的成员都有明确的访问权限D可将

4、成员函数定义为静态的30. 以下的叙述中, 不对的的是 c 。A在不同函数中可以使用相同名字的变量B函数的形式参数是局部变量C在函数内的复合语句中定义的变量在本函数范围内有效D在函数内定义的变量只在本函数范围内有效二、 填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)基本概念题,共5分1. 在C+中,函数的参数传递方式有三种:第一种是值传递,第二种是 指针传递 ,第三种是 引用传递 。2. 符号“&”作为单目运算符时的功能是取地址;作为双目运算符时,其功能是 按位与 。3. 设有以下语句:#define S(x) x*xint k=3,y;y= S(k+k);执行赋值语句:“y=

5、 S(k+k);”,则y的值为 15 。4. 假如派生类没有重载基类的纯虚函数时,则该派生类也是 抽象 类。阅读程序题,共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;

6、执行程序,输出的第一行是 131 ,第二行是 161 。7. 程序 (3分)#include int fact(int 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(

7、aa,4) endl;coutfact(aa3)endl;exchange (aa, 4); for (int i=0; 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; cout

8、B: y=yendl; void print( )A:print( );a.print( );couty=yendl;void main(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

9、 & ch=z)stcktop=ch; top+;virtual char pop( )if(top=0;i-)coutstcki;coutendl;class 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; i

10、top;i+) coutstcki;coutpush(*ptr+);ptr=str2; p=&s2;while(*ptr) p-push(*ptr+);s1.print( ); s2.print( );while(ch=p-pop( ) coutch;coutendl;执行程序,输出的第一行是 cba ,第二行是 5678 ,第三行是 8765 。完善程序题,共12分10. 以下函数sortdel(char *s)的功能是:一方面将s所指向的字符串中的字符按照字符ASII码值的大小按升序排序,然后在排序后的字符串中删除反复的字符。在主函数中输入一个字符串,调用函数sortdel( ),输出排序

11、后的字符串。 程序 (4分)#include void sortdel(char *s) char *p,*q,*r,c;for(p=s; *p; p+) / 选择法排序 for(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);c

12、outstrendl;sortdel(str);coutstr”完毕数组的输入;成员函数add( )实现将一个实数加入线性表。 程序 (4分)#include class Listpublic: List(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

13、+1;for(int i=0;isize;i+)list1i=listi;delete list; list=list 1 ;size+;listnum=x;num+;private:int size,num;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 (ist

14、ream& is, List& v) for(int i=0;iv.size;i+) coutiv.listi ; v.num=v.size; return is ;void main(void) List a(10),b(14);coutb; b.print( );a=b;a.add(37.25);a.print( );12. 以下程序的功能是:先创建两条带有空头结点(链表的第一个结点不存储数据,只是为了方便解决)的有序单向链表(结点元素值按升序排列),假设每条链表中的元素均不相同。然后将两条具有相同顺序的单链表归并成一条有序单链表,并且规定相同元素只归并一次。函数Create( )运用给定

15、的参数数组(数组中元素不规定有序)创建一条具有空头结点的有序单链表,函数Merge( )把两条有序链表归并成一条有序链表,原先的两条链表保持不变。程序 (4分)#include struct Node int data;Node *next;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

16、=NULL;if (L=NULL | aidata) /若链表为空或ai小于第一个结点的值t-next=L;head-next=t; L=t ; else q=L; p=q-next;while (p!=NULL & aip-data) /找出新结点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 No

17、de;if (p-datadata) s-data=p-data; p=p-next;else if (p-dataq-data) s-data=q-data ; q=q-next;else s-data=p-data; p=p-next ; q=q-next;t-next=s; 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-next

展开阅读全文
相似文档                                   自信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 

客服