您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 2011春江苏省计算机二级VC真题与答案
2011春江苏省计算机二级VC++试题第二部分C++语言程序设计选择题(用答题卡答题,答案依次填在2l”30答题号内)21.下列关于switch语句的描述中,不正确的是___(21)___。A.switch语句中的default子句可以没有,也可以有一个B.switch语句中的每一个case子句中必须有一个break语句C.switch语句中的default子句可放在switch语句中的任何位置D.switch语句中的case子句后面的表达式只能是整型、字符或枚举类型常量22.设有说明语句:inta=1,b=2;floatx=3,y:4:以下赋值中存在语法错误的是___(22)___A.a=++x;B.y=++b;C.b++=x++;D.b+=x+++y++23.设有说明语句:charss[]={“Iamastudent.”};staticfloatx[20];下列选项中,存在语法错误的是___(23)___A.coutss;B.cinss;C.coutx;D.cinx;24.设有说明语句:floatf(int&a,intb):intx,y;以下对函数f的调用语句中,正确的是(24)A.f(x,y);B.f(&x,y);C.f(15,20);D.f(*x,y);25.设有说明:inta=1O,b=15,c;执行语句:c=a||(a+=b)||(++b);则a、b、c的值分别为___(25)___A.10,15,1B.25,16,1C.10,15,10D.25,15,126.下列关于函数重载的描述中,不正确的是___(26)___。A.两个或两个以上的函数取相同的函数名,但形参的个数不同B.两个或两个以上的函数取相同的函数名,各函数的返回值的类型必须不同C.两个或两个以上的函数取相同的函数名,形参的个数相同但类型不同D.两个或两个以上的函数取相同的函数名,形参的个数不同或类型不同27.在C++的集成环境中,系统约定c++源程序文件缺省的扩展名为___(27)___A.vcB.c++C.vc++D.cpp28.用友元函数进行双目运算符重载时,该友元函数的参数表中应定义___(28)___个参数A.OB.1C.2D.329.以下有关抽象类的叙述中,正确的是___(29)___A.抽象类不能含有纯虚函数B.可以定义抽象类的对象C.在抽象类中至少含有一个没有函数体的虚函数D.抽象类不能作为基类派生出新的类30.以下有关this指针的叙述中,不正确的是___(30)___A.当调用对象的非静态成员时,总存在一个this指针B.非静态成员函数调用类中的成员时,可直接使用this指针C.this指针隐含地指向要用到的当前对象D.静态成员函数也存在this指针二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)●基本概念题,共5分1.成员函数实现双目运算符重载时,该运算符的左操作数是___(1)___,其右操作数是___(2)___。2.在C++中,类的继承方式有三种:保护继承,私有继承和___(3)___。3.在定义全局变量和静态变量时,若没有设置其初值,则这两种变量的初值为___(4)___。4.在c++中,标识符是以___(5)___或下划线开头的,由字母、数字和下划线组成的字符序列.●阅读程序题,共13分5.[程序](2分)#includeiostream.htinta=1O;voidfun(void){inta=15;::a-=--a;cout::a’\t’a’\n’;}voidmain(void){inta=15;for(inti=-10;ia+::a;i++)fun();}执行程序后输出的第一行是___(6)___,第二行是___(7)___。6.[程序](2分)#includeiostream.hvoidmain(void){inti=1,j=1;for(:j10;j++){if(j5){i+=2;break;}if(j%2!=0){j+=2;continue;}couti’\t’j’\n’;}couti’\t’j’\n’;}执行程序后输出的第一行是___(8)___,第二行是___(9)___.7.[程序](2分)#includeiostream.hintf(int&x,int&y){x+=y;y+=x;return(xy?x:y);}voidmain(void){intx=20,y=30,z;z=f(x,y):coutx’\t’y’\t’zendl;z=f(y,x):coutx’\t’y’\t’zendl;}执行程序后输出的第一行是___(10)___,第二行是___(11)___.8.[程序](2分)#includeiostream.hintf1(intn){if(n==1)return1;elsereturnn*n+f1(n-1);}intf2(intn){intmul=1;if(n==1)mul=1;elsemul=n*f2(n-1);returnmul;}voidmain(void){coutf1(3)endl;coutf2(4)endl;}执行程序后输出的第一行是___(12)___,第二行是___(13)___9.[程序](3分)#includeiostream.hchar*str(char*p1,char*p2){char*p=p1;while(*p)p++;*p++=’’;while(*p++=*p2++);*p++=’’;returnp1;}voidmain(void){chars1[200]={“NanJin”};chars2[200]={“is”};chars3[]={“good”};coutstr(s2,s3)’\n’;coutstr(s1,s2)’\n’;couts1’!’s2’!’s3’\n’;执行程序后输出的第一行是___(14)___,第二行是___(15)____,第三行是___(16)___1O.[程序](2分)#includeiostream.hclassA{intx,y;public:A(inta,intb){x=a;y=b;}virtualvoidfunl(){cout“x+y=“x+y“\n”;}};classB:publicA{intm,n;public:B(inta,intb,intc,intd):A(c,d){m=a;n=b;}voidfun1(){cout“m*n=”m*n”\n”;}};voidprint(A&ra){ra.fun1();}voidmain(void){Aa(10,20),*pa;B*p;p=newB(20,30,40,50);p-fun1();pa=&a;pa-fun1();pa=p;pa-fun1();print(a);deletep;}执行程序后输出的第二行是___(17)____,第三行是___(18)___完善程序题,共12分11.设有一条环形铁路,共有n个车站,现有检查组去检查每个车站的服务质量,从第i个车站开始检查,每隔m(已检查过的车站不计算在内)个车站作为下一个要检查的车站,直到所有车站都检查完为止。下面的程序功能是:按以上要求计算出依次检查的车站序号,并输出计算的序号序列和检查循环的圈数。例如,假设共有20个车站,车站的序号依次为:1,2,3,…,19,20;要求从第3个车站开始检查,间隔5个车站,则检查车站的顺序为:3-8-13-18-4-10-16-2-11-19-7-17-9-1-15-14-20-6-12-5函数check()中的count记录检查完所有车站时要绕环形铁路的圈数。[程序](4分)#includeiostream.h#defineN100intcheck(intx[],inty[],intn,inti,intm)//x存放车站序号,y存放依次检查的车站{//n总车站数,i开始检查的车站号,m要间隔的车站数intk=O,k1,count=0;//k记录已检查车站的个数x[O]=n;//初始化数组x,x[0]记录最后一个车站号for(intj=1;jn;j++)x[j]=j;y[k++]=i://i为第一个检查的车站x[i]=-1://当“i]为一1时,表示该车站已检查j=i;while(___(19)___){k1=O;//用k1累加间隔车站个数while(k1m){j++;if(j=n){.count++;j=___(20)___;}if(x[j]!=-1)k1++;}y[k++]=___(21)___;x[j]=-1;}returncount;}voidmain(void){intA[N],B[N],n,m,i,j,k=O,k1,num;//A记录车站序号,B记录检查顺序cout”输入车站个数n,第一个开始检查的车站号i,间隔的车站数m:”;cinnim;num=___(22)___;cout“检查顺序:”endl;//输出依次检查车站的序号for(j=O;jn-1;j++)coutB[j]“一“;coutB[j]endl:cout“全部检查完各个车站,共要循环的圈数为:”numendl;}12.以下程序的功能是:求满足以下条件的所有三位数:(1)该三位数是某一个二位数的平方:(2)该三位数的个位数、十位数和百位数各不相同,即l到9这九个数字在该数中至多只允许出现一次.要求每行输出五个数。例如,满足以上条件的所有三位数有13个,分别为:169196256289324361529576625729784841961[程序](4分)#includeiostream.hintf(inty)//y若满足条件,返回1:否则返回O{inti,j,k;i=y%10;//求个位数j=___(23)___;//求十位数k=y/100;if(___(24)___)//判是否有相同的数字return0;for(i=11:i=31:i++)//因32.32=1024,已超过三位数if(___(25)___)return1;return0;}voidmain(void){intx[22]={0},count=O;for(inti=102:i987;i++){if(f(i)){___(26)___;count++;}}for(i=0;icount;i++){coutx[i]’\t’;if((i+1)%5==0)cout’\n’;}cout’\n’“共有:”count“个三位数满足条件.\n”;}13.在以下程序中,函数create()根据键盘依次输入的整数建立一条单向无序链表,链表上的每一个结点包含一个整数;函数sort()根据链表结点的数据按从小到大的顺序将链表调整为一条有序链表;函数print()将链表上的整数依次输出;函数del()将链表删除。排序算法提示:(1)初始时,使P指向链表的首结点,(2)从P之后的所有结点中找出data值最小的结点。(3)让p1指向该结点,并将P指向结点的data值与pl指向结点的data值进行交换,让P指向下一个结点,(4)重复步骤(2)和(3),直至P指向链表的最后一个结点为止·[程序](4分)#includeiostream.hstructNode{intdata;Node*next;};Node*sort(Node*head){Node*p=head,*p1,*p2;if(p==NULL)returnhead;while(p-next!=NULL){p1=p;__________(27)___________;while(p2!=NULL){if(p2-datap1-data)___(28)
本文标题:2011春江苏省计算机二级VC真题与答案
链接地址:https://www.777doc.com/doc-3020406 .html