智慧树知到《C-C++程序设计》章节测试答案
智慧树知到《C-C++程序设计》章节测试答案
第一章单元测试
1、第一个高级语言Fortran出现在()年
A.1956
B.1950
C.1954
D.1946
正确答案:1954
2、下列关于计算机语言的叙述中,正确的是()
A.C语言属于高级语言
B.高级语言的源程序可以被计算机直接执行
C.机器语言是与所有机器无关的语言
D.在计算机语言中,只有机器语言属于低级语言
正确答案:C语言属于高级语言
3、源程序test.c经编译产生的目标文件和连接后产生的可执行文件是()
A.test.bak和test.obj
B.test.obj和test.exe
C.test.bak和test.exe
D.test.exe 和test.c
正确答案:test.obj和test.exe
4、在算法的流程图表示中,菱形表示()
A.算法条件的转移操作
B.算法的输入/输出操作
C.算法的各种处理功能
D.算法的开始与结束
正确答案:算法条件的转移操作
5、关于结构化程序设计阐述正确的是()
A.结构化程序设计方法不一定能提高软件开发效率
B.采用结构化程序设计方法,可以把一个模块的功能逐步分解细化
C.结构化程序设计中使用循环结构,可以无限循环
D.结构化程序设计中使用顺序结构,可以不按各个模块出现的先后顺序进行程序执行
正确答案:采用结构化程序设计方法,可以把一个模块的功能逐步分解细化
第二章单元测试
1、以下定义语句中正确的是()
A.float *a,b=&;a
B.float a=b=10.0
C.char a=';A'; b=';B'
D.int a=10, *b=&;a
正确答案:int a=10, *b=&;a
2、下列选项中,不能用作标识符的是()
A.int()2()
B.()1()2
C.2()int()
D.()1234()
正确答案:2()int()
3、有以下定义语句double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是()
A.w=a==b
B.a=a+b=b++
C.w%((int)a+b)
D.(c+w)%(int)a
正确答案:(c+w)%(int)a
4、有以下程序:main(){int m=3,n=4,x;;x=-m++;;x=x+8/++n;;printf{";%d";,x);}程序运行后的输出结果是()
A.-2
B.-1
C.3
D.5
正确答案:-2
5、表达式3.6-5/2+1.2+5%2的值是()
A.3.3
B.4.3
C.3.8
D.4.8
正确答案:3.8
第三章单元测试
1、下列语句中符合C语言语法的赋值语句是()
A.a=7+b++=a+7
B.a=7+b+c=a+7
C.a=7+b,b++,a+7
D.a=7+b,c=a+7
正确答案:a=7+b,c=a+7
2、下面程序的输出是()main(); { int x=10,y=3;; printf(";%d";,y=x/y);}
A.1
B.3
C.0
D.不确定的值
正确答案:3
3、下面程序的输出是(); main();{ ;int x=023;21; printf(%d";,--x);; }。
A.23
B.18
C.24
D.17
正确答案:18
4、设有如下程序段:int x=2002, y=2003;printf(";%d";,(x,y));则以下叙述中正确的是()
A.运行时产生出错信息
B.输出值为2003
C.输出值为2002
D.输出语句中格式说明符的个数少于输出项的个数,不能正确输出
正确答案:输出值为2003
5、有定义语句:int x, y;,若要通过scanf(";%d,%d";,&;x,&;y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是()
A.11,<;空格>;12<;回车>
B.11 12<;回车>
C.11,<;回车>;12<;回车>
D.11,12,<;回车>
正确答案:11 12<;回车>
第四章单元测试
1、关于C语言逻辑值的说法错误的是()
A.逻辑值以整型类型保存
B.C语言中没有逻辑数据类型
C.逻辑值只有两个值,表示为1和0
D.C语言中有逻辑数据类型
正确答案:C语言中有逻辑数据类型
2、下列运算符中优先级最低的是()
A.||
B.<;=
C.+
D.!=
正确答案:||
3、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为()
A.算术运算、赋值运算、关系运算
B.关系运算、赋值运算、算术运算
C.关系运算、算术运算、赋值运算
D.算术运算、关系运算、赋值运算
正确答案:算术运算、关系运算、赋值运算
4、以下关于if语句的错误描述是()
A.条件表达式的括号不能省
B.条件表达式只能是关系表达式或逻辑表达式
C.与else配对的if语句是其之前最近的未配对的if语句
D.条件表达式可以是任意的表达式
正确答案:条件表达式只能是关系表达式或逻辑表达式
5、main(){ int x=0,a=0,b=0;switch(x){case 0:;b++;case 1:;a++;case 2:;a++;b++;}printf(“a=%d,b=%d”,a,b);}该程序的输出结果是()
A.a=2,b=2
B.a=2,b=1
C.a=1,b=1
D.a=1,b=0
正确答案:a=2,b=2
第五章单元测试
1、对于do...while语句,下列说法中正确的是()。
A.用do...while语句可实现分支程序设计
B.当循环条件不成立时,至少也要执行一次循环体
C.do...while与while结构完全相同
D.当循环条件不成立时,一次也不执行循环体
正确答案:当循环条件不成立时,至少也要执行一次循环体
2、下列程序段执行时,若从键盘输入23,则输出为()int c,num;scanf(";%d";,&;num);do{c=num%10;printf(";%d";,c);;num=num/10;}while(num>;0);printf("; ";)。
A.2, 3
B.3
C.2
D.3,2
正确答案:3,2
3、有以下程序main(){ ;int i,s=0;;for(i=1;i<;10;i++) ;s=s+i;;printf(“%d”,s);}程序执行后的输出结果是()
A.自然数1~9的累加和
B.自然数1~10中的偶数之和
C.自然数1~9中的奇数之和
D.自然数1~10的累加积
正确答案:自然数1~9的累加和
4、若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是()for (i=5;i;i--)for(j=0;j<;4;j++){...}
A.20
B.30
C.24
D.25
正确答案:25
5、有以下程序段int k = 10 ;while(k == 0 ) ;k = k - 1 ;则下面描述中正确的是()
A.循环体语句执行一次
B.循环体语句一句也不执行
C.while循环执行10次
D.循环是无限循环
正确答案:循环体语句一句也不执行
第六章单元测试
1、C语言中,下列不合法的字符常量是()
A.‘ÿ’
B.‘5’
C.‘8’
D.‘&;’
正确答案:‘8’
2、有以下程序main(){ ;char a,b,c,d;;scanf{";%c,%c,%d,%d";,&;a,&;b,&;c,&;d);;printf{";%c,%c,%c,%c ";,a,b,c,d);}若运行时从键盘上输入:6,5,65,66 <;回车>; 。则输出结果是()
A.6,5,6,5
B.6,5,A,B
C.6,5,65,66
D.6,5,6,6
正确答案:6,5,A,B
3、有定义语句:int b;char c[10];, 则正确的输入语句是()
A.scanf(";%d%s";,&;b,&;c)
B.scanf(";%d%s";,b,c)
C.scanf(";%d%s";,&;b,c)
D.scanf(";%d%s";,b,&;c)
正确答案:scanf(";%d%s";,&;b,c)
4、以下程序运行后的输出结果是()。;main();{ char c1,c2;;for(c1=';0';,c2=';5';c1<;c2;c1++,c2--) printf(";%c%c";,c1,c2);;printf("; ";);;}
A.012345
B.035241
C.051423
D.543210
正确答案:051423
5、已知字符A的ASCII代码值为65, 以下程序运行时若从键盘输入:B33<;回车>;。则输出结果是()。;#include <;stdio.h>;;main();{ char a,b;;a=getchar();scanf(";%d";,&;b);;a=a-';A';+';0'; b=b*2;printf(";%c %c";a,b);}
A.1 B
B.2 A
C.1 A
D.2 B
正确答案:1 B
第七章单元测试
1、#include<;stdio.h>;;func(int x) { ;x=10;;printf(“%d, ”,x); };main();{ ;int x=20;;func(x);;printf(“%d”, x); }运行结果为()
A.10, 20
B.20,10
C.10, 10
D.20, 20
正确答案:10, 20
2、有以下程序int f(int a){ return a%2;}main(){ int s[8]={1,3,5,2,4,6},i,d=0;;for(i=0;f(s[i]);i++)d+=s[i];;printf(";%d";,d);}程序运行后的输出结果是()
A.11
B.19
C.21
D.9
正确答案:9
3、#include <;stdio.h>;void main(){;int max(flaot x, float y);; float a, b;; int c;; scanf(“%f,%f”, &;a, &;b);; c=max(a, b);; printf(“Max is %d”, c);}int max(float x, float y){;float z;;z = x >; y ? x :y;;return z;}函数max的返回值是什么数据类型()
A.int
B.void
C.无返回值
D.float
正确答案:int
4、以下叙述中正确的是()
A.任何存储类的变量在未赋初值时,其值都是不确定的
B.局部交量说明为static存储类,其生存期将得到延长
C.全局变量说明为static存储类,其作用域将被扩大
D.形参可以使用的存储类说明符与局部变量完全相同
正确答案:局部交量说明为static存储类,其生存期将得到延长
5、程序中对fun函数有如下说明void *fun();此说明的含义是()
A.fun函数的返回值是无值型的指针类型
B.fun函数的返回值可以是任意的数据类型
C.指针fun指向一个函数,该函数无返回值
D.fun函数无返回值
正确答案:fun函数的返回值是无值型的指针类型
第八章单元测试
1、“&;”称为取地址运算符
A.正确
B.错误
正确答案:正确
2、以下程序段的输出结果是()
int *var,ab;ab=100;; var=&;ab;; ab=*var+10;printf(";%d ";,*var)。
A.110
B.90
C.100
D.不确定
正确答案:110
3、指针的基类型是指指针的类型
A.正确
B.错误
正确答案:错误
4、两个指针变量的值相等时,表明两个指针变量是()
A.是两个空指针
B.指向同一内存单元地址或者都为空
C.都没有指向
D.占据同一内存单元
正确答案:指向同一内存单元地址或者都为空
5、若有定义:int x,*pb; 则以下正确的赋值表达式是()
A.pb=&;x
B.*pb=*x
C.pb=x
D.*pb=&;x
正确答案:pb=&;x
第九章单元测试
1、数组的下标从1开始
A.正确
B.错误
正确答案:错误
2、C语言调用函数中,当数组名做实参时,实参和形参之间的传递方式是按地址传递
A.正确
B.错误
正确答案:正确
3、若有以下定义:double ;w[10];则w数组元素下标的上限是10
A.正确
B.错误
正确答案:错误
4、若有如下定义,则()是对数组元素;int ;a[10] , *p ;p=a ;的正确引用
A.*&;a[10]
B.a[11]
C.*(p+2)
D.p
正确答案:*(p+2)
5、若有以下定义和语句,且0<;=i<;5,则()是对数组元素地址的正确表示;int a[]={1,2,3,4,5},*p,i; p=a。
A.&;p
B.a++
C.&;p[i]
D.&;(a+i)
正确答案:&;(a+i)
第十章单元测试
1、已有定义:char a[]=";xyz";,b[]={';x';,';y';,';z';};, 以下叙述中正确的是()
A.a 数组长度大于 b 数组长度
B.a数组长度小于 b 数组长度
C.数组 a 和 b 的长度相同
D.其余说法都不对
正确答案:a 数组长度大于 b 数组长度
2、有以下程序main(){ char s[]=";ABCD";,*p;;for(p=s+1;p<;s+4;p++)printf(";%s";,p);}程序运行后的输出结果是()
A.ABCDBCDCDD
B.BCD
C.BCDCDD
D.ABCD
正确答案:BCDCDD
3、有以下程序;main();{ char s[]=";159";,*p;;p=s;;printf(";%c";,*p++); ;printf(";%c";,*p++);;}程序运行后的输出结果是()
A.15
B.59
C.12
D.16
正确答案:15
4、有以下程序;main();{ char a[7]=";a0a0";int i,j;;i=sizeof(a); j=strlen(a);;printf(";%d %d ";,i,j);;}程序运行后的输出结果是()
A.7 6
B.2 2
C.7 2
D.6 2
正确答案:7 2
5、设有以下定义和语句;char str[20]=";Program";,*p;p=str;则以下叙述中正确的是()
A.str与p的类型完全相同
B.str数组长度和p所指向的字符串长度相等
C.*p与str[0]中的值相等
D.数组str位中存放的内容和指针变量p中存放的内容相同
正确答案:*p与str[0]中的值相等
第十一章单元测试
1、已知学生记录描述为:struct ;student{ int num;char name[20];struct ;{ int ;year;int ;month;int day;}birth;};struct student s;下列对“生日”的正确赋值方式是()
A.year=1980; month=6; day=11
B.s.year=1980; s.month=6; s.day=11
C.s.birth.year=1980; s.birth.month=6; s.birth.day=11
D.birth.year=1980;birth.month=6;birth.day=11
正确答案:s.birth.year=1980; s.birth.month=6; s.birth.day=11
2、若有以下说明和定义typedef ;int *INTEGERINTEGER p,*q;以下叙述正确的是()
A.p是基类型为int的指针变量
B.p是int型变量
C.q是基类型为int的指针变量
D.程序中可用INTEGER代替int类型名
正确答案:p是基类型为int的指针变量
3、设有如下定义:struct ;sk{int a;float b;}data;int *p;若要使p指向data中的a域,正确的赋值语句是()
A.*p=data.a
B.p=data.a
C.p=&;a
D.p=&;data.a
正确答案:p=&;data.a
4、有以下程序struct ;STU{char num[10]; float score[3]; }main(){struct STU s[3]={{";20021";,90,95,85},{";20022";,95,80,75},{";20023";,100,95,90}},*p=s;int i; float sum=0;for(i=0;i<;3;i++)sum=sum+p->;score[i];printf(";%6.2f ";,sum);}程序运行后的输出结果是()
A.260.00
B.285.00
C.280.00
D.270.00
正确答案:270.00
5、下面程序的输出结果为(); struct ;st; { ;int x;; int *y;; } *p;; int ;dt[4]={10,20,30,40};; struct ; st ;aa[4]={ 50,&;dt[0],60,&;dt[1],70,&;dt[2],80,&;dt[3] };; main(); { ;;p=aa;;printf(";%d ";, ++p->;x );;printf(";%d ";, (++p)->;x);;printf(";%d ";, ++(*p->;y));;}
A.60 ;70 ;31
B.51 ;60 ;21
C.10 ;20 ;20
D.50 ;60 ;21
正确答案:51 ;60 ;21
第十二章单元测试
1、适宜采用inline定义函数情况是(;)
A.函数体含有递归语句
B.函数体含有循环语句
C.函数代码少、频繁调用
D.函数代码多、不常调用
正确答案:函数代码少、频繁调用
2、函数重载是指()
A.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
B.两个以上的函数取相同的函数名,并且函数的返回类型相同
C.两个以上的函数名字不同,但形参的个数或类型相同
D.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
正确答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
3、下列()的调用方式是引用调用
A.形参是引用,实参是变量
B.形参是指针,实参是地址值
C.形参和实参都是变量
D.形参是变量,实参是地址值
正确答案:形参是引用,实参是变量
4、以下正确的描述是()
A.设置参数的默认值只能在定义函数时设置
B.设置参数的默认值时,应该全部参数都设置
C.设置参数的默认值时,应该设置右边的参数
D.不允许设置参数的默认值
正确答案:设置参数的默认值时,应该设置右边的参数
5、当执行cin语句时,从键盘上输入每个数据后必须接着输入一个>;>;,然后才能继续输入下一个数据
A.正确
B.错误
正确答案:错误
第十三章单元测试
1、类的实例化是指()
A.创建类的对象
B.调用类的成员
C.指明具体类
D.定义类
正确答案:创建类的对象
2、对于友元描述正确的是()
A.友元不是函数
B.友元是本类的成员函数
C.友元不是本类的成员函数
D.友元不能访问本类私有成员
正确答案:友元不是本类的成员函数
3、类中定义的成员默认访问属性为()
A.friend
B.private
C.protected
D.public
正确答案:private
4、下面说法正确的是()
A.定义类时必须写出该类的构造函数
B.主函数中的调用格式决定系统调用哪个构造函数
C.生成对象时调用析构函数
D.析构函数不可以重载
正确答案:主函数中的调用格式决定系统调用哪个构造函数
5、下述静态数据成员的特征中,()是错误的
A.静态数据成员要在类体外进行初始化
B.静态数据成员不是所有对象所共用的
C.引用静态数据成员时,要在静态数据成员名前加<;类名>;和作用域运算符
D.说明静态数据成员时前边要加修饰符static
正确答案:静态数据成员不是所有对象所共用的
6、静态成员函数直接访问类的数据成员()
A.只允许是静态数据成员
B.只允许是非静态数据成员
C.可允许是静态数据成员或非静态数据成员
D.是不允许的
正确答案:只允许是静态数据成员
第十四章单元测试
1、派生类的对象对它的哪一类基类成员是可以访问的()
A.保护继承的基类的公有成员
B.公有继承的基类的公有成员
C.公有继承的基类的私有成员
D.公有继承的基类的保护成员
正确答案:公有继承的基类的公有成员
2、下面对派生类的描述中,错误的是()
A.派生类至少有一个基类
B.派生类中继承的基类成员的访问权限到派生类中保持不变
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
D.一个派生类可以作为另外一个派生类的基类
正确答案:派生类中继承的基类成员的访问权限到派生类中保持不变
3、当保护继承时,基类的()在派生类中成为保护成员,不能通过派生类的对象直接访问
A.公有成员和保护成员
B.私有成员
C.任何成员
D.公有成员和私有成员
正确答案:公有成员和保护成员
4、设置虚基类的目的是()
A.提高运行效率
B.减少目标代码
C.简化程序
D.消除二义性
正确答案:消除二义性
5、多继承时,多个基类中的同名的成员在派生类中由于标识符不唯一而出现封装性
A.正确
B.错误
正确答案:错误
第十五章单元测试
1、下列关于运算符重载的描述中,()是正确的
A.运算符重载可以改变操作数的个数
B.运算符重载可以改变结合性
C.运算符重载不可以改变语法结构
D.运算符重载可以改变优先级
正确答案:运算符重载不可以改变语法结构
2、下列运算符中,()运算符在C++中不能重载
A.|
B.?:
C.<;=
D.+
正确答案:?:
3、以下关于C++运算符重载的描述中,正确的是()
A.运算符重载可以改变运算符的功能
B.运算符重载可创造新的运算符
C.任何运算符均可重载
D.运算符重载可以改变运算符的优先级
正确答案:运算符重载可以改变运算符的功能
4、运算符重载可以改变运算符的功能
A.正确
B.错误
正确答案:错误
5、在C++中,运算符的重载有两种实现方法,一种是通过成员函数实现,另一种则通过友元函数实现
A.正确
B.错误
正确答案:正确
第十六章单元测试
1、假设声明了以下的函数模板,错误的调用语句是()template ;<;class ;T>;T max(T x,T y){ retum(x>;y)?x:y;}并定义了int i; char c。
A.max((int)c, i)
B.max(i, i)
C.max(i, c)
D.max(c,c)
正确答案:max(i, c)
2、定义函数模板中使用的参数类型标识符需使用下列哪组符号括起来()
A.“”
B.{}
C.()
D.<;>
正确答案:<;>
3、下列有关模板和继承的叙述正确的是 ()
A.相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系
B.模板和继承都可以派生出一个类系
C.从动态性能看,继承类系比模板类系具有更多的动态特性
D.从类系的成员看,模板类系的成员比继承类系的成员较为稳定
正确答案:相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系
4、下列叙述错误的是()
A.catch(…)语句可以放在catch语句组的中间
B.catch(…)语句可捕获所有类型的异常
C.程序中try语句与catch语句是一个整体,缺一不可
D.一个try语句可以有多个catch语句
正确答案:catch(…)语句可以放在catch语句组的中间
5、下列叙述错误的是()
A.当catch语句捕获一个异常后,可能不能完全处理异常
B.throw语句抛出的异常可以不被捕获
C.一个程序中可以有try语句而没有throw语句
D.在try块中抛出异常后,程序最后回到try块中继续执行后面的语句
正确答案:在try块中抛出异常后,程序最后回到try块中继续执行后面的语句