则(A)
(A)编译出错(B)运行后将输出Ch(C)运行后将输出Chi(D)运行后将输出Chian
27、判断字符串s1是否大于字符s2是空串的是(A)
(A)if(strcmp(s1,s2)>0)(B)if(strcmp(s1,s2))
(C)if(strcmp(s2,s1)>0)(D)if(s1>s2)
28、下面关于C++字符数组的叙述中,错误的是(D)。
(A)字符数组可以放字符串
(B)字符数组的字符可以整体输入、输出
(C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
(D)可以用关系运算符对字符数组比较大小
29、以下对一维数组a的正确定义是(D)
(A)chara(10);(B)inta[];(C)intk=5,a[k];(D)chara[]={‘a’,’b’,’c’};
30、若二维数组y有m列,则位于y[i][j]之前的元素个数有(C)个
(A)j*m+i(B)i*m+j(C)i*m+j-1(D)i*m+j+1
31、非数组、指针或引用型变量做实参时,它和对应虚参之间的数据传递方式是(B)
(A)地址传递(B)单向值传递(C)双向值传递(D)由用户指定传递方式
32、若有数组名作为函数调用的实参,则传递给虚参的是(A)
(A)数组的首地址(B)数组第1个元素的值
(C)数组中全部元素的值(D)数组元素的个数
33、以下正确的函数原型声明语句是(c)
(A)intfun(inta,b);(B)floatfun(inta;intb);
(C)doublefun();(D)intfun(chara[][]);
34、已有定义“inta=5,&ra=a;”则下叙述中,错误的说法是(C)。
(A)ra是变量a的引用(B)ra的值为5
(C)ra是a的地址值(D)执行“ra=10;”后变量a的值也变为10
35、若有定义“intc[5],*p=c;”,则以下对数组c元素地址的正确引用是(B)
(A)p+5(B)c++(C)&c+1(D)&c[0]
36、设intx=1,y=3,能正确表示代数式3x|x-y|的C++表达式是(A)。
(A)abs(x-y)*3*x(B)3x(abs(x-y))
(C)3x||(x-y)(D)3*x*(x-y)||3*x*(y-x)
37、有函数原型voidf(int*);下面选项中,正确的调用是(C)。
(A)char*s="ABCD";f(s);(B)inta=15;f(a);
(C)intm=100;f(&m);(D)doublepi=3.14;f(pi);
38、下面关于new和delete运算的叙述中,错误的说法是(D)。
(A)由new分配的内存空间是连续的
(B)如果当前内存无足够的空间可分配,则new运算符返回NULL
(C)由new运算符分配的内存空间,当函数执行结束时系统会自动收回
(D)对于程序中的静态数组占用的存储空间不能使用delete来释放
39、下面判断是否构成重载函数的条件中,错误的判断条件是(C)
(A)参数类型不同(B)参数个数不同(C)参数顺序不同(D)函数返回值不同
40、假设a,b是全局变量,下面设置函数参数默认值的函数原型中,错误的是(D)
(A)intfun(intx,inty=10);(B)intfun(intx=5,inty=10);
(C)intfun(intx,inty);(D)intfun(intx,inty=a+b);
41、设有定义:
structdata
{
inti;
charch;
doubleq;
doublef
}b;
结构体变量b占用内存的字节数是(D)
(A)18(B)19(C)20(D)21
42、关于结构体概念的叙述中,正确的说法是(C)。
(A)相同类型数据的集合称为结构(B)不同类型数据的集合称为结构体
(C)数据的集合称为结构体(D)整数的集合称为结构体
43、设有说明语句
structabc
{
intm;
floatn;
}stype;
则下面错误的叙述是(B)
(A)struct是定义结构体类型的关键字
(B)stype是结构体类型名
(C)m和n都是结构体成员
(D)stype是结构体变量名
43、对枚举类型ee的定义中,正确的这定义是(A)。
(A)enumee{A,B,C,D};(B)enumee{‘A’,’B’,’C’,’D’};
(C)enumee={A,B,C,D};(D)enumee={‘A’,’B’,’C’,’D’};
44、关于同类型结构体与同类型联合体赋值的叙述中,正确的说法是(B)
(A)联合体变量之间可以直接赋值,结构体变量之间也可以直接赋值
(B)联合体变量之间可以直接赋值,结构体变量之间不可以直接赋值
(C)联合体变量之间不可以直接赋值,结构体变量之间可以直接赋值
(D)联合体变量之间不可以直接赋值,结构体变量之间也不可以直接赋值
45、一个结构体变量所占用的内存字节数是(D)
(A)结构体中第一个成员所需的内存字节数
(B)结构体中最后一个成员所需的内存字节数
(C)结构体中占用内存最大的成员所需的字节数
(D)结构体中各成员所需的内存字节数和
46、当定义一个联合体变量时系统分配给它的内存字节数是(C)
(A)联合体中第一个成员所需的内存字节数
(B)联合体中最后一个成员所需的内存字节数
(C)联合体中占用内存最大的成员所需的字节数
(D)联合体中各成员所需的内存字节数和
47、下面叙述中错误的是(C)。
(A)预处理命令都必须以“#”开始
(B)在程序中凡是以“#”开始的语句行都是预处理命令行
(C)C++程序在程序执行过程中对预处理命令进行处理
(D)一行只能写一条预处理命令
48、下面表达式组中不等价的一组是(C)
(A)a&=b与a=a&b(B)a|=b与a=a|b
(C)a!
=b与a=a!
b(D)a^=b与a=a^b
49、设x=001101012,则下面能使x的高4位取反,低4位清零,则下面能实现此功能的是(C)
(A)x=x&0x0f(B)x=x|0x0f(C)x=x^0365(D)x=x^033
50、设x=001101102,则若想通过x&y运算使x中的低4位不变,高4位清零,则下面能实现此功能的是(B)
(A)x=x|0x0f(B)x=x&0x0f(C)x=x|0xf0(D)x=x&0xf0
51、设a和b是两个结构体变量,下面正确的表达式是(D)
(A)a=b(B)a=b+1(C)a>b(D)a==b
52、关于结构体变量运算重载中,正确的单目运算符重载语法格式(B)
(A)函数类型名单目运算符operator(虚参){函数体}
(B)函数类型名operator单目运算符(虚参){函数体}
(C)函数类型名单目运算符operator(){函数体}
(D)函数类型名operator单目运算符(){函数体}
53、后缀—运算符的重载函数语法格式如下:
函数类型operator--(虚参,int){函数体}
则下面关于第2个虚参的叙述中,正确的说法是(C)
(A)第2个参数必须给出参数名称
(B)第2个参数不能给出参数名称
(C)第2个参数必须是int型参数,其参数名可有可无
(D)第2个参数也可以是long型参数
54、设分数的结构体定义如下:
structFraction
{
intnume;
intdeno;
};
则下面关于取自身的单目运算符“+”的运算符重载函数中,最合适是(B)。
(A)Fractionoperator+(Fractionx)
{returnx;}
(B)Fractionoperator+(Fraction&x)
{returnx;}
(C)voidoperator+(Fractionx)
{returnx;}
(D)voidoperator+(Fraction&x)
{returnx;}
55、派生类对象不能访问基类中的(B)
(A)公有继承的公有的成员(B)公有继承的私有成员
(C)公有继承的保护成员(D)私有继承的公有成员
56、关于派生类叙述中,错误的说法是(B)
(A)派生类中从基类公有继承过来的分有成员的访问权限不变
(B)任何类都有基类
(C)派生类还可作为另一类的基类
(D)基类中的构造函数和析构函数是不可继承的
57、设有类的定义如下:
classAAA
{
intx;
chars[12];
}ob;
则在VC++环境下,变量ob所占内存空间字节数是(C)字节
(A)14(B)15(C)16(D)17
58、关于构造函数的叙述中,错误的说法是(B)
(A)构造函数的名称必须为类名
(B)构造函数最多只能有一个
(C)创建对象时自动执行构造函数
(D)构造函数无任何函数类型
59、(A)只能访问静态成员变量
(A)静态成员函数(B)虚函数(C)构造函数(D)析构函数
60、C++中类有两种用法,一种是类的实例化,即生成类对象,另一种是通过(B)派生出新的类
(A)复用(B)继承(C)重载(D)封装
二、判断题
1、!
比&&的优先级最低(F)
2、字符型变量不能赋予整数(F)
3、设inta=1,b=2,c=3,d=4;则条件表达式a
a:
cc:
d的值为3(F)
4、用C++语言编制的源程序要变为目标程序必须要经过编译(T)
5、表达式x=i++和x=++i执行结果x获得不同的结果。
(T)
6、关于switch语句中必须要使用break。
(F)
7、设有“intx,a,b,c”,则if(a==b)x++;是不合法的。
(F)
8、用x>a&&x<=b描述区间[a,b]的表达式是正确的。
(F)
9、下面程序
m=-1
do
{
m=m*n;
}
while(!
m)
是死循环(F)
10、for(;;)写法是错误。
(F)
11、在循环语句体中,continue的作用是结束本次循环,回到循环头。
(F)
12、设intx=6;while(x){循环体},将不执行循环体中语句。
(F)
13、#definen10inta[n],b[n+1]定义数组是合法的。
(T)
14、相同类型的数据的集合称为数组。
(T)
15、设有两个数组a[]={‘a‘,’b’,’c’}和b=“abc”相同的。
(T)
16、设有两个数组a[]={‘a‘,’b’,’c’}和b=“abc”用函数strlen()得到的值是相等的(T)。
17、对二维数组inta[][3]={1,32,45,17,-23,87,36}第一维的值是3(T)
18、数组作为函数的实参传递是单向值传递(F)
19、按C++标识符的语法规定,new是合法的标识符(F)
20、int*buffer=newint[256]是分配256个字节。
(F)
21、函数模板参数的类型是通用类型(T)
22、构成重载函数的参数类型是不同。
(F)
23、设float*p,则p+1是当前地址加float类型的长度(T)
24、对结构体中的成员不能用“->”访问成员。
(F)
25、在x构造体中含有y构造体在访问y中的成员的格式是x·y·成员名(T)
26、结构体类型定义中可以出现联合体类型的成员,联合体类型中也可以出现结构体类型的成员(T)
27、对数据类型int的别名的定义可以是typedefInteger=int;(F)
28、enumweek{“MON”,“TUE”,“WED”}是错误写法。
(T)
29、文件包含命令不能装入“*cpp”类型的文件。
(F)
30、设包含文件在D盘的“ABC”目录中,则指定路径的语法格式是“#include”D:
\ABC\头文件名.h””(T)
31、条件编译的作用是根据不同条件进行编译不同程序段,以提高程序的兼容性(F)
32、设x是8位字节的数据,x&0xf0可对低4位进行清零(T)
33、设对变量intx进行“<<”运算,结果等价x/2。
(F)
34、运算符重载函数作用的提高运算符的处理速度。
(F)
35、双目运算符重载语法格式是函数类型名operator双目运算符(虚参1,虚参2){函数体}(F)
36、可以对类成员变量直接赋值。
(F)
37、设成员函数定义p&Set(pa)函数返回值是类p的对象的引用。
(F)
38、构造函数释放指针成员占据的内存空间,析构函数给数据成员赋初值。
(F)
39、设AB为一个类,则AB(AB&x)拷贝构造函数的函数原型。
(T)
40、一个类只能拥有一个类。
(F)
三、程序设计
1、求下列分段函数
#include
usingnamespacestd;
intmain()
{
intx,y;
cout<<”Pleaseinputthevalueofx:
”;
cin>>x;
if(x<5)
{
if(x>0)
y=x;
else
y=-x;
}
elseif(x>=5&&x<20)
y=3*x*x-2*x+1;
else
y=x/5;
cout<<”y=”<return0;
}
2、输入1-7之间的数字,输出对应的星期几,要求当用户输入不在1-7的范围要有出错处理的功能。
#include
usingnamespacestd;
intmain()
{
intn;
cout<<”Pleaseinputyournumber:
”<cin>>n;
switch(n)
{
case1:
cout<<”Monday”<case2:
cout<<”Tuesday”<case3:
cout<<”Thursday”<case4:
cout<<”Wednesday”<case5:
cout<<”Friday”<case6:
cout<<”Saturday”<case7:
cout<<”Sunday”<default:
cout<<”Error,thenumberyouinputshouldbetween1and7.”<}
return0;
}
3、求一元二次方程ax2+bx+c=0的两个实根。
#include
#include
usingnamespacestd;
intmain()
{
floata,b,c,d;
cout<<”Pleasseiputthevalueofa,b,c:
”;
cin>>a>>b>>c;
d=b*b-4*a*c;
if(d<0)
cout<<”Thisequationhasnoroot!
”<elseif(d==0)
cout<<”Thisequationhasonlyoneroot:
”<<-b/2<else
{
x1=(b+sqr(d))/2*a;
x2=(b-sqr(d))/2*a;
cout<<”Therootsofthisequationare:
”<}
return0;
}
4、求s=1+3+5+…+99的和。
#include
usingnamespacestd;
intmain()
{
intS(0);
for(inti=0;i<100;i++)
S+=i;
cout<<”S=”<
return0;
}
5、输出32~126的ASICII码,每个字符与它的编码值相对应。
#include
#include
usingnamespacestd;
intmain()
{
charn[95];
for(inti=32,j=0;i<127;i++,j++)
n[j]=i;
for(inti=32,j=0;j<95;j++,i++)
{
cout<