第 1 页:选择题 |
第 3 页:程序改错题 |
第 4 页:简单应用题 |
第 5 页:综合应用题 |
点击查看:2015年计算机二级考试《C++》上机模考试卷汇总
一、选择题
1有下列程序:
#include
intfun(intx,inyy)
{if(x==y)return(x);
elsereturn((x+y)/2);
}
voidmain( )
{inta=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是( )。
A.3B.6C.8D.12
参考答案:B
参考解析:在程序中子函数fun(intX,inty)的功能是如果X的值等于y的值,则返回X的值,否则返回这两个数的算术平均值,在主函数中首先计算fun(5,6),其值等于5,然后再计算fun(8,5),其值等于6。所以正确答案为选项B。
2已知字母A的ASCIl代码值为65,若变量kk为char型,下列不能正确判断出kk中的值为大写字母的表达式是( )。
A.kk>='A'&&kk<='Z'
B.!(kk>='A'‖kk<='2')
C.(kk+32)>='a'&&(kk+32)<='2'
D.isalpha(kk)&&(kk<=91)
参考答案:B
参考解析:选项A用逻辑与运算符来连接关系表达式'A'<=kk并且kk<='z',介于'A'与'Z'之间为大写字母。选项C用逻辑与运算符来连接关系表达式(kk+32)>'a'和(kk+32)<='2',因为大写'A'与小写'a',ASCIl码相差32,由表达式可知C正确。选项D调用函数isalpha(),首先判断kk是否为字母,接着通过与运算(kk<=91)来判断kk是否为大写字母;而选项B的表达式给的结果是除了'A'与'z'的大写字母,不符合题意。
3有如下程序:
#included
usingnamespacestd;
classTestClass
{
private:
intx,Y;
public:
TestClass(inti,intj)
{
x=i:
y=j;
}
voidprint()
{
cout<<"printl"<
}
voidprint()const
{
cout<<"print2"<
}
};
intmain()
{
constTestClassa(1,2);
print();
return0;
}
该程序运行后的输出结果是( )。
A.printlB.print2C.printlprint2D.程序编译时出错
参考答案:B
参考解析:本题定义TestClass型常对象a,然后调用对象a中的成员函数print()。因为在C++中.如果一个对象被声明为常对象,则不能调用该对象中的非const型成员函数。所以,这里调用的是对象中的const型成员函数voidprint()const,输出为print2。
4有如下程序:
#include
usingnamespacestd;
classBase
{
public:
Base(){cout<<"BB";f();}
voidf(){cout<<"BF";}
};
classDerived:publicBase
{
public:
Derived(){cout<<"DD";}
voidf(){eout<<"Df";}
};
intmain(){Derivedd;return0;}
执行上面的程序将输出( )。
A.BBBfDDB.BBDfDDDfC.DDD.DDBBBf
参考答案:A
参考解析:本题考查类的继承和派生。派生类执行构造函数的一般次序为:首先调用基类构造函数;然后调用成员对象的构造函数;最后是派生类构造函数中的内容。题目中定义派生类对象d时,先调用基类Base的构造函数,输出BBBf,然后调用派生类Derived的构造函数,输出DD。
5在计算机中,算法是指( )。
A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法
参考答案:C
参考解析:计算机算法是指解题方案的准确而完整的描述,它的基本特征分别是:可行性、确定性、有穷性和拥有足够的情报。
6有如下程序:
#include
usingnamespacestd;
intmain( ){
intf,f1=0,f2=1;
for(inti=3;i<=6;i++){
f=f1+f2:
f1=f2;f2=f;
}
cout<
return0;
}
运行时的输出结果是( )。
A.2B.3C.5D.8
参考答案:C
参考解析:循环3次,分别每次计算出f1,f2和f的值,该题比较简单,只需要细心即可。
7对于模板定义关键字class和typename说法不正确的是( )。
A.程序中的class并不能都替换为typename
B.class和typename都可互相替换
C.程序中的typename都能替换为class
D.程序中的部分class可以替换为typename
参考答案:B
参考解析:在C++程序中,typename是可以替换为class的,但class不能都替换为typename。
点击查看试题笔记(2)8下面程序的执行结果是( )。
#include"iostream.h"
voidmain()
{int*P,r;
P=newint:
*P=20:
r=sizeof(*p);
cout<
deleteP;}
A.程序错误B.内存为20地址的大小C.20D.4
参考答案:D
参考解析:本题考查指针和运算符sizeof的运用。sizeof可以运算出各种数据类型所占内存空间的多少。选项C中,指针P所指向的内存地址中内容是20。在用完申请后的内存应立刻释放。
9类MyClass的定义如下,若要对value赋值,则下面语句正确的是( )。
classMyClass
{
public:
MyClass( ){}
MyClass(inti){value=newint(i);}
int*value;
};
A.MyClassmy;my.value=10;
B.MyClassmy;*my.value=10;
C.MyClassmy;my.*value=10;
D.MyClassmy(10);
参考答案:D
参考解析:因题目中定义的指针value是指淘变量i的,所以直接利用语句MyClass(inti){value=newint(i);}对value进行赋值即可。
10当变量C的值不为2、4、6时,值也为“真”的表达式是( )。
A.(c==2)‖(c==4)‖(c==6)
B.(c>一2&&c<=6)‖(C!=3)‖(C!=5)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&&c<=6)&&(c%2!=1)
参考答案:B
参考解析:逻辑或“‖”运算中,只要有一项为真,表达式的值就为真而逻辑与“&&”运算必须两边都为真时才为真,在选项B中c的值不为2、4、6时,表达式的值也为真。
11概要设计中要完成的事情是( )。
A.系统结构和数据结构的设计
B.系统结构和过程的设计
C.过程和接口的设计
D.数据结构和过程的设计
参考答案:A
参考解析:软件概要设计的基本任务是:设计软件系统结构、数据结构及数据库设计、编写概要设计文档、概要设计文档评审。
12有下列程序:
#include
#definePT3.5;
#defineS(x)PT*x*x;
voidmain( )
(inta=1.b=2;printf("%4.1f\n",S(a+b));}
程序运行后的输出结果是( )。
A.14.0B.31.5C.7.5D.程序有错,无输出结果
参考答案:D
参考解析:这个程序有错误不能通过编译。①#define宏定义后不可有分号;②用分号隔开后,int只定义了a。b要重新定义。
13有下列程序:
#include
voidmain( )
{inta1,a2charc1,c2;
scanf("%d%c%d%C",&a1,&c1,&a2,&c2);
printf("%d%c%d%C",a1,c1,a2,c2);
}
若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是12,a,34.
A.12a34bB.
C.12,a,34,bD.
参考答案:A
参考解析:从程序的输入格式控制方法判断,输入时各变量之间没有分隔符,当输入相应的变量对应的值时,相应的变量能够得到对应的值,可以输出要求的结果。
14下列虚基类的声明中正确的是( )。
A.clasSvirtualB:publicA
B.virtualclassB:publicA
C.classB:publieAvirtual
D.classB:virtualpublicA
参考答案:D
参考解析:虚基类说明格式为:Virtual<继承方式><基类名>其中,virtual是虚基类的关键词。虚基类的说明是用在定义派生类时,写在派生类名的后面。即class<派生类名>:Virtual<继承方式><基类名>。
15设有定义“chars[8];inti=0;”,下列不能将一行(不超过80个字符)带有空格的字符国正确读入的语句或语句组是( )。
A.gets(s);
B.while((s[i++]=getchar( ))!='\n');s[i]='\0';
C.seanf("%S",s);
D.do{scanf("%C",&s[i]);}while(s[i++]!='\n');s[i]='\0';
参考答案:C
参考解析:在scanf输入函数中,格式字符s的作用是输入一个字符串,直到遇到空格结束。所以选项C不能输入包含空格的字符串。正确答案为选项C。
16下面关于虚函数的描述中正确的是( )。
A.虚函数是一个静态成员函数
B.虚函数是一个非成员函数
C.虚函数可以在函数说明时定义,也可以在函数实现时定义
D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型
参考答案:D
参考解析:本题考查虚函数的概念。虚函数是非静态的成员函数,它不能是友元函数,但可以在另一个类中被声明为友元函数。虚函数必须是类的成员函数,虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数的函数体实现的地方,一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。
17下列错误的定义语句是( )。
A.intx[][3]={{0},{1},{1,2,3}};
B.intx[4][3]={{1,2,3},{1,2,3),{1,2,3),{1,2,3}};
C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D.intx[][3]={1,2,3,4};
参考答案:C
参考解析:本题考查数组的定义一维数组定义和初始化是允许省行下标,不允许省列下标,故选项C错误。
18数据库管理系统是( )。
A.操作系统的一部分
B.在操作系统支持下的系统软件
C.一种编译系统
D.一种操作系统
参考答案:B
参考解析:
数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。
19Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是( )。
Samplea[2],*p=newSample;
A.0B.1C.2D.3
参考答案:D
参考解析:构造函数在对象被创建时由系统自动调用,本题共创建3个对象。
20以下关于友元函数的叙述不正确的是( )。
A.友元函数提供了类之间数据共享的一个途径
B.一个友元函数可以访问任何类的任何成员
C.友元函数破坏了数据的封装
D.友元函数增加了程序设计的灵活性
参考答案:B
参考解析:友元函数的作用在于提高程序的运行效率,但是它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。只有在类中声明了某个函数是自己的友元函数之后,该友元函数才能够访问本类的私有成员,而不是任何类的任何成员都可以访问。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |