2021知到答案 计算机编程 最新智慧树满分章节测试答案

微信小程序
资源下载
下载价格5

第一章 单元测试

1、单选题:

有定义 int a=9,b=6,c; 执行语句 c=a/b+0.5;后,c 的值为 (  )。

选项:
A:2
B:1.4
C:1
D:2.0
答案: 【1

2、单选题:
C++语言源代码文件扩展名为(   )。

选项:
A:.cpp
B:.c++
C:.exe
D:.obj
答案: 【.cpp

3、单选题:
以下用户标识符中,合法的是( )。

选项:
A:Ling@li
B:%123
C:moon
D:Int
答案: 【moon

4、单选题:
int x=10,y=5;则表达式x+=x*=y+8的值为(  )。

选项:
A:150
B:260
C:230
D:130
答案: 【260】

5、单选题:
5、有定义 int a=9,b=6,c; 执行语句 c=a/b+0.5;后,c 的值为 (    )。

选项:
A:2.0
B:1.4
C:1
D:2
答案: 【1

6、单选题:
以下标识符中,不能作为合法的 C++用户定义标识符的是(   )。

选项:
A:_if
B:signed
C:answer
D:to
答案: 【signed

7、单选题:
下列字符串中可以用作 C++标识符的是(  )。

 

 

选项:
A:5char
B:delete
C:_256
D:class
答案: 【_256】

8、单选题:
下列 C++标点符号中表示一条预处理命令开始的是(    )。

 

选项:
A:#
B:}
C:;
D://

答案: 【#】

9、单选题:
9、以下程序的运行结果是(  )。

main() {    int a,b,d=241;     a=d/100%9;

b=(-1)&&(-1);     cout<<a<<”,”<<b;}

选项:
A:6,1
B:2,0
C:6,0
D:2,1
答案: 【2,1

10、单选题:
语句while(!E); 中的表达式 !E等价于(  )

选项:
A:E==1
B:E!=0
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,1
B:2,1,0
C:1,2,0
D: 2,1,1
答案: 【1,2,0

12、单选题:
设有程序段:      int  x=0,s=0;while(!x!=0) s+=++x;cout<<s;输出(     )。

选项:
A:程序段中的控制表达式是非法的
B:运行程序段后输出1
C:程序段执行无限次

D:运行程序段后输出0  
答案: 【运行程序段后输出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:5,25
C:不确定
D:1,12
答案: 【5,25

14、单选题:

已知: int m=5;下列表示引用的方法中,正确的是:(   )。
选项:
A:int &t=5
B:int &Z
C:float &f=&m;
D:int &X=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:f
B:e
C:b
D:
答案: 【f

17、单选题:

下面程序段的输出结果是(   ) 。
char c[ ]=”tvwilln”;cout<<strlen(c);

选项:
A:3
B:6
C:14
D:9
答案: 【3】

第二章 单元测试

1、单选题:
结构化程序设计所规定的三种基本控制结构是:(  )  。

选项:
A:树形、网形、环形
B:输入、处理、输出
C:主程序、子程序、函数
D:顺序、选择、循环
答案: 【顺序、选择、循环

2、单选题:
下面程序的输出结果是(   )。

main ( )
{    char str[ ]=”SSWLIA” , C;    int k;    for (k=2;(c=str[k])!=’’;k++) {       switch (c) {          case ‘I’ : ++k; break ;          case ‘L’: continue;          default : putchar(c) ; continue ;       }       putchar(‘*’);    }}

选项:
A:W*
B:W*A
C:W
D:SW
答案: 【W*

3、单选题:
C++语言中,while和do-while循环的主要区别是:(     )。

选项:
A:

while 的循环控制条件比do-while的循环控制条件严格

B:

 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:89
B:0
C:30
D:90
答案: 【90】

5、单选题:

以下关于 do-while 循环的不正确描述是(      )。

选项:
A:do-while 循环由 do 开始,至 while 结束,在 while(表达式)后面不能写分号
B: do-while 循环体中,一定要有能使 while 后面表达式的值变为零(“ 假”)) 的操作
C:do-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:11 13
B:15
C:0
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:1
B:Quit
C:无输出结果
D:OK
答案: 【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:4
C:2
D:3
答案: 【1

9、单选题:
若u、w、x、y均是正整型变量,则以下正确的switch语句是(     )。

选项:
A: switch(pow(x,2)+pow(y,2))

{ case 1: case 3: w=x+y; break;

 case 0: case 5: w=x-y;

}

B:switch(x*x+y*y)

{ case 3:

 case 3: w=x+y; break;

 case 0: w=y-x; break;

}

C:switch x

{ default : u=x+y;

 case 10 : w=x-y; break;

 case 11 : u=x*y; break;

}

D:switch(x+y)

{ case 10 : u=x+y; break;

case 11 : w=x-y; break;

}

答案: 【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!=1
D:E!=0 
答案: 【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  8  9

B:

7  7  7

C:

7 10 13

D:

7  9 11

答案: 【

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,20
B:8,16
C:8,17
D:8,8
答案: 【8,17

5、单选题:
C++语言规定,函数返回值的类型是由(      )。

选项:
A:return语句中的表达式类型所决定
B:调用该函数时的主调函数类型所决定
C:调用该函数时系统临时决定
D:在定义该函数时所指定的函数类型所决定
答案: 【在定义该函数时所指定的函数类型所决定

6、单选题:
下面函数调用语句含有实参的个数为(          )。
func((exp1,exp2),(exp3,exp4,exp5));

选项:
A:2
B:5
C:1
D:4
答案: 【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:程序输出结果是 20
B:程序输出结果是 22
C:程序输出结果不能确定
D:程序输出结果是 21
答案: 【程序输出结果是 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[3+7];
B:cout<<x[0];
C:cout<<x[10];
D:int b;b=x[1]+x;
答案: 【cout<<x[0];】

4、单选题:
假定a为一个整型数组名,则元素a[4]的地址可表示为(        )。
选项:
A:a+32
B:a+16
C:a+8

D:a+4
答案: 【a+4】

5、单选题:
设有数组定义char  a[]=”China”;则数组a所占的空间字节数为(         )。
选项:
A:6个字节
B:5个字节
C:7个字节
D:4个字节
答案: 【6个字节】

6、单选题:
设有定义语句int  a[3][3],则以下叙述错误的是(     )。
选项:
A:a[1]是由3个整型元素组成的一维数组
B:可以用a[2]=1;的形式给数组元素赋值
C:a[0]代表一个地址常量
D:a数组可以看成是由a[0]、a[1]、a[2]3个元素组成的一维数组
答案: 【可以用a[2]=1;的形式给数组元素赋值】

7、单选题:
有如下声明语句int  B[3][3]={{1,2,0},{3,2},{4,5,10}};那么B[1][1]的值是(    )。
选项:
A:3

B:1

C:2

D:10

答案: 【2

8、单选题:
以下对一维数组a的正确定义是(     )。
选项:
A:int a(9);
B:const int N=9;  int a[N];
C:int n; cin>>n; int a[n];
D:int n=9, a[n];
答案: 【const int N=9;  int a[N];】

9、单选题:
运行下面程序,程序运行结果是(      )。#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:11   13   15

C:15
D:11   13

答案: 【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:120
B:6
C:720
D:24
答案: 【120】

14、单选题:
下列do-while 循环的循环次数为(   ).已知: int  j=5; do{ cout<<j- -<<endl;  j- -; }while(j!=0);
选项:
A:无限
B:0
C:1
D:5
答案: 【无限】

15、单选题:
若有定义char str1[10]= {“China”},str2[10];要将str1中的字符串复制到str2中去,正确的方法是(    ).
选项:
A:strcpy(str2,str1);
B:strcpy(str1,str2);
C:strcpy(“China”,str2);
D:str2=str1;
答案: 【strcpy(str2,str1);】

第五章 单元测试

1、单选题:
下面结构体的定义语句中错误的是(     ).
选项:
A:struct st{int num,char name[20];} st a;
B:struct {int num,char name[20];} a;
C:struct st{int num,char name[20];} ;st a;
D:struct st{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.x=data1.x;
B:data2=data1;
C:data2.y=data1.y;
D:data2(9,10);
答案: 【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:11
B:21
C:20
D:10
答案: 【20】

5、单选题:
运行程序,程序输出结果是(   )。#include <iostream>using namespace std;int main(){
struct   stud {
char  num [5];    int   s[4];    double  ave;  } a;  cout<<sizeof(stud)<<endl;  return 0;}

选项:
A:30

B:32

C:31

D:29
答案: 【32

6、单选题:
有下列结构体声明语句struct  student{int num; char name[20]; float score[3]; };student  s[3]={123,”Li Fang”,67,89,90};要对第1个学生的成绩输出总分,下列表达式正确的是(   ).

选项:
A:cout<<score[0].s[1]+ score[1].s[1]+score[2].s[1];
B:cout<<s[0].score[0]+s[0].score[1]+s[0].score[2];
C:cout<<s.score[1]+s.score[2]+s.score[3];
D:cout<<s.score[0]+s.score[1]+s.score[2];
答案: 【cout<<s[0].score[0]+s[0].score[1]+s[0].score[2];】

7、单选题:
定义以下结构体类型,运行程序的输出结果是(    )。#include <iostream>using namespace std;int main(){ struct s{int a;double b;}; cout<<sizeof(s)<<endl; return 0;}
选项:
A:16
B:18
C:14
D:12
答案: 【16】

8、单选题:
当定义一个结构体变量时,系统为它分配的内存空间是(       ).
选项:
A:结构中第一个成员所需的内存容量
B:结构中各成员所需内存容量之和
C:结构体中占内存容量最大者所需的容量
D:结构中一个成员所需的内存容量
答案: 【结构中各成员所需内存容量之和】

9、单选题:
运行程序,程序输出结果为(                    )#include <iostream>using namespace std;int main(){
struct s { int x; } a[3];  cout<<sizeof(a);  return 0;}
选项:
A:6
B:12
C:18
D:4

答案: 【12】

10、单选题:
定义以下结构体数组,运行程序,程序输出结果是(    )。 #include <iostream>using 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:6
B:2
C:21
D:14
答案: 【2】

11、单选题:
运行程序,程序运行结果是(       ) #include <iostream>using 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:n,3
B:i,3
C:l,4
D:f,4
答案: 【f,4】

12、单选题:
#include <iostream>using namespace std;struct student
{
char name[10];
int score[50];
float average;
} stud1;
int main(){
cout<<sizeof(student); return 0;}
选项:
A:128
B:64
C:256
D:216
答案: 【216】

13、单选题:
运行程序,程序运行结果是(    )。 #include <iostream>using 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:Mary
B:John
C:Adam
D:Paul
答案: 【Mary】

14、单选题:
运行程序,程序运行结果是(              ) #include <iostream>using 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:Tianjin,2009
B:guangzhou,2009
C:Tianjin,2008
D:guangzhou,2008
答案: 【guangzhou,2009】

15、单选题:
运行程序,程序输出结果是(    )。#include <iostream>using 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:c2U3F4E
B:4E5S
C:3F4E5S
D:F4E
答案: 【4E5S】

第六章 单元测试

1、单选题:
若有定义语句int c[5],*p=c;则以下对数组c第1个元素地址的正确引用是(      )。
选项:
A:&c+1
B:p+5
C:&c[0]
D:c++
答案: 【&c[0]】

2、单选题:

运行程序,程序输出结果是(     )。

#include <iostream>

using 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:123

B:345

C:234

D:012
答案: 【345

3、单选题:

运行程序,程序输出结果是(   ).

#include <iostream>

using 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:0
B:4

C:5
D:6
答案: 【4

4、单选题:

int a[]={1,2,3,4},y,*p=a;执行语句y=(*++p)- – 后,数组a中的元素的值变为(     ).
选项:
A:1,2,2,4
B:1,2,3,3
C:1,1,3,4
D:0,1,3,4
答案: 【1,1,3,4】

5、单选题:
运行程序,程序输出结果是(    )。#include <iostream>using namespace std;int main(){ char str[100]=”program”,*p=str; cout<<(p+2)<<endl; return  0;}
选项:
A:p
B:ogram
C:rogram
D:pro
答案: 【ogram】

6、单选题:
运行程序,程序输出结果是(    )。#include <iostream>using namespace std;int main(){ char str[100]=”program”,*p=str; cout<<*(p++)<<endl; return  0;}
选项:
A:r

B:pro

C:rogram

D:p

答案: 【p

7、单选题:
运行程序,程序输出结果是(     ).#include <iostream>using namespace std;int main(){

char str[100]=”program”,*p=str;

str[3]=0;  cout<<p<<endl;  return  0;}
选项:
A:r

B:pro

C:o
D:ogram
答案: 【pro

8、单选题:
若有变量定义语句int  a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是(     ).
选项:
A:*(p+5)
B:p+5
C:*p+6
D:*p+=6
答案: 【*(p+5)】

9、单选题:
己知int a[10]={3,7,9,15},*p=a;则不能表示a数组中元素的选项是(    ).
选项:
A:*a
B:a[p-a]
C:a
D:*p
答案: 【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 <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:11  13  15

B:15

C:11  13

D:0
答案: 【0】

12、单选题:
运行程序,程序运行结果是(    ).#include <iostream>using namespace  std;int main(){
char a[3]={‘a’,’b’,’c’},*p=a+1;  cout<<p<<endl;  return 0;}

选项:
A:abc
B:bc
C:不确定

D:b
答案: 【不确定

13、单选题:
运行程序,程序运行结果是(     )。#include <iostream>#include <string>using namespace  std;int main(){
string a=”string”,*p=&a;  cout<<p<<endl;  return 0;}
选项:
A:s
B:变量a的地址
C:string
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 <iostream>using 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:abc
C:d

D:abcd
答案: 【d

16、单选题:
已知: int m=5;下列表示引用的方法中正确的是(   ).
选项:
A:int &t=5;
B:float &f=&m;
C:int &Z;
D:int &X=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:1234
B:4444
C:4321
D:0000
答案: 【4321】

18、单选题:
已知有定义int a[5]; a数组中最后一个元素的地址可表示为(    ).
选项:
A:&a+4
B:a+4
C:&a[5]
D:a+5
答案: 【a+4】

19、单选题:
有定义 int a[ ]={2,5,6,},*p=a; 则*(p+1)所代表的数组元素是(   )。
选项:
A:a[3]
B:a[0]
C:a[1]
D:a[2]
答案: 【a[1]】

20、单选题:
已有定义 int a[10],*p; 则正确的赋值语句是(    ).
选项:
A:p=a[2]+2;
B:p=a+2;
C:p=a[5];
D:p=100;
答案: 【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

{

public:

void show ()

{

cout<<a<<“+”<<b<<“=”<<a+b<<endl;

}

private:

int a;

int b;

void set ()

{

cin>>a>>b;

}

};

calc t, *pt=&t;

在main( )函数中下面不正确的语句是(   )。
选项:
A:pt->show ( )
B: t.show( )
C:t.set( )
D:(*pt). show ( )
答案: 【t.set( )】

7、单选题:

有如下定义和语句:

class Student

{

public:

void display(){ cout<<num<<” “<<name; };

private:

int num;

char name[30];

} ;

Student t, *p = &t;

下面正确的语句是( )。
选项:
A: (*p)-> display();
B:p-> num = 10101;
C:p->display( );
D:t->display();
答案: 【p->display( );】

8、单选题:
要让一个类中的所有对象的同一数据有不同的值,请不要使用( )。
选项:
A:

私有数据成员

B:

静态数据成员

C:

保护数据成员

D:

公有数据成员

答案: 【

静态数据成员

9、单选题:
下面选项中不属于面向对象程序设计特征的是(     ) 。
选项:
A:多元性
B:抽象性
C:继承性
D:封装性
答案: 【多元性】

10、单选题:
已知类A是类B的友元,类B是类C的友元,则(       )。
选项:
A:类C一定是类A的友元
B:类A一定是类C的友元
C:类C的成员函数可以访问类B的对象的任何成员
D:类A的成员函数可以访问类B的对象的任何成员
答案: 【类A的成员函数可以访问类B的对象的任何成员】

11、判断题:
成员函数代码量很多,或具有多个成员函数,采用类内定义的方式比较合适。
选项:
A:错
B:对
答案: 【错】

12、判断题:
成员函数是一个类的成员,出现在类体中,也就是只能被类内其他成员函数调用。
选项:
A:错
B:对
答案: 【错】

13、判断题:
通过对象无法访问private和protected属性的成员变量和成员函数,而仅可以访问public属性的成员变量和成员函数。
选项:
A:错
B:对
答案: 【对】

14、判断题:
在C++语言中,可以通过传值方式作为函数的参数或函数返回值。
选项:
A:对
B:错
答案: 【对】

15、判断题:
构造函数可以有返回值也可以无返回值。
选项:
A:错
B:对
答案: 【错】

16、判断题:
构造函数可以有一个参数或多个参数,可以为参数设置一个默认值。
选项:
A:错
B:对
答案: 【对】

17、判断题:
任何一个对象只能属于一个具体的类。
选项:
A:对
B:错
答案: 【对】

18、判断题:
声明时加关键字static的类中所有的成员数据是属于类的,任何一个对象都可以共享该成员数据。
选项:
A:对
B:错
答案: 【对】

19、判断题:
友元函数是成员函数,友元函数可以访问类中的私有成员。
选项:
A:对
B:错
答案: 【错】

20、判断题:
无论什么方式的继承,基类的私有成员都不能被派生类成员函数访问(引用)。
选项:
A:错
B:对
答案: 【对】

第八章 单元测试

1、单选题:
下列对派生类的描述中,错误的是(     )。
选项:
A:一个派生类可以作为另一个派生类的基类
B:派生类至少有一个基类
C:派生类中继承的基类成员的访问权限到派生类保持不变
D:派生类的成员除了它自己的成员之外,还包含了它的基类的成员
答案: 【派生类中继承的基类成员的访问权限到派生类保持不变】

2、单选题:
下列有关继承和派生的叙述中,不正确的是(        )。
选项:
A:派生类的成员函数可以访问派生类自己增加的成员
B:基类的成员函数可以访问派生类的成员
C:派生类的新增公用成员可以被该类创建的对象引用
D:基类的成员函数可以访问基类成员
答案: 【基类的成员函数可以访问派生类的成员】

3、单选题:
下列对派生类的描述中,错误的是(     )。
选项:
A:派生类只继承了基类的公有成员和保护成员
B:一个派生类可以作为另一个派生类的基类
C:派生类的缺省(默认)继承方式是private
D:派生类至少有一个基类
答案: 【派生类只继承了基类的公有成员和保护成员】

4、单选题:
下列有关公共继承的继承和派生的关系描述中,不正确的是(        )。
选项:
A:基类的公用成员和保护成员在派生类中仍然保持其公用成员和保护成员的属性
B:基类的私有成员,因为是公用继承,可以被派生类的新增成员函数引用
C:派生类的公用成员可以被派生类创建的对象引用
D:基类的私有成员,基类的成员函数可以引用它
答案: 【基类的私有成员,因为是公用继承,可以被派生类的新增成员函数引用】

5、单选题:
下列有关继承和派生的叙述中,正确的是(        )。
选项:
A:派生类成员函数不能访问通过私有继承的基类的保护成员
B:私有继承的派生类作为基类继续派生,下一层的派生类无法访问它的任何成员
C:基类的公用成员在派生类中仍然是公用成员
D:基类的保护成员在派生类中仍然是保护成员
答案: 【私有继承的派生类作为基类继续派生,下一层的派生类无法访问它的任何成员】

6、单选题:
下列有关保护继承的继承和派生的叙述中,正确的是(        )。
选项:
A:派生类成员函数不能访问通过保护继承的基类的公有成员
B:派生类成员函数不能访问通过保护继承的基类的私有成员
C:基类的私有成员在派生类中变为是保护成员
D:派生类成员函数不能访问通过保护继承的基类的保护成员
答案: 【派生类成员函数不能访问通过保护继承的基类的私有成员】

7、单选题:
下列有关继承和派生的叙述中,正确的是(        )。
选项:
A:基类的指针变量可以指向派生类对象
B:基类的指针变量,可以访问派生类新增加的成员
C:派生类的指针变量,可以访问基类的成员
D:派生类的指针变量可以指向基类对象
答案: 【基类的指针变量可以指向派生类对象】

8、判断题:
一个派生类不仅可以从一个基类派生,也可以从多个基类派生。
选项:
A:对
B:错
答案: 【对】

9、判断题:
继承方式包括: public(公用的),  private(私有的)和protected(受保护的),应用中public (公用的)最常见。
选项:
A:错
B:对
答案: 【对】

10、判断题:
当不需要对派生类新增的成员进行任何初始化操作时,派生类构造函数的函数体可以为空,即构造函数是空函数。
选项:
A:对
B:错
答案: 【对】

11、判断题:
在派生时,派生类不能继承基类的析构函数。
选项:
A:对
B:错
答案: 【对】

12、判断题:
派生类的指针变量也可以指向基类对象。
选项:
A:对
B:错
答案: 【错】

13、判断题:
派生类的继承方式有两种:公有继承和私有继承。
选项:
A:对
B:错
答案: 【错】

14、判断题:
在公有继承中,派生类对象只能引用基类中的公有成员和派生类新增的公共成员。
选项:
A:错
B:对
答案: 【对】

15、判断题:
在私有继承中,基类中只有公有成员可以被派生类成员函数引用。
选项:
A:对
B:错
答案: 【错】

16、判断题:
派生类是它的基类的组合。
选项:
A:对
B:错
答案: 【错】

17、判断题:
析构函数不能被继承。
选项:
A:错
B:对
答案: 【对】

第九章 单元测试

1、单选题:
下列描述中,(        ) 是抽象类的特性。
选项:
A: 不能创建其对象
B: 可以进行构造函数重载
C:

可以定义友元函数

D: 可以声明虚函数
答案: 【 不能创建其对象】

2、单选题:
关于虚函数的描述中,(   )是正确的。
选项:
A:派生类的虚函数与基类的虚函数具有不同的参数个数和类型
B: 虚函数是一个static类型的成员函数
C: 虚函数是一个非成员函数
D: 基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数
答案: 【 基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数】

3、单选题:
实现运行时的多态性采用(     )。
选项:
A:虚函数
B:析构函数
C:构造函数
D:重载函数
答案: 【虚函数】

4、单选题:
以下基类中的成员函数表示纯虚函数的是(        )。
选项:
A:virtual void tt(int){}
B:virtual void tt(int)
C:void tt(int)=0
D:virtual void tt()=0
答案: 【virtual void tt()=0】

5、单选题:
关于纯虚函数和抽象类的描述中,(     )是错误的。
选项:
A:一个基类中声明有纯虚函数,该基类的派生类一定不再是抽象类
B:纯虚函数是一种特殊的虚函数,它不能实例化对象
C:抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
D:抽象类是指具有纯虚函数的类
答案: 【一个基类中声明有纯虚函数,该基类的派生类一定不再是抽象类】

6、单选题:

下列有关C++的面向对象方法的多态的概念的叙述中,不正确的是(        )。

选项:
A:必须存在着声明为虚函数的友元函数
B:存在基类类型的指针指向派生类对象,且通过该指针调用虚函数
C:C++的面向对象方法的多态,必须存在基类指针指向派生类对象
D:存在基类类型的指针指向派生类对象,基类和派生类的同名虚函数的参数必须相同
答案: 【必须存在着声明为虚函数的友元函数】

7、单选题:

执行以下程序代码后,将会输出的结果是()。

#include<iostream>

using namespace std;

class Base

{public:

void display(){cout<<“I’m Base class!”;}

};

class Derived: public Base

{public:

void display(){cout<<“I’m Derived class!”;}

};

int main()

{   Base * p;

Derived test;

p = &test;

p->display();

return 0;

}
选项:
A:I’m Base class! I’m Derived class!
B:I’m Derived class! I’m Base class!
C:I’m Derived class!
D:I’m Base 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:obj1.operator *(obj2)
B:operator *(obj1,obj2)
C:*(obj1,obj2)
D:obj2.operator *(obj1)
答案: 【obj1.operator *(obj2)】

3、单选题:
如果对TA类对象使用逻辑运算符“==”重载,以下函数声明正确的是(   )。
选项:
A:TA & TA::operator==(const TA &a);
B:bool & TA::operator==(const TA &a);
C:bool TA::operator==(const TA &a);
D:void & TA::operator==(const TA &a);
答案: 【bool TA::operator==(const TA &a);】

4、单选题:
在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是(    )。
选项:
A:作为成员函数重载的双目运算符
B:作为友元函数重载的双目运算符
C:作为成员函数重载的单目运算符
D:作为友元函数重载的单目运算符
答案: 【作为成员函数重载的单目运算符】

5、单选题:
在语句int n; cin>>n;中,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:+=,new,/=,= =
B:[], %, <=, —
C: –>*, .*, sizeof, ::, ? :
D:*=,++,delete,=
答案: 【 –>*, .*, 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>=(b, a)
C:operator>=(a, b)
D:a.operator>=(a)
答案: 【operator>=(a, b)】

12、单选题:
在名为BigNumber类的类体中对运算符函数double进行如下声明:operator double(BigNumber); 函数声明中有一个明显的错误,这个错误就是(   )。

选项:
A:函数声明中缺少函数体
B:参数表中不应该有任何参数
C:缺少对函数返回类型的说明
D:参数声明中缺少参数变量
答案: 【参数表中不应该有任何参数】

13、单选题:
下列关于运算符重载的描述中,正确的是(     )。
选项:
A:一元运算符只能作为成员函数重载
B:C++中可以重载所有的运算符
C:运算符重载成为成员函数时,若参数表中无参数,重载是一元运算符
D:二元运算符重载成为非成员函数时,参数表中有一个参数
答案: 【运算符重载成为成员函数时,若参数表中无参数,重载是一元运算符】

14、单选题:
下列关于运算符重载的描述中,(     )是正确的。
选项:
A:运算符重载不可以改变语法结构
B:运算符重载可以改变结合性
C:运算符重载可以改变优先级
D:运算符重载可以改变操作数的个数
答案: 【运算符重载不可以改变语法结构】

15、单选题:
下列关于C++流的叙述中,下面说法正确的是(      )。
选项:
A:以上答案都不对
B:cin是C++预定义的标准输入流类
C:cin是C++预定义的标准输入流函数
D:cin是C++预定义的标准输入流对象
答案: 【cin是C++预定义的标准输入流对象】

16、单选题:
若要在Vector类中将*重载为一元运算符,下列重载函数声明中肯定有错的是(      )。
选项:
A:Vector operator *(Vector, Vector);
B:Vector operator *(Vector);
C:int operator *(Vector);
D:Vector operator *();
答案: 【Vector operator *(Vector, Vector);】

17、单选题:
重载流插入运算符<<时,下列设计不合理的是(      )。
选项:
A:将运算符定义为类的成员函数
B:为运算符函数设置两个参数
C:将运算符函数的第一个参数设为ostream &
D:将运算符函数的返回值类型设为ostream &
答案: 【将运算符定义为类的成员函数】

18、单选题:
若为类MyNumber重载运算符“/”,下列声明中,错误的是(      )
选项:
A:friend MyNumber operator/(MyNumber, MyNumber);
B:friend MyNumber operator/(int, float);
C:friend MyNumber operator/(float, MyNumber);
D:friend MyNumber operator/(MyNumber, int);
答案: 【friend MyNumber operator/(int, float);】

19、单选题:
运算符重载时以下性质不一定会保持的是(      )。
选项:
A:操作数的个数、优先级
B:操作数的个数、结合性
C:返回值类型、操作数类型
D:优先级、结合性
答案: 【返回值类型、操作数类型】

20、单选题:
以下类中说明了“++”运算符重载函数的原型。

class TA

{

public:

.. .. ..

friend TA operator ++(TA &);

};

编译器把表达式”++d”解释为:(  )。

选项:
A:d.operator++()
B:operator++(d)
C:d.operator++(d)
D:operator++()
答案: 【operator++(d)】

第十一章 单元测试

1、单选题:
C++程序进行文件的输入,除了包含头文件iostream外,还要包含头文件(   )。
选项:
A:ostream
B:fstream
C:cstdio
D:ifstream
答案: 【ifstream】

2、单选题:
C++语言中,程序通过操纵符进行格式输出处理时,必须包含的头文件是(   )。

选项:
A:stdlib.h
B:iostream.h

C:fstream.h
D:iomanip.h
答案: 【iomanip.h】

3、单选题:

下列输出语句中,不正确的是(  )。
选项:
A:cout<<0x20;

B:cout<<’tn ’;
C:cout<<’A’;
D:cout.put(‘O’);
答案: 【cout<<’tn ’;】

4、单选题:
在ios中提供控制格式的标志位中,转换为十六进制形式的标志位是(  )。
选项:
A:hex
B:dec
C:left
D:oct

答案: 【hex】

5、单选题:
在执行语句int n,m; cin>>n>>m;中,输入数据的分隔符,错误的是(     )。
选项:
A:换行符
B:空格
C:分号
D:Tab键
答案: 【分号】

6、单选题:
磁盘文件操作中,打开磁盘文件的访问方式常量中,以二进制方式打开文件的是(   )。
选项:
A:ios::ate
B:ios::in
C:ios:: binary
D:ios::out
答案: 【ios:: binary】

7、单选题:
C ++流中运算符>>是一个(    )。

选项:
A:用于输出操作的非成员函数
B:用于输出操作的成员函数
C:用于输入操作的成员函数
D:用于输入操作的非成员函数

答案: 【用于输入操作的非成员函数

8、单选题:
执行以下C++程序:char *num; cin>>num; cout<<num; 若输入:  Number = 1681↙ 则输出(    )。
选项:
A:输出出错
B:Number
C:Number = 1681
D:1681
答案: 【Number = 1681】

9、单选题:
在C ++流中操纵符中,设置域宽的是(   )。
选项:
A:left
B:setfill()
C:ate
D:setw()
答案: 【setw()】

10、单选题:
当使用 ofstream 定义一个文件流,通过打开一个文件与之连接,系统默认的打开方式为(   )。
选项:
A:ios::binary
B:ios::trunc
C:ios::out
D:ios::in
答案: 【ios::out】

11、单选题:
关于输入流类成员函数getline()的下述描述中,错误的是(   )。
选项:
A:该函数读取字符串时,可以包含空格。
B:该函数是用来从键盘上读取字符串的。
C:该函数读取的字符串长度是受限制的。
D:该函数读取字符串时遇到终止符便停止。
答案: 【该函数读取字符串时,可以包含空格。】

12、单选题:
从输入文件中读取若干字节存于一个整形变量n,正确的语句为(   )。
选项:
A:infile read(reinterpret_cast<int *>(&n), sizeof(n));
B:infile read((const int *)(&n), sizeof(n));
C:infile read((int *)n, sizeof(n));
D:infile.read(reinterpret_cast<const 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.666000
B:***188.666
C:188.666***
D:188.666
答案: 【***188.666】

14、单选题:
要求打开文件f:myfile.dat,并能够写入数据,正确的语句是(   )。
选项:
A:ifstream infile(“f:myfile.dat “, ios::out);
B:ifstream infile(“f:myfile.dat”, ios::in);
C:fstream infile(“f:myfile.dat “, ios::in | ios::out);
D:ofstream outfile(“f:myfile.dat “, ios::in);
答案: 【fstream infile(“f:myfile.dat “, ios::in | ios::out);】

15、单选题:
设己定义浮点型变量 data,以二进制方式把 data 的值写入输出文件流对象 outfile, 正确的语句是(   )。

选项:
A:outfile.write((char*)&data, data);
B:outfile.write((double*)&data, data);
C:outfile.write((char*)&data, sizeof (double));
D:outfile.write((double*)&data, sizeof (double));
答案: 【outfile.write((char*)&data, sizeof (double));】

第十二章 单元测试

1、单选题:
下列关于异常的叙述,错误的是(   )。
选项:
A:除以零的操作属于异常
B:程序运行中,数组越界不属于异常
C:程序运行中,硬件故障属于异常
D:程序语法错误不属于异常
答案: 【程序运行中,数组越界不属于异常】

2、单选题:
下列不属于异常处理机制的组成部分的是(   )。
选项:
A:try(检查)
B:throw(抛出)
C:catch(捕获)
D:debug(调试)
答案: 【debug(调试)】

3、单选题:
下列关于异常处理的叙述,错误的是(   )。
选项:
A:异常处理方法优点在于把异常触发和处理机制统一,使得它们可以在同一个函数中处理。
B:try和catch块中必须要用花括号括起来,即使花括号内只有一个语句也不能省略花括号
C:如果throw不包括任何表达式,表示它把当前正在处理的异常信息再次抛出,传给其上一层的catch来处理;
D:C++中一旦抛出一个异常,如果程序没有任何的捕获,那么系统将会自动调用一个系统函数terminate,由它调用abort函数终止程序
答案: 【异常处理方法优点在于把异常触发和处理机制统一,使得它们可以在同一个函数中处理。】

4、单选题:
下列关于异常处理的叙述,错误的是(  )。
选项:
A:catch(…)语句可以放在catch语句组的中间
B:程序中try语句与catch语句是一个整体,缺一不可
C:一个try语句可以有多个catch语句
D:catch(…)语句可捕获任何类型的异常
答案: 【catch(…)语句可以放在catch语句组的中间】

5、单选题:
下列关于异常处理的叙述,错误的是(  )。
选项:
A:异常处理仅仅通过类型而不是通过值来匹配的,所以catch块的参数可以没有参数名称。
B:如果抛出的异常一直没有函数捕获(catch),则会一直上传到c++运行系统那里,导致整个系统的终止。
C:一般在异常抛出后资源可以正常被释放,但注意如果在类的构造函数中抛出异常,系统是不会调用它的析构函数的。
D:函数原型中的异常说明要与实现中的异常说明一致,否则容易引起异常冲突。
答案: 【如果抛出的异常一直没有函数捕获(catch),则会一直上传到c++运行系统那里,导致整个系统的终止。】

点点赞赏,手留余香 给TA打赏

AI创作

评论0

请先

2021知到答案 战争与谋略:第二次世界大战经典战役评析 最新智慧树满分章节测试答案
2021知到答案 战争与谋略:第二次世界大战经典战役评析 最新智慧树满分章节测试答案
1分钟前 有人购买 去瞅瞅看
2021知到答案 交往礼仪 最新智慧树满分章节测试答案
2021知到答案 交往礼仪 最新智慧树满分章节测试答案
3分钟前 有人购买 去瞅瞅看
支持多种货币
支持多种货币付款,满足您的付款需求
7天无忧退换
安心无忧购物,售后有保障
专业客服服务
百名资深客服7*24h在线服务
发货超时赔付
交易成功极速发货,专业水准保证时效性
显示验证码

社交账号快速登录