return0;
}
1.2选择题
1.C程序的执行是从【A】。
A)程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序的最后一个函数结束
D)本程序的第一个函数开始,到本程序的main函数结束
2.1.C++源程序文件的缺省扩展名为(A)。
A.cppB.exeC.objD.lik
3.存储以下数据,占用存储字节最多的是(C)。
A.0B.‘0’C.“0”D.‘0’(空格)
4.设x和y均为bool量,则x&&y为真的条件是(A)。
A.它们均为真B.其中一个为真
C.它们均为假D.其中一个为假
5.字符串“a+b=12\n”的长度为(B)。
A.6B.7
C.8D.9
6.【A】是构成C语言程序的基本单位。
A)函数B)过程C)子程序D)子例程
7.C语言规定,必须用【C】作为主函数名。
A)functionB)includeC)mainD)stdio
8.设有intx=11;则表达式(x+1/3)的值为【C】。
A)3B)4C)11D)12
9.下列字符串是合法标识符的是【A】。
A)INTB)5_studentC)longD)!
DF
10.在C++语言中,回车换行符是【A】。
A)‘\n’B)‘\t’C)‘\v’D)‘\b’
11.C语言中,运算对象必须是整型数的运算符是【B】。
A)/B)%C)%和/D)*
12.表达式10!
=8的值为【D】。
A)trueB)非零值C)0D)1
13.能正确表示a和b同时为正或同时为负的表达式是【D】。
A)(a>=0‖b>=0)&&(a<0‖b<0)
B)(a>=0&&b>=0)&&(a<0&&b<0)
C)(a+b>0)&&(a+b<=0)
D)a*b>0
14.若要求在if语句后一对圆括号中表示a不等于0的关系,能正确表达这一关系的是【D】。
A)a<>0B)!
aC)a=0D)a
15.判断字符型变量ch为大写字母的表达式是【C】。
A)‘A’<=ch<=‘Z’B)(ch>=‘A’)&(ch<=‘Z’)
C)(ch>=‘A’)&&(ch<=‘Z’)D)(ch>=‘A’)AND(ch<=‘Z’)
16.在C语言的循环语句for,while,dowhile中,用于直接中断内层循环的语句是【C】。
A)switchB)continueC)breakD)if
17.若k为整型变量,则以下for循环的执行次数为【D】。
for(k=2;k==0;)printf(“%d”,k--);
A)无限次B)0次C)1次D)2次
18.在下面的一维数组定义中,哪一个有语法错误。
(C)
A.inta[]={1,2,3};B.inta[10]={0};
C.inta[];D.inta[5];
19.27.若用数组名作为函数调用的实参,传递给形参的是(A)。
A.数组的首地址B.数组中第一个元素的值
C.数组全部元素的值D.数组元素的个数
20.31.用new运算符创建一个含10个元素的一维整型数组的正确语句是(C)。
A.int*p=newa[10];B.int*p=newfloat[10];
C.int*p=newint[10];D.int*p=newint[10]={1,2,3,4,5}
21.33.假定变量m定义为“intm=7;”,则定义指针变量p的正确语句为(B)。
A.intp=&m;B.int*p=&m;
C.int&p=*m;D.int*p=m;
22.假定p是具有double类型的指针变量,则表达式++p使p的值(以字节为单位)增加(C)。
A.1B.4
C.sizeof(double)D.sizeof(p)
23.假定p指向的字符串为“string”,则cout<
A.stringB.ring
C.ingD.i
24.假定变量x定义为“intx=5;”,要使rx成为x的引用(别名),rx应定义为(D)。
A.intrx=x;B.intrx=&x;
C.int*rx=&x;D.int&rx=x;
25.在一个类的定义中,包含有(C)成员的定义。
A.数据B.函数C.数据和函数D.数据或函数
26.在关键字public后面定义的成员为类的(B)成员。
A.私有B.公有C.保护D.任何
27.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
A.x(a)B.x[a]C.x->aD.x.a
28.类中定义的成员默认为(B)访问属性。
A.publicB.privateC.protectedD.friend
29.对于一个类的构造函数,其函数名与类名(A)。
A.完全相同B.基本相同C.不相同D.无关系
30.类的构造函数是在定义该类的一个(C)时被自动调用执行的。
A.成员函数B.数据成员C.对象D.友元函数
31.假定AB为一个类,则执行“ABr1=r2;”语句时将自动调用该类的(D)。
A.无参构造函数B.带参构造函数
C.赋值重载函数D.拷贝构造函数
32.对于任一个类,用户所能定义的析构函数的个数至多为(B)。
A.0B.1C.2D.任意个
33.类的构造函数可以带有(D)个参数。
A.0B.1C.2D.任意
34.类的析构函数可以带有(A)个参数。
A.0B.1C.2D.任意
35.当一个类对象离开它的作用域时,系统自动调用该类的(D)。
A.无参构造函数B.带参构造函数
C.拷贝构造函数D.析构函数
36.假定指针变量p定义为“int*p=newint[30];”,要释放p所指向的动态内存,应使用语句(D)。
A.deletep;B.delete*p;
C.delete&p;D.delete[]p;
37.假定一条定义语句为“inta[10],x,*pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为(D)。
A.x=pa[3];B.x=*(a+3);
C.x=a[3];D.x=*pa+3;
38.C++中函数返回值的类型是由(B)决定的。
A.return语句中表达式的类型B.该函数定义时的类型
C.调用函数时的调用语句D.系统根据结果
39.以下叙述中不正确的是(C)。
A.在一个函数中,可以有多条return语句
B.函数的定义不能嵌套,但函数的调用可以嵌套
C.函数必须有返回值
D.不同的函数中可以使用相同名字的变量
40.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为(C)。
A.2B.4
C.6D.8
1.3简答题
1.定义形式如下的类,C++编译器自动为该类产生的四个缺省函数是什么?
写出其原型。
classMyClass
{
public:
voidSetX(int);
private:
intx;
};
答:
无参构造函数,拷贝构造函数,析构函数,赋值运算符函数。
MyClass();
MyClass(constMyClass&);
~MyClass();
MyClass&operator==(constMyClass&);
2.函数声明和函数定义有什么区别?
答:
1)函数声明是函数的原型,强调函数如何被使用,不包含函数的实现代码;
2)函数定义给出函数的实现代码。
3.拷贝构造函数在哪几种情况下会被调用?
答:
1.当类的一个对象去初始化该类的另一个对象时;
2.如果函数的形参是类的对象,调用函数进行形参和实参结合时;
3.如果函数的返回值是类对象,函数调用完成返回时。
4.构造函数与普通成员函数相比有什么不同?
答:
构造函数是类的一种特殊成员函数,一般情况下,它是专门用来初始化对象成员变量的。
构造函数的名字必须与类名相同,它不具有任何返回类型。
构造函数在创建对象时由系统自动调用。
5.什么是常对象?
答:
常对象是指在任何场合都不能对其成员的值进行修改的对象。
6.构造函数和析构函数是否可以被重载,为什么?
答:
构造函数可以被重载,析构函数不可以被重载。
因为构造函数可以带多个参数,而析构函数不能带参数。
7.分析正误:
抽象类不会产生实例,所以不需要有构造函数。
答:
错。
抽象类中可以包含数据成员,派生类对象初始化时需要通过抽象基类的构造函数完成对其数据成员的初始化。
8.delete与delete[]区别:
delete只会调用一次析构函数,而delete[]会调用动态分配的多个对象的析构函数。
9.一个类的构造函数和析构函数什么时候被调用,是否需要手工调用?
答:
构造函数在创建类对象的时候被自动调用,析构函数在类对象生命期结束时。
构造函数和析构函不需要手工调用,由系统自动调用。
10.请说出类中private,protect,public三种访问限制类型的区别
答案:
private是私有类型,只有本类中的成员函数才能访问;protect是保护型的,本类和子类成员函数可以访问;public是公有类型,本类和子类成员函数可以访问,类外部通过对象可以间接访问。
11.写出下面程序的运行结果。
#include
intmain()
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
std:
:
cout<
:
endl;
return0;
}
参考答案:
9,11,9,10
12.计算下面表达式的结果。
(1)x+a%3*(int)(x+y)%2/4
设x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
参考答案:
(1)2.5
(2)3.5
13.写出程序运行的结果。
#include
intmian()
{
inti;
intsum=0;
for(i=1;i<=10;++i)
{
if(i%2==0)
sum+=i;
}
std:
:
cout<<”sum=”<:
endl;
return0;
}
参考答案:
sum=30
14.写出程序运行的结果,假设通过键盘输入3和5。
#include
intmain()
{
inta,b,s;
std:
:
cout<<"PleaseEnteraandb:
";
std:
:
cin>>a>>b;
s=a;
if(a>b)
s=a%b;
else
s=b%a;
std:
:
cout<<"result:
"<
:
endl;
return0;
}
参考答案:
result:
2
15.写出程序运行的结果。
#include
intmain()
{
chari;
for(i='A';i<'I';i++)
std:
:
cout<
std:
:
cout<:
endl;
return0;
}
参考答案:
Abcdefgh
16.写出程序运行的结果。
#include
intmain()
{
inti,j;
for(i=0;i<5;i++){
for(j=i;j<5;j++)cout<<’*’;
std:
:
cout<:
endl;
}
return0;
}
参考答案:
*****
****
***
**
*
17.写出程序运行的结果。
#include
usingnamespacestd;
classTest
{
public:
Test(){cout<<“Defaultconstructor.”<Test(constTest&t)
{cout<<“Copyconstructor!
”<}
voidfun(Testp){}
intmain()
{
Testa;
fun(a);
return0;
}
参考答案:
DefaultConstructor.
CopyConstructor.
18.写出程序运行的结果。
#include
intmain()
{
intnumber=267;
intdigit,tens,hundreds;
digit=number%10;
tens=(number/10)%10;
hundreds=(number/100)%10;
std:
:
cout<<"Result:
"<:
endl;
return0;
}
参考答案:
Result:
2,6,7
19.写出程序运行的结果。
#include
doublefunc(doublepData[],intsize);
intmain()
{
doublearray[]={2.2,3.8,6,5.4};
std:
:
cout<<"Result:
"<:
endl;
std:
:
cout<<"Result:
"<:
endl;
return0;
}
doublefunc(doublepData[],intsize)
{
doubleresult=0;
inti;
for(i=0;i{
result+=pData[i];
}
result/=size;
returnresult;
}
参考答案:
Result:
4.35
Result:
4
20.写出程序运行的结果。
#include
intmain()
{
charword[50];
std:
:
cout<<"Enterastring:
";
std:
:
cin>>word;
intpos=0;
for(inti=0;word[i]!
='\0';++i)
{
if(word[i]<'0'||word[i]>'9')
{
word[pos]=word[i];
++pos;
}
}
word[pos]='\0';
std:
:
cout<<"Pos:
"<:
endl;
std:
:
cout<<"result:
"<:
endl;
return0;
}
参考答案:
Enterastring:
Pos:
6
result:
Hello_
21.写出程序运行的结果。
#include
intfun(intinterval)
{
intsum=0,i=0;
for(i=0;i<100;i+=interval)
sum+=i;
returnsum;
}
intmain()
{
std:
:
cout<<"Result:
"<(2)<:
endl;
return0;
}
Result:
2450
1.4编程题
1.输入一个华氏温度,要求输出摄氏温度