第一部分:计算机信息基础
第二部分Visual C++程序设计 ’
一、选择题(用答题卡答题,答案依次填在答题号内)
21•下列关于switch语句的描述中正确的是(21) 。
A•switch语句中的default子句可以没有,也可以有多个
B•switch语句中的每个子句中必须有break语句
c•switch语句中的default子句只能放在最后
D.switch语句中的case子句后面的表达式只能是整型表达式
22•下列函数原型说明中,错误的是 (22) 。
A•int &fl(); B.int f2(double =5);
C•void f3(void (*p)()); D.int f4(int a=O,int b);
23.设有说明语句;
float y=5.16347;int x;
则以下表达式中,可以实现将y中的数值保留小数点后两位,第三位四舍五入的表达式是
A.y=(y*100+0.5)/100.0 B.x=y*100+0.5,y=x/100.0
. C.y=y*100+0.5/100.0 D.y=(y/100+0.5)*100.0
24.设有说明语句;
char s[80]="Hello";int a[20]={1 2};
下列选项中,存在语法错误的是 (24) 。
A.cin>>s; B.cout< C.cin>>a; D.cout<
25•下列关于new运算符的叙述中不正确的是(25) 。
A•使用运算符new创建对象时必须定义初始值
B•使用运算符new创建对象时会调用类的构造函数
C•运算符new可以用来动态创建对象和对象数组
2•使用new运算符创建的对象可以使用运算符delete撤销
26•若有说明语句;
int s[4][6],t[6][4],(*p)[6];
则以下选项中正确的是 ( 26 ) 。
A.p=t B.p=s c.p=s[0]; D.p=t[0];
27.以下叙述中不正确的是 (27)
A•在函数内的复合语句中定义的变量在本函数范围内有效
B•形式参数是局部变量
C•在函数内定义的变量只在本函数范围内有效
O•在不同函数中可以使用相同名字的变量
28•以下有关抽象类的叙述中不正确的是 (28) .
A.抽象类至少含有一个纯虚函数
B.抽象类至少含有一个没有函数体的虚函数
c.在抽象类的派生类中可以据供纯虚函数的实现代码
D.可以说明抽象类的对象
29.下列关于构造函数的描述中不正确的是
A.构造函数可以设置缺省参数
B.构造函数在定义类的对象时自动执行,但不用显示调用
C.构造函数可以对静态数据成员进行初始化
D.构造函数可以重载
30.设有类定义:
class B{
public:
void G(float x=O){cout<
void G(double x){cout<
} r;
则以下选项中存在语法错误的是_____
A.r.G(); B.r.G(10); C.r.G(3.14); D.r.G(-1.0f);
二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)
•基本概念题(共5分)
1.在构造函数和析构函数中,可以定义为虚函数的是________。
2• 若有说明语句:
float a[]={1,2,3,4,5}; int b=&a[3]-&a[0];
则执行以上语句后,b的值为_______
3.在C++中,重载赋值运算符"="只能用______函数实现,而重载插入运算符"<<"和提取
运算符">>"只能用_______函数实现
4.设e是表达式,其类型可以是:float、double、int、char、enum,C++中规定,在开关语句
switch(e)中,e的值类型不能是________
●阅读程序题(共13分)
5.[程序](2分)
#include
int fun(int);
void main(void)
{ int a=2;
for(int i=O;i<3;i++) cout<
}
int fun(int a)
{int b=0;
static int c=3;
return(b++,c++,a+b+c);
}
程序输出的第二行是( ) ,第三行是( ) 。
6.[程序](2分)
#include
void ff(int &m,int &n)
{int t=m+n;
m=n; n=t;
}
void main(void)
{int a,b,i;
for(a=b=i=1;i<=5;i++){
ff(a,b);
cout<
}
}
程序输出的第二行是( ) ,第四行是( )
7.[程序](2分)
#include
void f1(int n,int &i,char s[])
{s[i]='0'+n;
n=n/lO; i++;
if(n==0)s[i]=0; else f1(n,i,s);
}
void f2(int n,int i,char s[])
{if(n){
int k;
k=n:
f2(n/lO,i+1,S);
s[i]='0'+k;
}
}
void main(void)
{char s[20];
int i=0;
f1(24675,i,s);
s[i]=0;
cout<<"s="<
static char s1[20];
f2(1357,0,s1);
cout<<"s1="<
} '
程序输出的第一行是( ) ,第二行是( )。
8.[程序](2分)
#include
char *f(char *s1,char *s2)
{char *p,*p1;
int n=0;
while(*(s1+n))n++;
char *buf=new char[n+1];
p=buf;p1=s1;
while(*p++=*p1++);
p=s1:p1=s2;
while(*p++=*p1++);
cout<
p--;p1=buf;
whi1e(*p++=*p1++);
de1ete []buf;
return s1;
}
void main(void)
{char s1[30]="about ",s2[]="time ";
cout<
}
程序输出的第一行是______ ,第二行是_______。
9.[程序](3分)
#include
int fun(int x,int y)
{ cout<
return(x>y?x:y);
}
void main(void)
{int a=3,b=6,k=4,m;
m=fun(fun(a,b),fun(b,k));
cout<<"m="<
}
程序输出的第一行是_____,第三行是______,第四行是________ 。
lO.[程序](2分)
#include
class Base
{public:
void virtual f(){cout<<"Base::f()"<
void virtual g(){cout<<"Base::g()"<
};
class A:public Base
{public:
void f(int a=O){cout<<"A::f()"<
};
class B:public A
{ void f(){cout<<"B::f()"<
void g(){cout<<"B::g()"<
};
void main(void)
{ B b;
Base *p=&b;
A *q=&b;
P->f();p->g();
q->f();q->g();
}
程序输出的第一行是( ) ,第三行是( ) 。
完善程序题(共12分)
11.下面的程序功能是:将一个字符串中的单词分行输出。例如,对字符串:"What is your name?",执行程序后,输出结果为
What
is
your
name?
[程序](4分)
#include
char *nextWord(char **pp)
{static char word[81];
while(**pp=='') _______;
char *pw=word;
while(**pp&&**pp!=' ')
*pw++=*(*pp)++;
_______ ;
return ______ ;
}
void main(void)
{char s[]="What is your name?",*ps=s;
do{cout<
}
12.以下程序的功能是:二维数组a中每列元素都是从小到大有序排列的,将一维数组b中的
元素依次插入到数组a的每列中,并保持a中每列数据的有效性,最后将执行插入操作
后的数组a以矩阵形式输出。例如:
原数组 1 3 2 1 3 1
4 6 8 2 6 2
8 9 10 数组b为{2 7 1}操作后的数组a为:4 7 8
8 9 10
[程序](4分)
#include
#include
#define ROW 4
#define COL 3
void f(int a[][COL],int b[])
{int i,j;
for(_________ ){
for(j=ROW-1;j>0;j--)
if(a[j-1][i]>b[i])
(24) ;
else break;
(______) ;
}
}
void main(void)
{int a[ROW][COL]={1,3,2,4,6,8,8,9,10};
int b[COL]={2,7,1};
cout<<"插入前数组中的数据依次为:"<<'\n';
for(int i=0;i
for(int j=0;j<COL;j++)cout<
cout<
}
cout<:
__________;
cout<<"插入后数组中的数据依次为:"<<'\n';
for(i=0;i|
for(int j=0;j<COL;j++) cout<
cout<
}
} |