VC++程序设计模拟试题1.docx
《VC++程序设计模拟试题1.docx》由会员分享,可在线阅读,更多相关《VC++程序设计模拟试题1.docx(16页珍藏版)》请在冰豆网上搜索。
![VC++程序设计模拟试题1.docx](https://file1.bdocx.com/fileroot1/2023-7/10/1f38db8c-fea0-4141-823e-ddcff8c366f9/1f38db8c-fea0-4141-823e-ddcff8c366f91.gif)
VC++程序设计模拟试题1
VC++程序设计
一、选择题:
(1题1分)
1.以下选项中,哪一个是合法的字符常量
A."N" B.'\010'C.AD.65
2.表达式"(a=3*2,b=a/2),b-a,a+=2"的值是
A.-3B.6C.8D.12
3.有以下的程序段,其输出结果是
intx,y,z;
x=y=z=0;
x=++x||++y&&++z;
cout<A.1,1,1B.1,1,0C.1,0,0D.0,0,0
4.以下程序的执行结果是
#include
classOBJ
{intn;
public:
OBJ(inti=0){n=i;}
operator++(){n++;}
voidShow(){cout<};
voidmain()
{OBJobj(3);
++obj;
obj.Show();
}
A.3B.4C.0D.1
5.设有以下程序段:
inta[5]={0},*p,*q;
p=a;
q=a;
则下列选项中,合法的运算表达式是
A.p-qB.p+qC.p*qD.p%q
6.假设MyClass为一个类,则该类的拷贝的构造函数的声明语句为
A.MyClass&(MyClassx);B.MyClass(MyClassx);
C.MyClass(MyClass&x);D.MyClass(MyClass*x);
7.以下程序的执行结果是
#include
voidmain()
{chars[]="1234356";
S[3]='\0';
cout<
}
A.12B.123C.1234D.123456
8.下面关于纯虚函数与抽象类的描述中,错误的是:
A.纯虚函数是一种特殊的虚函数,它没有具体的体现
B.抽象类是指具有纯虚函数的类
C.一个基类中如果具有纯虚函数,该基类的派生类不能再是抽象类
D.抽象类只能作为基类来用,其纯虚函数的实现由派生类给出
9.以下程序段的输出结果是:
intx=5;
do{
x--;
}while(!
x);
cout<A.5B.4C.0D.-1
10.下列虚基类的声明中,正确的是
A.classvirtualB:
publicAB.virtualclassB:
publicA
C.classB:
publicAD.classB:
virtualpublicA
11.以下四组语句中不符合C++语法规则的是
A.chars[]="Nanjing";B.chars[20];s="Nanjing";
C.char*p="Nanjing";C.char*p;p="Nanjing";
12.类MyClass的定义如下:
classMyClass
{intvalue;
public:
MyClass(){value=0;}
SetVariable(inti){value=i};
};
则以下各项对下面语句的描述中,正确的是:
MyClass*p,my;p=&my;
A.语句"p=&my;"是把对象my赋值给指针变量p
B.语句"MyClass*p,my;"调用了两次构造函数
C.语句"*p.SetVariable(5);"是正确的调用形式
D.语句"p→SetVariable(5)"与语句"my.SetVariable(5)"是等价的
13.下面函数的功能是
intfun(char*x)
{char*y=x;
while(*y++);
return(y-x-1);
}
A.求字符串长度B.比较两个字符串的大小
C.将字符串x复制到字符串yD.将字符串x连接到字符串y后面
14.有如下程序段
int**p,*s,k=20;
s=&k;
p=&s;
请指出**p所代表的是
A.&sB.&kC.sD.k
15.有以下程序:
#include
#include
voidmain()
{chars[]="\n123\\";
cout<}
该程序执行后的结果是
A.赋初值的字符串有错B.4,6C.0,6D.5,6
16.若有定义:
int*p;
则下列各选项中,不同于表达式"*p=*p+1;"的是
A.*p++;B.++*p;C.*p+=1;D.++(*p);
17.定义如下枚举类型:
enumDay{Monday,Tuesday,Wednesday,Thursday,Friday=2};
则下列语句正确的是:
A.表达式Wednesday==Friday的值是1B.Dayday;day=3;
C.Dayday;day=Monday+3;D.Dayday;day=Tuesday+10;
18.以下程序的执行结果是
#include
voidmain()
{inta[9]={1,2,3,4,5,6,7,8,9},*p[3];
for(inti=0;i<3;i++)
p[i]=&a[i*3];
cout<
}
A.9B.6C.3D.2
19.下列程序段的输出结果是
#include
voidfun(int*x,int*y)
{cout<<*x<<*y;
*x=3;
*y=4;
}
voidmain()
{intx=1,y=2;
fun(&y,&x);
cout<}
A.2143B.1212C.1234D.2112
20.对于运算符>>,其重载函数是一个
A.用于输入的友元函数B.用于输入的成员函数
C.用于输出的友元函数D.用于输出的成员函数
二、基本概念填空题(1题2分)
1.在用class定义一个类时,数据成员和成员函数的默认权限是【1】。
2.常量'\t'的数据类型是【2】。
3.已有声明"floatx;doubley;inta;",表达式:
x+y/2+'a'-a的值的类型是【3】。
4.C++的编译预处理的功能分为三种:
宏定义、【4】和文件包含。
5.若已知a=2,b=0,则表达式a
b的值为【5】。
6.在VisualC++6.0系统中,常数50存储在内存中,它占用【6】个字节。
7.C++语言的基本控制结构为顺序结构、【7】和循环结构。
8.在C++中,将多态性分为静态多态性和动态多态性两种。
函数重载属于【8】多态性。
9.变量按其作用域分全局变量和局部变量两种。
形式参数是【9】。
10.C++程序是从【10】函数开始执行的。
三、阅读程序(1题3分)
注:
以下程序开始均有语句:
#include
1.#defineMIN(x,y)(x)<(y)?
(x):
(y)
voidmain()
{inti,j,k;
i=10;j=15;
k=10*MIN(i,j);
cout<}
2.intf(void)
{inta=10,b=0;
staticintc=1;
a+=b;b+=c;
returnc=a+b;
}
voidmain(void)
{cout<cout<}
3.#defineN5
intfun(char*s,chara,intn)
{intj;
*s=a;j=n;
while(a
j--;
returnj;
}
voidmain()
{chars[N+1];
intk;
for(k=0;k<=N;k++)
s[k]='A'+k+1;
cout<}
4.intf(intn)
{if(n==1)
return1;
else
returnf(n-1)+1;
}
voidmain()
{for(inti=1,j=0;i<3;i++)
j=j+f(i);
cout<}
5.voidmain()
{intx=1,y=3;
x++;
{intx=0;
x+=y*2;
cout<}
cout<}
6.intx;
voidfunA(int&a,intb)
{intfirst;
first=a+b;
a=2*b;
b=first+4;
}
voidfunB(intu,int&v)
{intsecond;
second=x;
v=second+4;
x=u+v;
}
voidmain()
{intfirst=0;
intsecond=5;
x=6;
funA(first,second);
funB(first,second);
cout<}
7.voidmain()
{char*str=''12123434'';
intx1=0,x2=0,x3=0,x4=0,i;
for(i=0;str[i]!
='\0';i++)
switch(str[i])
{case'1':
x4++;
case'2':
x3++;
case'3':
x2++;
case'4':
x1++;
}
cout<}
8.classA
{
public:
A(){cout<<''CLASSA''<~A(){}
};
classB:
publicA
{
public:
B(){cout<<''CLASSB''<~B(){}
};
voidmain()
{A*p;
p=newA;
B*q;
q=newB;
}
9.classBase
{
public:
virtualvoidwho(){cout<<''classBase''<};
classDerived1:
publicBase
{
public:
voidwho(){cout<<''classDerived1''<};
classDerived2:
publicBase
{
public:
voidwho(){cout<<''classDerived2''<}:
voidmain()
{Base*p;
Derived1obj1;
obj1.who();
Derived2obj2;
p=&obj2;
p→who();
}
10.classMyClass
{intm;
public:
staticintn;
MyClass(){m=0;}
voidsetvalue(){m++;n++;}
voidoutput(){cout<<''m=''<};
intMyClass:
:
n=2;
voidmain()
{MyClassobj1,obj2;
obj1.setvalue();
obj1.output();
obj2.setvalue();
obj2.output();
};
四、完善程序(1空2分)
1.将下面语句段(b)补充完整,使其和语句段(a)在功能上完全一样
(a)doubles=1.0;
for(intk=1;k<=10;k++)
s+=1.0/(k*(k+1));
(b)doubles=0.0;
【1】;
intk=0;
do{s+=d;
k++;
d=1.0/(k*(k+1));
}while(【2】);
2.如果一个两位整数是质数,将组成它的两个数字交换位置后形成的整数仍然是质数,则称这样的数为绝对质数。
例如,13就是一个绝对质数。
以下的程序用于找出所有两位绝对质数。
注:
质数,又称素数,指只能被自身和1整除的整数,如11,13,17等。
#include
intprime(intn)//判断整数n是否为质数,若是返回1,否则返回0
{for(inti=2;iif(【3】)
return0;
return1;
}
voidmain()
{intm[2];
for(inti=10;i<100;i++)
{m[0]=i;
m[1]=【4】;
if(prime(【5】)&&prime(m[1]))
cout<
}
}
3.以下程序通过调用函数scat()将两个字符串连接起来,程序输出是Nanjing,China。
请填空。
#include
voidscat(char*p,char*q)
{while(*p++)
p=p-1;
while(*q)
{【6】;}
*p=0;
}
voidmain()
{charstr[20]=''Nanjing,'';
char*s=''China'';
【7】;
cout<}
4.设已建立了一条链表,链表上结点的数据结构是:
structnode{
floatEnglish,Math;//表示英语和数学成绩
node*next;
};
以下函数ave()的功能是求出该链表上的结点个数、英语和数学的总成绩,并在链首增加一个新结点,其分量English和Math分别存放这两门课的平均成绩。
若链表为空链表时,直接返回空指针。
请填空。
node*ave(node*head,int&count)//head是链首地址,count存放求出的结点个数
{node*p1;
floatsume=0;summ=0;
count=0;
if(head==NULL)//空链表
returnNULL;
p1=head;
while(p1)
{sume+=p1→English;
summ+=p1→Math;
count=count+1;
【8】;
}
p1=newnode;
p1→English=sume/count;
p1→Math=【9】;
【10】;
head=p1;
returnhead;
}
五、编程题(10分)
建立一个数组类ARR,求一个整型数组中正数和负数的个数,具体要求如下:
(1)私有数据成员:
intn:
数组实际元素个数
inta[100]:
存放数组元素
intpos:
存放整型数组中正数的个数
intneg:
存放整型数组中负数的个数
(2)公有成员函数:
ARR(intx[],intsize):
构造函数,用参数size初始化n,用x数组初始化a数组,将pos和neg初始化为0。
voidNum():
求整型数组中正数和负数的个数。
voidShow():
将数组以每行5个数的形式输出到屏幕上,同时输出数组中正数和负数的个数。
(3)在主函数中完成对该类的测试,定义一个整型数组b[]={3,-4,6,-8,10,-34,2,
80,-100},定义一个ARR类的对象,用b数组及其元素个数初始化该对象,统计数组中正数和负数的个数并输出程序的运行结果。
程序的运行结果应为:
3-46-810
-34280-100
pos=5neg=4