智慧树知到《计算机编程》章节测试答案
智慧树知到《计算机编程》章节测试答案
第一章单元测试
1、有定义 int a=9,b=6,c; 执行语句 c=a/b+0.5;后,c 的值为()。
A.1.4
B.1
C.2.0
D.2
正确答案:1
2、C++语言源代码文件扩展名为()。
A..obj
B..cpp
C..c++
D..exe
正确答案:.cpp
3、以下用户标识符中,合法的是()。
A.%123
B.Ling@li
C.moon
D.Int
正确答案:moon
4、int x=10,y=5;则表达式x+=x*=y+8的值为()。
A.150
B.230
C.130
D.260
正确答案:260
5、有定义 int a=9,b=6,c; 执行语句 c=a/b+0.5;后,c 的值为()。
A.1.4
B.1
C.2.0
D.2
正确答案:1
6、以下标识符中,不能作为合法的 C++用户定义标识符的是()。
A.answer
B.to
C.signed
D.()if
正确答案:signed
7、下列字符串中可以用作 C++标识符的是()。
A.()256
B.class
C.delete
D.5char
正确答案:()256
8、下列 C++标点符号中表示一条预处理命令开始的是()。
A.#
B.//
C.}
D.
正确答案:#
9、以下程序的运行结果是()。
main(){ int a,b,d=241; a=d/100%9;b=(-1)&;&;(-1); cout<;<;a<;<;”,”<;<;b;}
A.6,1
B.2,1
C.6,0
D.2,0
正确答案:2,1
10、语句while(!E); 中的表达式 !E等价于()
A.E==0
B.E!=1
C.E!=0
D.E==1
正确答案:E==0
11、下面程序段的运行结果是:()。int a=1;b=2;c=2; while(a<;b<;c){t=a;a=b;b=t;c--;}cout<;<;a<;<;”,”<;<;b<;<;”,”<;<;c;
A.1,2,0
B.2,1,0
C.1,2,1
D.2,1,1
正确答案:1,2,0
12、设有程序段:int x=0,s=0;while(!x!=0) s+=++x;cout<;<;s;输出()。
A.运行程序段后输出0
B.运行程序段后输出1
C.程序段中的控制表达式是非法的
D.程序段执行无限次
正确答案:运行程序段后输出1
13、以下程序的正确运行结果是(
)。
#include<;stdio.h void num() { extern int x,y; int a=15,b=10; x=a-b; y=a+b; } int x,y; void main() { int a=7,b=5; x=a+b; y=a-b; num(); cout<;<;x<;<;”,”<;<;y<;<;endl; }
A.12,2
B.不确定
C.5,25
D.1,12
正确答案:5,25
14、已知:int m=5;下列表示引用的方法中,正确的是:()。
A.int &;Z
B.int &;t=5
C.int &;X=m
D.float &;f=&;m
正确答案:int &;X=m
15、C++语言源程序的基本单位是()。
A.过程
B.函数
C.子程序
D.标识符
正确答案:函数
16、下面程序段的输出结果是()。
char a[7]=”abcdef”;char b[4]=”ABC”;strcpy(a,b);cout<;<;a
A.b
B.\0
C.e
D.f
正确答案:f
17、下面程序段的输出结果是()。
char c()=”\t\v\\\0will\n”;cout<;<;strlen(c)。
A.14
B.3
C.9
D.6
正确答案:3
第二章单元测试
1、结构化程序设计所规定的三种基本控制结构是:()。
A.输入、处理、输出
B.树形、网形、环形
C.顺序、选择、循环
D.主程序、子程序、函数
正确答案:顺序、选择、循环
2、下面程序的输出结果是()。
main()
{ char str()=”SSWLIA” , C; int k; for(k=2;(c=str[k])!=’\0’;k++) { switch(c) { case ‘I’ :++k; break ; case ‘L’:continue; default :putchar(c) ; continue ; } putchar(‘*’); }}
A.SW
B.W*
C.W*A
D.W
正确答案:W*
3、C++语言中,while和do-while循环的主要区别是:()。
A.do-while的循环体至少无条件执行一次
B.while 的循环控制条件比do-while的循环控制条件严格
C.do-while 允许从外部转到循环体内
D.do-while的循环体不能是复合语句
正确答案:do-while的循环体至少无条件执行一次
4、下面程序段执行完后,x 的值是()。
int x=0; for(int i=0;i<;90;i++) if(i) x++;
A.0
B.30
C.89
D.90
正确答案:90
5、以下关于 do-while 循环的不正确描述是()。
A.do-while 的循环体至少执行一次
B.do-while 循环由 do 开始,至 while 结束,在 while(表达式)后面不能写分号
C.在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零(“ 假”)) 的操作
D.do-while 的循环体可以是复合语句
正确答案:do-while 循环由 do 开始,至 while 结束,在 while(表达式)后面不能写分号
6、运行下面程序,程序运行结果是()。#include <;iostream using namespace std;int main() { static int a[4]={7,8,9},b[4]={4,5,6},c[4],i; for(i=0;i<;3;i++) c[i]=a[i]+b[i];cout<;<;c[i]<;<;"; "; cout<;<;endl; return 0; }
(
A.0
B.15
C.11 13
D.11 13 15
正确答案:0
7、以下程序的输出是()。#include<;stdio.h main() { int x=1; if(x=2) cout<;<;“OK”; else if(x<;2) cout<;<;x; else cout<;<;“Quit”; }
A.OK
B.Quit
C.1
D.无输出结果
正确答案:OK
8、若w,x,y,z,m均为int 型变量,则执行下面语句后的m值为()。
w=1;x=2;y=3;z=4; m=(w<;x)?w:x; m=(m<;y)?m:y; m=(m<;z)?m:z。
A.1
B.2
C.3
D.4
正确答案:1
9、若u、w、x、y均是正整型变量,则以下正确的switch语句是()。
A.switch(x+y)
{ case 10 :u=x+y; break
case 11 :w=x-y; break
}
B.switch x{ default :u=x+y
case 10 :w=x-y; break
case 11 :u=x*y; break
}
C.switch(x*x+y*y){ case 3:
case 3:w=x+y; break
case 0:w=y-x; break
}
D.switch(pow(x,2)+pow(y,2)){ case 1:case 3:w=x+y; break
case 0:case 5:w=x-y
}
正确答案:switch(x+y)
{ case 10 :u=x+y; break
case 11 :w=x-y; break
}
10、语句 while(!E);中的表达式!E等价于()。A)E==0 B)E!=1 C)E!=0 D)E==1
A.E==0
B.E!=1
C.E!=0
D.E==1
正确答案:E==0
11、以下程序段()。 x=-1; do {x=x*x;} while(!x)。
A.是死循环
B.循环执行二次
C.循环执行一次
D.有语法错误
正确答案:循环执行一次
第三章单元测试
1、以下正确的说法是()。
A.用户若需要调用标准库函数,调用前必须重新定义
B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C.系统根本不允许用户重新定义标准库函数
D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
正确答案:用户可以重新定义标准库函数,若如此,该函数将失去原有含义
2、以下正确的描述是()。 在C++语言中
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
正确答案:函数的定义不可以嵌套,但函数的调用可以嵌套
3、以下程序的正确运行结果是()。 void main() { int a=2,i; for(i=0;i<;3;i++) cout<;<;f(a); } f(int a) { int b=0; static int c=3; b++; c++; return(a+b+c);
}
A.7 7 7
B.7 10 13
C.7 9 11
D.7 8 9
正确答案:7 8 9
4、以下程序的正确运行结果是()。 #include<;stdio.h func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } void main() { int k=4,m=1,p; p=func(k,m); cout<;<;p<;<;”,”; p=func(k,m); cout<;<;p<;<;endl; }
A.8,17
B.8,16
C.8,20
D.8,8
正确答案:8,17
5、C++语言规定,函数返回值的类型是由()。
A.return语句中的表达式类型所决定
B.调用该函数时的主调函数类型所决定
C.调用该函数时系统临时决定
D.在定义该函数时所指定的函数类型所决定
正确答案:在定义该函数时所指定的函数类型所决定
6、下面函数调用语句含有实参的个数为()。
func((exp1,exp2),(exp3,exp4,exp5));
A.1
B.2
C.4
D.5
正确答案:2
7、C++语言中,以下不正确的说法是()。
A.实参可以是常量、变量和表达式
B.形参可以是常量、变量和表达式
C.实参可以为任意类型
D.形参应与其对应的实参类型一致
正确答案:形参可以是常量、变量和表达式
8、在计算机高级语言 C++中,下面对函数不正确的描述是()。
A.当用数组名作形参时,形参数组元素值的改变可以使实参数组元素的值相 应改变
B.允许函数递归调用
C.函数形参的作用范围只是局限于所定义的函数内
D.被调用函数必须位于主函数之前
正确答案:被调用函数必须位于主函数之前
9、对下面程序段的描述正确的是()。#include<;iostream using namespace std; int Fun(int x, int y){ return x+y; }int main(){ int i=10; cout<;<;Fun(i++, i)<;<;endl; return 0; }
A.程序输出结果不能确定
B.程序输出结果是 20
C.程序输出结果是 21
D.程序输出结果是 22
正确答案:程序输出结果是 20
10、下列有关形式参数和实际参数的说法正确的是()。
A.在定义函数时,必须在函数首部指定形参的类型。
B.定义函数指定的形参,会一直占用内存中的存储单元。
C.即便是在发生函数调用时,函数中的形参也不会分配内存单元。
D.一般情况下,在调用函数结束后,形参所占的内存单元不会被释放
正确答案:在定义函数时,必须在函数首部指定形参的类型。
11、若使用一维数组名作为函数实参,则以下正确的说法是()。
A.必须在主调函数中说明此数组的大小
B.实参数组类型与形参数组类型可以不匹配
C.在被调函数中,不需要考虑形参数组的大小
D.实参数组与形参数组名必须一致
正确答案:必须在主调函数中说明此数组的大小
12、以下正确的说法是()。
A.实参和与其对应的形参各占用独立的存储单元
B.实参和与其对应的形参共占用一个存储单元
C.只有当实参和与其对应的形参同名时才共同占用存储单元
D.形参是虚拟的,不占用存储单元。
正确答案:实参和与其对应的形参各占用独立的存储单元
13、以下正确的说法是()。
如果在一个函数的复合语句中定义了一个变量,则该变量()。
A.只在该复合语句中有效
B.在本程序范围内均有效
C.在该函数中有效
D.为非法变量
正确答案:只在该复合语句中有效
第四章单元测试
1、下面关于C++字符数组的叙述中,错误的是()。
A.字符数组可以放字符串
B.字符数组的字符可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D.可以用关系运算符对字符数组比较大小
正确答案:可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
2、若有数组名作为函数调用的实参,则传递给形式参数的是()。
A.数组的首地址
B.数组第1个元素的值
C.数组中全部元素的值
D.数组元素的个数
正确答案:数组的首地址
3、已定义一个数组int x[10];则对此数组元素正确的引用是()。
A.cout<;<;x[10]
B.cout<;<;x[0]
C.int b;b=x[1]+x
D.cout<;<;x[3+7]
正确答案:cout<;<;x[0]
4、假定a为一个整型数组名,则元素a[4]的地址可表示为()。
A.a+4
B.a+8
C.a+16
D.a+32
正确答案:a+4
5、设有数组定义char a[]=";China";则数组a所占的空间字节数为()。
A.4个字节
B.5个字节
C.6个字节
D.7个字节
正确答案:6个字节
6、设有定义语句int a[3][3],则以下叙述错误的是()。
A.a数组可以看成是由a[0]、a[1]、a[2]3个元素组成的一维数组
B.a[0]代表一个地址常量
C.a[1]是由3个整型元素组成的一维数组
D.可以用a[2]=1;的形式给数组元素赋值
正确答案:可以用a[2]=1;的形式给数组元素赋值
7、有如下声明语句int B[3][3]={{1,2,0},{3,2},{4,5,10}};那么B[1][1]的值是()。
A.2
B.3
C.10
D.1
正确答案:2
8、以下对一维数组a的正确定义是()。
A.int n=9, a[n]
B.int a(9)
C.const int N=9; int a[N]
D.int n; cinn; int a[n]
正确答案:const int N=9; int a[N]
9、运行下面程序,程序运行结果是()。#include <;iostreamusing namespace std;int main(){ static int a[4]={7,8,9},b[4]={4,5,6},c[4],i; for(i=0;i<;3;i++) c[i]=a[i]+b[i]; cout<;<;c[i]<;<;"; "; cout<;<;endl; return 0;}
A.0
B.15
C.11 13
D.11 13 15
正确答案:0
10、若有初始化 char a()=";BASIC";则cout<;<;&;a[3];的输出结果是()。
A.';S'
B.';I'
C.输出a[3]的地址
D.";IC"
正确答案:";IC"
11、在C++语言中,引用数组元素时,其数组下标的数据类型允许是()。
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
正确答案:整型常量或整型表达式
12、在C++中一组同样类型的数据在内容中占用连续存贮空间的数据类型是()。
A.指针
B.引用
C.数组
D.指向指针的指针
正确答案:数组
13、运行以下程序的输出结果是()。int f(int b (), int n ){ int i, r = 1;for(i = 0; i<;=n; i++)r = r* b[i];return r;}int main(){ int x, a()={2,3,4,5,6,7,8,9};x = f(a,3);cout<;<;x;return 0;}
A.720
B.120
C.24
D.6
正确答案:120
14、下列do-while 循环的循环次数为().已知:int j=5; do{cout<;<;j- -<;<;endl; j- -; }while(j!=0);
A.0
B.1
C.5
D.无限
正确答案:无限
15、若有定义char str1[10]= {";China";},str2[10];要将str1中的字符串复制到str2中去,正确的方法是().
A.strcpy(str2,str1)
B.strcpy(";China";,str2)
C.strcpy(str1,str2)
D.str2=str1
正确答案:strcpy(str2,str1)
第五章单元测试
1、下面结构体的定义语句中错误的是().
A.struct st{int num,char name[20];} st a
B.struct st{int num,char name[20];} ;st a
C.struct st{int num,char name[20];} a
D.struct {int num,char name[20];} a
正确答案:struct st{int num,char name[20];} st a
2、struct abc{int x;int y;} data1=(2,3),data2;则以下赋值语句中错误的是()。
A.data2(9,10)
B.data2=data1
C.data2.x=data1.x
D.data2.y=data1.y
正确答案:data2(9,10)
3、struct abc{int x;char y[20];double z;} data;则以下给结构体变量成员x赋值语句中正确的是()。
A.*data.x=100
B.data-x=100
C.data.(*x)=100
D.data.x=100
正确答案:data.x=100
4、struct s {int a,b;}
data[2]={10,100,20,200};int main(){s p=data[1];cout<;<;p.a<;<;endl;return 0;}程序运行后的输出结果是()。
A.10
B.11
C.20
D.21
正确答案:20
5、运行程序,程序输出结果是()。#include <;iostreamusing namespace std;int main(){ struct stud{ char num [5]; int s[4]; double ave; } a; cout<;<;sizeof(stud)<;<;endl; return 0;}
A.29
B.30
C.31
D.32
正确答案:32
6、有下列结构体声明语句struct student{int num; char name[20]; float score[3]; };student s[3]={123,";Li Fang";,67,89,90};要对第1个学生的成绩输出总分,下列表达式正确的是().
A.cout<;<;s.score[1]+s.score[2]+s.score[3]
B.cout<;<;s.score[0]+s.score[1]+s.score[2]
C.cout<;<;s[0].score[0]+s[0].score[1]+s[0].score[2]
D.cout<;<;score[0].s[1]+ score[1].s[1]+score[2].s[1]
正确答案:cout<;<;s[0].score[0]+s[0].score[1]+s[0].score[2]
7、定义以下结构体类型,运行程序的输出结果是()。#include <;iostreamusing namespace std;int main(){struct s{int a;double b;};cout<;<;sizeof(s)<;<;endl;return 0;}
A.12
B.14
C.16
D.18
正确答案:16
8、当定义一个结构体变量时,系统为它分配的内存空间是().
A.结构中一个成员所需的内存容量
B.结构中第一个成员所需的内存容量
C.结构体中占内存容量最大者所需的容量
D.结构中各成员所需内存容量之和
正确答案:结构中各成员所需内存容量之和
9、运行程序,程序输出结果为()#include <;iostreamusing namespace std;int main(){ struct s { int x; } a[3]; cout<;<;sizeof(a); return 0;}
A.4
B.12
C.18
D.6
正确答案:12
10、定义以下结构体数组,运行程序,程序输出结果是()。#include <;iostreamusing namespace std;int main(){struct c
{ int x;
int y;
} s[2]={1,3,2,7}; cout<;<;s[0].x*s[1].x<;<;endl;return 0;}
A.2
B.6
C.14
D.21
正确答案:2
11、运行程序,程序运行结果是()#include <;iostreamusing namespace std;struct KeyWord{ char Key[20];
int ID;
} kw[]={";void";,1,";char";,2,";int";,3,";float";,4,";double";,5};int main(){ cout<;<;kw[3].Key[0]<;<; ";,";<;<; kw[3].ID ; return 0;
}
A.i,3
B.f,4
C.n,3
D.l,4
正确答案:f,4
12、#include <;iostreamusing namespace std;struct student
{char name[10];
int score[50];
float average;
} stud1;
int main(){cout<;<;sizeof(student);return 0;}
A.64
B.128
C.216
D.256
正确答案:216
13、运行程序,程序运行结果是()。#include <;iostreamusing namespace std;int main(){struct person{ char name[9]; int age;};person a[5]={";John";,17,";Paul";,19,";Mary";,18,";Adam";,16};cout<;<;a[2].name;return 0;}
A.John
B.Mary
C.Paul
D.Adam
正确答案:Mary
14、运行程序,程序运行结果是()#include <;iostreamusing namespace std;int main(){ struct date{ int year; int month; int day;};struct s{ date birthday; char name[20];
} x[4]={{2008,10,1, ";guangzhou";},{2009,12,25,";Tianjin";}};cout<;<; x[0].name<;<;";,";<;<;x[1].birthday.year<;<;endl;return 0;}
A.guangzhou,2009
B.guangzhou,2008
C.Tianjin,2008
D.Tianjin,2009
正确答案:guangzhou,2009
15、运行程序,程序输出结果是()。#include <;iostreamusing namespace std;struct contry{int num;char name[20];
} x[5]={1,";China";,2,";USA";,3,";France";,4,";Englan";,5,";Spanish";};int main(){int i; for(i=3;i<;5;i++)
cout<;<;x[i].num<;<;";,";<;<;x[i].name[0]<;<;endl;return 0;}
A.3F4E5S
B.4E5S
C.F4E
D.c2U3F4E
正确答案:4E5S
第六章单元测试
1、若有定义语句int c[5],*p=c;则以下对数组c第1个元素地址的正确引用是()。
A.p+5
B.c++
C.&;c+1
D.&;c[0]
正确答案:&;c[0]
2、运行程序,程序输出结果是()。#include <;iostreamusing namespace std;int main(){int a[3][3],*p=&;a[0][0],i;for(i=0;i<;9;i++) p[i]=i;for(i=0;i<;3;i++) cout<;<;a[1][i];return 0;}
A.012
B.123
C.234
D.345
正确答案:345
3、运行程序,程序输出结果是().#include <;iostreamusing namespace std;int main(){int fun(char *s);char y[]=";abcd";cout<;<;fun(y)<;<;endl;return 0;}int fun(char *s){char *t=s;while(*t) t++; return(t-s);}
A.4
B.5
C.6
D.0
正确答案:4
4、int a[]={1,2,3,4},y,*p=a;执行语句y=(*++p)- - 后,数组a中的元素的值变为().
A.0,1,3,4
B.1,1,3,4
C.1,2,2,4
D.1,2,3,3
正确答案:1,1,3,4
5、运行程序,程序输出结果是()。#include <;iostreamusing namespace std;int main(){char str[100]=";program";,*p=str;cout<;<;(p+2)<;<;endl;return 0;}
A.ogram
B.p
C.rogram
D.pro
正确答案:ogram
6、运行程序,程序输出结果是()。#include <;iostreamusing namespace std;int main(){char str[100]=";program";,*p=str;cout<;<;*(p++)<;<;endl;return 0;}
A.r
B.p
C.rogram
D.pro
正确答案:p
7、运行程序,程序输出结果是().#include <;iostreamusing namespace std;int main(){char str[100]=";program";,*p=str;str[3]=0; cout<;<;p<;<;endl; return 0;}
A.ogram
B.r
C.o
D.pro
正确答案:pro
8、若有变量定义语句int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是().
A.*p+6
B.*(p+5)
C.*p+=6
D.p+5
正确答案:*(p+5)
9、己知int a[10]={3,7,9,15},*p=a;则不能表示a数组中元素的选项是().
A.*a
B.*p
C.a
D.a[p-a]
正确答案:a
10、己知int a[]={0,2,4,6,8,10},*p=a+1;其值等于0的表达式是().
A.*(p++)
B.*(++p)
C.*(p--)
D.*(--p)
正确答案:*(--p)
11、运行程序,程序运行结果是()。#include <;iostreamusing namespace std;int main(){static int a[4]={7,8,9},b[4]={4,5,6},c[4],i; for(i=0;i<;3;i++) c[i]=a[i]+b[i]; cout<;<;c[i]<;<;"; "; cout<;<;endl;return 0;}
A.0
B.15
C.11 13
D.11 13 15
正确答案:0
12、运行程序,程序运行结果是().#include <;iostreamusing namespace std;int main(){ char a[3]={';a';,';b';,';c';},*p=a+1; cout<;<;p<;<;endl; return 0;}
A.b
B.bc
C.abc
D.不确定
正确答案:不确定
13、运行程序,程序运行结果是()。#include <;iostream#include <;stringusing namespace std;int main(){ string a=";string";,*p=&;a; cout<;<;p<;<;endl; return 0;}
A.s
B.string
C.变量a的地址
D.变量p的地址
正确答案:变量a的地址
14、设void f1(int *m,long &;n);int a;
long b;则以下调用合法的是()。
A.f1(a,b)
B.f1(&;a,b)
C.f1(a,&;b)
D.f1(&;a,&;b)
正确答案:f1(&;a,b)
15、运行程序,程序运行结果是()。#include <;iostreamusing namespace std;void f(char *x){cout<;<;*x<;<;endl;}int main(){ char a()=";abcd"; for(int i=0;i<;=2;i++); f(a+i); return 0;}
A.a
B.abcd
C.abc
D.d
正确答案:d
16、已知:int m=5;下列表示引用的方法中正确的是().
A.int &;Z
B.int &;t=5
C.int &;X=m
D.float &;f=&;m
正确答案:int &;X=m
17、运行程序,程序输出结果是().void sub(int *s, int *y ){ static int t=3; *y=s[t]; t - -;}int main(){ int a()={1,2,3,4}, i , x=0;for(i = 0; i<;4; i++)
{ sub(a,&;x ) ; cout<;<;x;}cout<;<;endl;return 0;}
A.4321
B.1234
C.0000
D.4444
正确答案:4321
18、已知有定义int a[5]; a数组中最后一个元素的地址可表示为().
A.&;a+4
B.a+5
C.a+4
D.&;a[5]
正确答案:a+4
19、有定义 int a()={2,5,6,},*p=a; 则*(p+1)所代表的数组元素是()。
A.a[3]
B.a[2]
C.a[1]
D.a[0]
正确答案:a[1]
20、已有定义 int a[10],*p; 则正确的赋值语句是().
A.p=100
B.p=a[5]
C.p=a[2]+2
D.p=a+2
正确答案:p=a+2
第七章单元测试
1、在下列关于类概念的各个描述中,()是错误的。
A.客观世界中任何一个具体的物体都可以看成一个类
B.类是创建对象的样板
C.类是对象的模板,是用来定义对象的一种抽象类型
D.类是抽象的,对象是具体的
正确答案:客观世界中任何一个具体的物体都可以看成一个类
2、在下列关于类和对象的描述中,()是错误的。
A.把某些具有共同属性和行为的对象抽象为一种类型被称为类
B.客观世界中任何一个具体的物体都可以看成一个对象
C.类是抽象的,对象是具体的,两者都占有内存空间
D.类是对象的模板,对象是类的实例
正确答案:类是抽象的,对象是具体的,两者都占有内存空间
3、类的实例化是指()。
A.定义类
B.创建类的对象
C.指明具体类
D.调用类
正确答案:创建类的对象
4、下列说法中正确的是()。
A.类的成员函数只能在类体中(类内)定义
B.类的成员函数既可以定义在类体中(类内),也可以定义在类体外(类外),但必须在类体中(类内)声明
C.在类体之外定义的成员函数不能操作该类的私有数据成员
D.类中的成员数据可以在类体中(类内)定义,也可以在类体之外(类外)定义
正确答案:类的成员函数既可以定义在类体中(类内),也可以定义在类体外(类外),但必须在类体中(类内)声明
5、关于构造函数不正确的说法是()。
A.构造函数可以有返回值
B.一个类可以有多个构造函数
C.构造函数名与类名相同
D.构造函数初始化时为对象开辟内存空间
正确答案:构造函数可以有返回值
6、有如下定义和语句class calc{publi
C.void show() { cout<;<;a<;<;";+";<;<;b<;<;";=";<;<;a+b<;<;endl; }privat
E.int a; int b; void set() { cinab; }};calc t, *pt=&;t;在main()函数中下面不正确的语句是()。
A.pt-show()
B.t.show()
C.t.set()
D.(*pt).show()
正确答案:t.set()
7、有如下定义和语句:class Student{publi
C.void display(){ cout<;<;num<;<;"; ";<;<;name; };privat
E.int num; char name[30];} ;Student t, *p = &;t;下面正确的语句是()。
A.p-display()
B.t-display()
C.p- num = 10101
D.(*p)- display()
正确答案:p-display()
8、要让一个类中的所有对象的同一数据有不同的值,请不要使用()。
A.私有数据成员
B.静态数据成员
C.公有数据成员
D.保护数据成员
正确答案:静态数据成员
9、下面选项中不属于面向对象程序设计特征的是()。
A.继承性
B.抽象性
C.多元性
D.封装性
正确答案:多元性
10、已知类A是类B的友元,类B是类C的友元,则()。
A.类A一定是类C的友元
B.类C一定是类A的友元
C.类C的成员函数可以访问类B的对象的任何成员
D.类A的成员函数可以访问类B的对象的任何成员
正确答案:类A的成员函数可以访问类B的对象的任何成员
11、成员函数是一个类的成员,出现在类体中,也就是只能被类内其他成员函数调用。
A.正确
B.错误
正确答案:错误
12、通过对象无法访问private和protected属性的成员变量和成员函数,而仅可以访问public属性的成员变量和成员函数。
A.正确
B.错误
正确答案:正确
13、在C++语言中,可以通过传值方式作为函数的参数或函数返回值。
A.正确
B.错误
正确答案:正确
14、构造函数可以有返回值也可以无返回值。
A.正确
B.错误
正确答案:错误
15、构造函数可以有一个参数或多个参数,可以为参数设置一个默认值。
A.正确
B.错误
正确答案:正确
16、任何一个对象只能属于一个具体的类。
A.正确
B.错误
正确答案:正确
17、声明时加关键字static的类中所有的成员数据是属于类的,任何一个对象都可以共享该成员数据。
A.正确
B.错误
正确答案:正确
18、友元函数是成员函数,友元函数可以访问类中的私有成员。
A.正确
B.错误
正确答案:错误
19、无论什么方式的继承,基类的私有成员都不能被派生类成员函数访问(引用)。
A.正确
B.错误
正确答案:正确
20、成员函数代码量很多,或具有多个成员函数,采用类内定义的方式比较合适。
A.正确
B.错误
正确答案:错误
第八章单元测试
1、下列对派生类的描述中,错误的是()。
A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的成员除了它自己的成员之外,还包含了它的基类的成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
正确答案:派生类中继承的基类成员的访问权限到派生类保持不变
2、下列有关继承和派生的叙述中,不正确的是()。
A.派生类继承了基类的所有数据成员和成员函数
B.派生类可以继承到基类成员的基础上增加新的成员
C.一个基类只能派生出一个派生类
D.每一个派生类又可以作为基类再派生出新的派生类
正确答案:一个基类只能派生出一个派生类
3、下列有关继承和派生的叙述中,不正确的是()。
A.一个派生类不仅可以从一个基类派生,也可以从多个基类派生
B.一个派生类不能作为基类再派生出新的派生类
C.一个基类可以派生出多个派生类
D.派生类继承了基类的所有数据成员和成员函数
正确答案:一个派生类不能作为基类再派生出新的派生类
4、下列对派生类的描述中,错误的是()。
A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的缺省(默认)继承方式是private
D.派生类只继承了基类的公有成员和保护成员
正确答案:派生类只继承了基类的公有成员和保护成员
5、下列有关继承和派生的叙述中,不正确的是()。
A.基类的成员函数可以访问基类成员
B.派生类的成员函数可以访问派生类自己增加的成员
C.基类的成员函数可以访问派生类的成员
D.派生类的新增公用成员可以被该类创建的对象引用
正确答案:基类的成员函数可以访问派生类的成员
6、下列有关公共继承的继承和派生的关系描述中,不正确的是()。
A.基类的公用成员和保护成员在派生类中仍然保持其公用成员和保护成员的属性
B.基类的私有成员,基类的成员函数可以引用它
C.基类的私有成员,因为是公用继承,可以被派生类的新增成员函数引用
D.派生类的公用成员可以被派生类创建的对象引用
正确答案:基类的私有成员,因为是公用继承,可以被派生类的新增成员函数引用
7、下列有关继承和派生的叙述中,正确的是()。
A.派生类成员函数不能访问通过私有继承的基类的保护成员
B.私有继承的派生类作为基类继续派生,下一层的派生类无法访问它的任何成员
C.基类的公用成员在派生类中仍然是公用成员
D.基类的保护成员在派生类中仍然是保护成员
正确答案:私有继承的派生类作为基类继续派生,下一层的派生类无法访问它的任何成员
8、下列有关保护继承的继承和派生的叙述中,正确的是()。
A.派生类成员函数不能访问通过保护继承的基类的保护成员
B.派生类成员函数不能访问通过保护继承的基类的私有成员
C.派生类成员函数不能访问通过保护继承的基类的公有成员
D.基类的私有成员在派生类中变为是保护成员
正确答案:派生类成员函数不能访问通过保护继承的基类的私有成员
9、下列有关继承和派生的叙述中,正确的是()。
A.派生类构造函数可以被继承,派生类析构函数不能被继承
B.派生类析构函数可以被继承,派生类构造函数不能被继承
C.派生类构造函数的总参数表列中的参数,应当包括基类构造函数和子对象的参数表列中的参数
D.在执行派生类的构造函数时,调用基类的构造函数就可以对子对象初始化
正确答案:派生类构造函数的总参数表列中的参数,应当包括基类构造函数和子对象的参数表列中的参数
10、下列有关继承和派生的叙述中,正确的是()。
A.基类的指针变量可以指向派生类对象
B.派生类的指针变量可以指向基类对象
C.基类的指针变量,可以访问派生类新增加的成员
D.派生类的指针变量,可以访问基类的成员
正确答案:基类的指针变量可以指向派生类对象
11、一个派生类不仅可以从一个基类派生,也可以从多个基类派生。
A.正确
B.错误
正确答案:正确
12、继承方式包括:public(公用的), private(私有的)和protected(受保护的),应用中public(公用的)最常见。
A.正确
B.错误
正确答案:正确
13、当不需要对派生类新增的成员进行任何初始化操作时,派生类构造函数的函数体可以为空,即构造函数是空函数。
A.正确
B.错误
正确答案:正确
14、在派生时,派生类不能继承基类的析构函数。
A.正确
B.错误
正确答案:正确
15、派生类的指针变量也可以指向基类对象。
A.正确
B.错误
正确答案:错误
16、派生类的继承方式有两种:公有继承和私有继承。
A.正确
B.错误
正确答案:错误
17、在公有继承中,派生类对象只能引用基类中的公有成员和派生类新增的公共成员。
A.正确
B.错误
正确答案:正确
18、在私有继承中,基类中只有公有成员可以被派生类成员函数引用。
A.正确
B.错误
正确答案:错误
19、派生类是它的基类的组合。
A.正确
B.错误
正确答案:错误
20、析构函数不能被继承。
A.正确
B.错误
正确答案:正确
第九章单元测试
1、下列描述中,() 是抽象类的特性。
A.可以声明虚函数
B.可以进行构造函数重载
C.可以定义友元函数
D.不能创建其对象
正确答案:不能创建其对象
2、关于虚函数的描述中,()是正确的。
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数
D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
正确答案:基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数
3、实现运行时的多态性采用()。
A.重载函数
B.构造函数
C.析构函数
D.虚函数
正确答案:虚函数
4、以下基类中的成员函数表示纯虚函数的是()。
A.virtual void tt()=0
B.void tt(int)=0
C.virtual void tt(int)
D.virtual void tt(int){}
正确答案:virtual void tt()=0
5、关于纯虚函数和抽象类的描述中,()是错误的。
A.纯虚函数是一种特殊的虚函数,它不能实例化对象
B.抽象类是指具有纯虚函数的类
C.一个基类中声明有纯虚函数,该基类的派生类一定不再是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
正确答案:一个基类中声明有纯虚函数,该基类的派生类一定不再是抽象类
6、下列有关C++的面向对象方法的多态的概念的叙述中,不正确的是()。
A.C++的面向对象方法的多态,必须存在基类指针指向派生类对象
B.存在基类类型的指针指向派生类对象,且通过该指针调用虚函数
C.存在基类类型的指针指向派生类对象,基类和派生类的同名虚函数的参数必须相同
D.必须存在着声明为虚函数的友元函数
正确答案:必须存在着声明为虚函数的友元函数
7、执行以下程序代码后,将会输出的结果是()。#include<;iostreamusing namespace std;class Base{publi
C.void display(){cout<;<;";I';m Base class!";}};class Derive
D.public Base{publi
C.void display(){cout<;<;";I';m Derived class!";}};int main(){ Base * p; Derived test; p = &;test; p-display(); return 0;}
A.I';m Base class!
B.I';m Derived class!
C.I';m Derived class! I';m Base class!
D.I';m Base class! I';m Derived class!
正确答案:I';m Base class!
8、下列有关C++的面向对象方法的多态和虚函数的叙述中,正确的是()。
A.基类析构函数可以声明为虚函数
B.派生类的析构函数可以声明为虚函数
C.构造函数和析构函数都不能声明为虚函数
D.构造函数和析构函数都能声明为虚函数
正确答案:基类析构函数可以声明为虚函数
9、如果一个类至少有一个纯虚函数,那么就称该类为()。
A.抽象类
B.虚函数
C.派生类
D.都不对
正确答案:抽象类
10、下列有关C++的面向对象方法的多态和虚函数的叙述中,不正确的是()。
A.包含纯虚成员函数的类即为抽象基类
B.抽象基类不能实例化
C.抽象基类的派生类,增加新的成员函数或成员数据后,可以用于创建对象
D.包含纯虚成员函数的抽象基类的派生类,在派生类中可以重新定义纯虚函数为非纯虚成员函数
正确答案:抽象基类的派生类,增加新的成员函数或成员数据后,可以用于创建对象
11、类的成员函数前面加virtual关键字,则这个成员函数称为虚函数。
A.正确
B.错误
正确答案:正确
12、虚函数是一个成员函数。
A.正确
B.错误
正确答案:正确
13、要想形成多态必须具备必须存在继承关系,继承关系中必须有同名的虚函数,并且基类和派生类的同名虚函数的参数必须不同。
A.正确
B.错误
正确答案:错误
14、将基类中的成员函数通过virtual关键字声明为虚函数之后,即使在派生类中同名同参数函数声明时未加上virtual关键字,但它在所有的派生类中都将自动成为虚函数。
A.正确
B.错误
正确答案:正确
15、纯虚函数是一个非成员函数。
A.正确
B.错误
正确答案:错误
16、析构函数必须声明为虚函数。
A.正确
B.错误
正确答案:错误
17、含有纯虚函数的类可以定义对象。
A.正确
B.错误
正确答案:错误
18、纯虚成员函数可以被派生类继承,如果派生类不重新定义抽象基类中的所有纯虚成员函数,则派生类同样会成为抽象基类,因而也不能用于创建对象。
A.正确
B.错误
正确答案:正确
19、如果派生类的成员函数的原型(函数的首部)与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。
A.正确
B.错误
正确答案:正确
20、纯虚函数是一个在基类中声明的没有具体内容的虚函数,为了实现多态(或接口功能),要求派生类定义自己的版本。
A.正确
B.错误
正确答案:正确
第十章单元测试
1、下列运算符中,()运算符在C++中不能重载。
A.+=
B.+
C.::
D.()
正确答案:::
2、利用成员函数重载运算符:obj1*obj2被编译器解释为()。
A.operator *(obj1,obj2)
B.*(obj1,obj2)
C.obj2.operator *(obj1)
D.obj1.operator *(obj2)
正确答案:obj1.operator *(obj2)
3、如果对TA类对象使用逻辑运算符“==”重载,以下函数声明正确的是()。
A.void &; T
A.:operator==(const TA &;a)
B.TA &; T
A.:operator==(const TA &;a)
C.bool &; T
A.:operator==(const TA &;a)
D.bool T
A.:operator==(const TA &;a)
正确答案:bool T
A.:operator==(const TA &;a)
4、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。
A.作为友元函数重载的单目运算符
B.作为成员函数重载的单目运算符
C.作为友元函数重载的双目运算符
D.作为成员函数重载的双目运算符
正确答案:作为成员函数重载的单目运算符
5、在语句int n; cinn;中,cin是()。
A.变量名
B.对象名
C.函数名
D.类名
正确答案:对象名
6、关于运算符重载,下列表述中错误的是()。
A.C++已有的大部分运算符都可以重载
B.运算符函数的返回类型不能声明为基本数据类型
C.C++中的运算符不能做多次重载定义
D.不可以通过运算符重载来创建C++中原来没有的运算符
正确答案:运算符函数的返回类型不能声明为基本数据类型
7、C ++流中重载的运算符<;<;是一个()。
A.用于输出操作的非成员函数
B.用于输出操作的成员函数
C.用于输入操作的非成员函数
D.用于输入操作的成员函数
正确答案:用于输出操作的非成员函数
8、若要对BigData类中用成员函数方式重载取模运算符,下列声明选项中正确的是()。
A.BigData %(const BigData)
B.BigData operator%(const BigData)
C.BigData % operator(const BigData)
D.operator %(BigData, BigData)
正确答案:BigData operator%(const BigData)
9、下列运算符中哪些是不能够被重载的()。
A.[], %, <;=, --
B.*=,++,delete,=
C.–*, .*, sizeof, ::, ? :
D.+=,new,/=,= =
正确答案:–*, .*, sizeof, ::, ? :
10、下面是重载为非成员函数的运算符的函数原型,其中错误的是()。
A.BigInt operator +(BigInt, BigInt)
B.BigInt&; operator =(BigInt&;, BigInt)
C.BigInt operator -(BigInt,BigInt)
D.BigInt&; operator *(BigInt, BigInt)
正确答案:BigInt&; operator =(BigInt&;, BigInt)
11、如果表达式a=b,中的“=”是作为非成员函数重载的运算符,则可以等效地表示为()。
A.
A.operator=(b)
B.
A.operator=(a)
C.operator=(a, b)
D.
A.operator=(b, a)
正确答案:operator=(a, b)
12、在名为BigNumber类的类体中对运算符函数double进行如下声明:operator double(BigNumber); 函数声明中有一个明显的错误,这个错误就是()。
A.参数表中不应该有任何参数
B.缺少对函数返回类型的说明
C.参数声明中缺少参数变量
D.函数声明中缺少函数体
正确答案:参数表中不应该有任何参数
13、下列关于运算符重载的描述中,正确的是()。
A.运算符重载成为成员函数时,若参数表中无参数,重载是一元运算符
B.一元运算符只能作为成员函数重载
C.二元运算符重载成为非成员函数时,参数表中有一个参数
D.C++中可以重载所有的运算符
正确答案:运算符重载成为成员函数时,若参数表中无参数,重载是一元运算符
14、下列关于运算符重载的描述中,()是正确的。
A.运算符重载可以改变操作数的个数
B.运算符重载可以改变优先级
C.运算符重载可以改变结合性
D.运算符重载不可以改变语法结构
正确答案:运算符重载不可以改变语法结构
15、下列关于C++流的叙述中,下面说法正确的是()。
A.cin是C++预定义的标准输入流函数
B.cin是C++预定义的标准输入流类
C.cin是C++预定义的标准输入流对象
D.以上答案都不对
正确答案:cin是C++预定义的标准输入流对象
16、若要在Vector类中将*重载为一元运算符,下列重载函数声明中肯定有错的是()。
A.Vector operator *()
B.Vector operator *(Vector)
C.int operator *(Vector)
D.Vector operator *(Vector, Vector)
正确答案:Vector operator *(Vector, Vector)
17、重载流插入运算符<;<;时,下列设计不合理的是()。
A.为运算符函数设置两个参数
B.将运算符函数的第一个参数设为ostream &
C.将运算符定义为类的成员函数
D.将运算符函数的返回值类型设为ostream &
正确答案:将运算符定义为类的成员函数
18、若为类MyNumber重载运算符“/”,下列声明中,错误的是()。
A.friend MyNumber operator/(int, float)
B.friend MyNumber operator/(float, MyNumber)
C.friend MyNumber operator/(MyNumber, int)
D.friend MyNumber operator/(MyNumber, MyNumber)
正确答案:friend MyNumber operator/(int, float)
19、运算符重载时以下性质不一定会保持的是()。
A.返回值类型、操作数类型
B.操作数的个数、优先级
C.优先级、结合性
D.操作数的个数、结合性
正确答案:返回值类型、操作数类型
20、以下类中说明了“++”运算符重载函数的原型。
class TA
{ publi
C.
......
friend TA operator ++(TA &;);};编译器把表达式”++d”解释为:()。
A.d.operator++()
B.d.operator++(d)
C.operator++()
D.operator++(d)
正确答案:operator++(d)
第十一章单元测试
1、C++程序进行文件的输入,除了包含头文件iostream外,还要包含头文件()。
A.ifstream
B.fstream
C.ostream
D.cstdio
正确答案:ifstream
2、C++语言中,程序通过操纵符进行格式输出处理时,必须包含的头文件是()。
A.iostream.h
B.fstream.h
C.iomanip.h
D.stdlib.h
正确答案:iomanip.h
3、下列输出语句中,不正确的是()。
A.cout<;<;’\t\n ’
B.cout<;<;0x20
C.cout.put(';O';)
D.cout<;<;’A’
正确答案:cout<;<;’\t\n ’
4、在ios中提供控制格式的标志位中,转换为十六进制形式的标志位是()。
A.oct
B.hex
C.left
D.dec
正确答案:hex
5、在执行语句int n,m; cinnm;中,输入数据的分隔符,错误的是()。
A.空格
B.Tab键
C.换行符
D.分号
正确答案:分号
6、磁盘文件操作中,打开磁盘文件的访问方式常量中,以二进制方式打开文件的是()。
A.ios::in
B.ios::out
C.ios::binary
D.ios::ate
正确答案:ios::binary
7、C ++流中运算符是一个()。
A.用于输出操作的非成员函数
B.用于输出操作的成员函数
C.用于输入操作的非成员函数
D.用于输入操作的成员函数
正确答案:用于输入操作的非成员函数
8、执行以下C++程序:char *num; cinnum; cout<;<;num; 若输入:Number = 1681↙ 则输出()。
A.1681
B.Number = 1681
C.Number
D.输出出错
正确答案:Number = 1681
9、在C ++流中操纵符中,设置域宽的是()。
A.ate
B.left
C.setfill()
D.setw()
正确答案:setw()
10、当使用 ofstream 定义一个文件流,通过打开一个文件与之连接,系统默认的打开方式为()。
A.ios::in
B.ios::out
C.ios::trunc
D.ios::binary
正确答案:ios::out
11、关于输入流类成员函数getline()的下述描述中,错误的是()。
A.该函数是用来从键盘上读取字符串的。
B.该函数读取字符串时,可以包含空格。
C.该函数读取字符串时遇到终止符便停止。
D.该函数读取的字符串长度是受限制的。
正确答案:该函数读取字符串时,可以包含空格。
12、从输入文件中读取若干字节存于一个整形变量n,正确的语句为()。
A.infile.read(reinterpret()cast<;const int *(&;n), sizeof(n))
B.infile read((const int *)(&;n), sizeof(n))
C.infile read(reinterpret()cast<;int *(&;n), sizeof(n))
D.infile read((int *)n, sizeof(n))
正确答案:infile read(reinterpret()cast<;int *(&;n), sizeof(n))
13、以下程序执行结果()。
………
cout.fill(‘*’);cout.width(10);cout<;<;setiosflags(ios::right)<;<;188.666。
A.***188.666
B.188.666000
C.188.666***
D.188.666
正确答案:***188.666
14、要求打开文件
F.\myfile.dat,并能够写入数据,正确的语句是()。
A.ifstream infile(";
F.\\myfile.dat";, ios::in)
B.ifstream infile(";
F.\\myfile.dat ";, ios::out)
C.ofstream outfile(";
F.\\myfile.dat ";, ios::in)
D.fstream infile(";
F.\\myfile.dat ";, ios::in | ios::out)
正确答案:fstream infile(";
F.\\myfile.dat ";, ios::in | ios::out)
15、设己定义浮点型变量 data,以二进制方式把 data 的值写入输出文件流对象 outfile, 正确的语句是()。
A.outfile.write((double*)&;data, sizeof(double))
B.outfile.write((double*)&;data, data)
C.outfile.write((char*)&;data, sizeof(double))
D.outfile.write((char*)&;data, data)
正确答案:outfile.write((char*)&;data, sizeof(double))
第十二章单元测试
1、下列关于异常的叙述,错误的是()。
A.程序语法错误不属于异常
B.程序运行中,数组越界不属于异常
C.除以零的操作属于异常
D.程序运行中,硬件故障属于异常
正确答案:程序运行中,数组越界不属于异常
2、下列不属于异常处理机制的组成部分的是()。
A.throw(抛出)
B.try(检查)
C.catch(捕获)
D.debug(调试)
正确答案:debug(调试)
3、下列关于异常处理的叙述,错误的是()。
A.try和catch块中必须要用花括号括起来,即使花括号内只有一个语句也不能省略花括号
B.如果throw不包括任何表达式,表示它把当前正在处理的异常信息再次抛出,传给其上一层的catch来处理
C.C++中一旦抛出一个异常,如果程序没有任何的捕获,那么系统将会自动调用一个系统函数terminate,由它调用abort函数终止程序
D.异常处理方法优点在于把异常触发和处理机制统一,使得它们可以在同一个函数中处理。
正确答案:异常处理方法优点在于把异常触发和处理机制统一,使得它们可以在同一个函数中处理。
4、下列关于异常处理的叙述,错误的是()。
A.catch(…)语句可捕获任何类型的异常
B.一个try语句可以有多个catch语句
C.catch(…)语句可以放在catch语句组的中间
D.程序中try语句与catch语句是一个整体,缺一不可
正确答案:catch(…)语句可以放在catch语句组的中间
5、下列关于异常处理的叙述,错误的是()。
A.如果抛出的异常一直没有函数捕获(catch),则会一直上传到c++运行系统那里,导致整个系统的终止。
B.异常处理仅仅通过类型而不是通过值来匹配的,所以catch块的参数可以没有参数名称。
C.函数原型中的异常说明要与实现中的异常说明一致,否则容易引起异常冲突。
D.一般在异常抛出后资源可以正常被释放,但注意如果在类的构造函数中抛出异常,系统是不会调用它的析构函数的。
正确答案:如果抛出的异常一直没有函数捕获(catch),则会一直上传到c++运行系统那里,导致整个系统的终止。