您好,欢迎来到微智科技网。
搜索
您的当前位置:首页2011春江苏省计算机二级VC真题与答案

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.设有说明语句:int a=1,b=2;float x=3,y:4:以下赋值中存在语法错误的是___(22)___ A. a=++x; B. y=++b; C. b++=x++; D. b+=x++ + y++ 23.设有说明语句:char ss[]={“I am a student.”};static float x[20]; 下列选项中,存在语法错误的是___(23)___

A.cout<>ss; C.cout<>x;

24.设有说明语句:float f(int &a,int b):int x,y;以下对函数f的调用语句中,正确的是(24) A.f(x,y) ; B.f(&x,y); C.f(15,20); D.f(*x,y);

25.设有说明:int a=1O,b=15,c;执行语句:c=a ||(a+=b)||(++b);则a、b、c的值分别为___(25)___ A.10,15,1 B.25,16,1 C.10,15,10 D.25,15,1 26.下列关于函数重载的描述中,不正确的是___(26)___ 。 A.两个或两个以上的函数取相同的函数名,但形参的个数不同

B.两个或两个以上的函数取相同的函数名,各函数的返回值的类型必须不同 C.两个或两个以上的函数取相同的函数名,形参的个数相同但类型不同 D.两个或两个以上的函数取相同的函数名,形参的个数不同或类型不同 27.在C++的集成环境中,系统约定c++源程序文件缺省的扩展名为___(27)___ A.vc B.c++ C.vc++ D.cpp

28.用友元函数进行双目运算符重载时, 该友元函数的参数表中应定义___(28)___个参数 A.O B. 1 C.2 D.3

29.以下有关抽象类的叙述中,正确的是___(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分)

#include t int a=1O; void fun(void) {

int a=15; ::a-=--a;

cout<<::a<<’\’<void main(void) {

int a=15;

for(int i=-10;i执行程序后输出的第一行是___(6)___,第二行是___(7)___。 6.[程序](2分)

#include void main(void) {

int i=1,j=1; for(:j<10;j++){ if(j>5){i+=2;break;} if(j%2!=0){ j+=2; continue; }

cout<cout<执行程序后输出的第一行是___(8)___ ,第二行是___(9)___ . 7.[程序](2分)

#include int f(int &x,int &y) { x+=y;

y+=x;

return(x>y?x:y); }

void main(void) {

int x=20,y=30,z; z=f(x,y):

cout<z=f(y,x):

cout<执行程序后输出的第一行是___(10)___,第二行是___(11)___. 8.[程序](2分) #include int f1(int n) {

if(n==1)return 1; else return n*n+f1(n-1); }

int f2(int n) {

int mul=1; if(n==1) mul=1; else mul= n*f2(n-1); return mul; }

void main(void) {

cout<执行程序后输出的第一行是___(12)___,第二行是___(13)___ 9.[程序](3分) #include char *str(char *p1,char*p2) {

char *p=p1; while(*p)p++; *p++=’’;

while(*p++=*p2++); *p++=’’; return p1; }

void main(void) {

char s1[200]={“NanJin”}; char s2[200]={“is”}; char s3[]={“good”}; cout<cout<执行程序后输出的第一行是___(14)___ ,第二行是___(15)____,第三行是___(16)___

1O.[程序](2分) #include class A{ int x,y; public:

A(int a,int b){x=a;y=b;}

virtual void funl(){cout<<“x+y=“<class B:public A{ int m,n; public:

B(int a,int b,int c,int d) :A(c,d){m=a ;n=b ;} void fun1(){cout<<“m*n= ”<void print(A &ra){ra.fun1();} void main(void) {

A a(10,20),*pa; B *p;

p=new B(20,30,40,50); p->fun1();

pa=&a; pa->fun1(); pa=p; pa->fun1(); print(a); delete p; }

执行程序后输出的第二行是___(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分)

#include #define N 100

int check(int x[],int y[],int n,int i,int m) //x存放车站序号,y存放依次检查的车站 {//n总车站数,i开始检查的车站号,m要间隔的车站数 int k=O,k1,count=0; //k记录已检查车站的个数 x[O]=n; //初始化数组x,x[0]记录最后一个车站号 for(int j=1;jx[i]=-1: //当“i]为一1时,表示该车站已检查 j=i;

while( ___(19)___){

k1=O; //用k1累加间隔车站个数 while(k1=n){ . count++; j=___(20)___; }

if(x[j]!=-1)k1++; }

y[k++]= ___(21)___; x[j]=-1; }

return count; }

void main(void) {

int A[N],B[N],n,m,i,j,k=O,k1,num;//A记录车站序号,B记录检查顺序 cout<<”输入车站个数n,第一个开始检查的车站号i,间隔的车站数m:”; cin>>n>>i>>m; num=___(22)___ ;

cout<<“检查顺序:”<“; cout<cout<<“全部检查完各个车站,共要循环的圈数为:”<12.以下程序的功能是:求满足以下条件的所有三位数:(1)该三位数是某一个二位数的平方:(2)该三位数的个位数、十位数和百位数各不相同,即l到9这九个数字在该数中至多只允许出现一次.要求每行输出五个数。例如,满足以上条件的所有三位数有13个,分别为: 169 196 256 2 324 361 529 576 625 729 784 841 961 [程序](4分)

#include

int f(int y) //y若满足条件,返回1:否则返回O {

int i,j,k;

i=y%10; //求个位数 j=___(23)___ ; //求十位数 k=y/100;

if( ___(24)___) //判是否有相同的数字

return 0;

for(i=11:i<=31:i++) //因32.32=1024,已超过三位数 if(___(25)___) return 1; return 0; }

void main(void) {

int x[22]={0},count=O; for(int i=102:i<987;i++){ if(f(i)){ ___(26)___ ; count++; } }

for(i=0;icout<<’\n’<<“共有:”<13.在以下程序中,函数create()根据键盘依次输入的整数建立一条单向无序链表,链表上的每一个结点包含一个整数;函数sort()根据链表结点的数据按从小到大的顺序将链表调整为一条有序链表;函数print()将链表上的整数依次输出;函数del()将链表删除。

排序算法提示:(1)初始时,使P指向链表的首结点,(2)从P之后的所有结点中找出data值最小的结点。(3)让p1指向该结点,并将P指向结点的data值与pl指向结点的data值进行交换,让P指向下一个结点,(4)重复步骤(2)和(3),直至P指向链表的最后一个结点为止· [程序](4分)

#include struct Node{ int data; Node *next; };

Node *sort(Node *head) {

Node *p=head,*p1,*p2; if(p==NULL)return head; while(p->next!=NULL){ p1=p;

__________(27)___________; while(p2!=NULL){

if(p2->datadata) ___(28)___; p2=p2->next; }

if(p!=p1){

int t; t=p->data; p->data=p1->data; p1->data=t; }

p=p->next; }

return head; }

Node *creat(void) {

Node *h=NULL,*p,*p1; int data=1; while(data){

cout<<“输入一个整数,0表示输入结束:”; cin>>data; if(data){ p=new Node: p->data=data; p->next=NULL; if(h==NULL) h=p1=p; else{

___(29)___; p1=p; } } } return h; }

void print(Node *p) {

while(p){

cout<data<<’\t’; p=p->next; }

cout<<’\n’; }

void del(Node *h) {

Node *p; while(h){ p=h; ___(30)___

delete p; ) }

void main(void) (

Node *head; head=creat();

cout<<“链表上的数据为:”; print(head); head=sort(head);

cout<<“排序后链表上的数据为:”; print(head); del(head); cout<

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务