C++程序设计基础(华中科技大学) 中国大学mooc慕课答案2024版 m84896

第1章——初识C++语言:从认识变量和常量开始,数据的表示 第一章单元测试

1、 以下关于C++语言描述错误的是()

答案: 一个C++程序可以包含多个main函数

2、 C++ 语言源程序文件名后缀为( )。

答案: .cpp

3、 C++语言是( )

答案: 既表现面向对象的特征,又表现面向过程的特征

4、 C++语言中普通整型变量int在内存中占( )字节。

答案: 4

5、 下列不是C++语言基本数据类型的是 ( )。

答案: 结构体

6、 各种基本数据类型的存储空间正确的长度排列为( )。

答案: char<int <double

7、 下面的变量说明中( )是正确的。

答案: char a, b, c;

8、 转义字符“反斜杠线”的表示方法正确的是( ) 。

答案: \

9、 在C++语言中,自定义的标识符( )。

答案: 不能使用关键字并且区分大小写

10、 存储字符串“a+b=12\t”所占存储空间的字节数为( )  

答案: 9

 

第一章 计算机基础 第一章单元测试

1、 二进制数0011与1101相加,其结果为( ).

答案: 10000

2、 计算机正在运行的程序存放在( ).

答案: RAM

3、 在微型计算机的主要性能指标中,内存容量通常指( )。

答案: RAM的容量

4、 目前世界上不同型号的计算机,就其工作原理而言,一般都认为是基于冯•诺伊曼提出的( )

答案: 存储程序控制原理

5、 与十六进制数AB等值的十进制数是( ).

答案: 171

6、 在相同的计算机环境中,( )处理速度最快.

答案: 机器语言

7、 下面( )可能是八进制数.

答案: 203

8、 电子计算机与过去的计算工具相比,所具有的特点有( )。

答案: 具有记忆功能,能够储存大量信息,可方便用户检索和查询

9、 某单位自行开发的工资管理系统,按计算机应用的类型划分,它属于( )。

答案: 数据处理

10、 对于内存而言, 把硬盘上的数据传送到内存中的过程称为( )。

答案: 写操作

11、 在计算机中汉字是以( )形式输出的.

答案: 字形码

12、 在计算机中1字节表示( )位

答案: 8

13、 微处理器处理的数据基本单位为字。一个字的长度通常是( )

答案: 与微处理器芯片的型号有关

14、 几年前一位芬兰大学生人在Internet 上公开发布了一种免费操作系统( ),经过许多人的努力,该操作系统正不断完善,并被推广应用。

答案: Linux

15、 将二进制数10111101001转换成十六进制数是( ).

答案: 5E9

16、 在下列设备中,属于输出设备的是( )。

答案: 绘图仪

17、 与十进制数97等值的二进制数是( )。

答案: 1100001

18、 .通常将运算器和( )合称为中央处理器,即CPU.

答案: 控制器

19、 假设字长8位,机器码-111100的补码为( )。

答案: 11000100

20、 可以随意读出或写入数据的存储器是( )。

答案: RAM

21、 内存中每个基本单位都被赋予唯一的序号,称为( )。

答案: 地址

22、 计算机中既可作为输入设备又可作为输出设备的是( ).

答案: 磁盘

23、 将十进制数653.5转换成八进制数是( )。

答案: 1215.4

24、 假为设字长8,读取内存中存储的二进制码为11000001,则其真值是( )

答案: -63

25、 ROM与RAM的主要区别在于( ).

答案: ROM可以永久保存信息,RAM在掉电后信息会丢失

 

第2章——计算:从数据运算开始,数据简单运算 第二章单元测试

1、 执行下面程序段的输出结果是( )。int x=23, y=5,z;z=2+(y++,x+8,x++); cout<<x<<” “<<z<<endl;

答案: 24 25

2、 若int型变量x=29,double型变量y=6.0,则表达式x/y的值为( ) 。

答案: 4.83333

3、 判断字符型变量ch是否为大写英文字母,应使用表达式( )。

答案: ch>=’A’ && ch<=’Z’

4、 int x=5, y=6;下列表达式结果为真的是( ) 。

答案: x==–y

5、 设有a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为( )

答案: 2

6、 执行下列语句后,输出的结果是( ).int a=3,b=5;double c=b/a;cout<<c<<endl;

答案: 1

7、 已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是( )。

答案: 5

8、 逗号表达式a=3,a++,a+=6的值是( )。

答案: 10

9、 已知下列语句中的x和y都是int型变量,其中错误的语句( )。

答案: (x+y)++;

10、 执行以下代码后,变量x、y、z的值分别为()int x=1,z=1,y=1,k;k=x++||++y&&++z

答案: 2 1 1

第二章 简单程序设计 第二章 单元测试

1、 下列字符串中不可以用作C++标识符的是( )。

答案: 2_a

2、 按照C++语言的规定,每个程序都必须有且仅有一个主函数,主函数的名称必须为( )。

答案: main

3、 执行下列程序的功能是( ) #include <iostream>using namespace std;int main(){ int a=10,b=20; a=a+b; b=a-b; a=a-b;return 0;}

答案: 交换a和b的值

4、 下列标识符号中,表示行注释的开始标识符是( ).

答案: //

5、 下列语句的输出结果是( ).int i=5,j=10;cout <<i<<j;

答案: 510

6、 表达式 x&&1 和下列哪个是等价的( )

答案: x

7、 对于下列代码段中关于变量 i,j下列说法正确的是( )#include <iostream>using namespace std;int main(){int i,j=6;cout<<i<<j<<endl;return 0;}

答案: i没有被初始化,j初始化值为6

8、 表达式(double)(10/4)*5 的结果是( )

答案: 10.0

9、 与x * = y + z等价的赋值表达式是( )

答案: x = x * (y + z)

10、 表达式17%4 /8的值为( )

答案: 0

 

第3章——分支结构:无处不在的抉择 第三章单元测试

1、 执行语句序列int n;cin >> n;switch(n++){ case 1: case 2: cout << ‘1’; case 3: case 4: cout << ‘2’; break; default: cout << ‘3’;}时,若键盘输入1,则屏幕显示( )。

答案: 12

2、 下面程序的输出结果是( ).#include<iostream>using namespace std;int main(){int a=2,b=-1,c=2;if (a<b) if (b<0) c=0;else c+=1;cout <<c<<endl;return 0;}

答案: 2

3、 为了避免嵌套的if-else语句的二义性,C++语言规定else总是与( )组成配对关系。

答案: 其之前未配对的最近的if

4、 与表达式if(!k)等价的是( )。

答案: if(k==0)

5、 以下代码执行后,a、b、c的值分别为( )。int a=8,b=10,c=3;if (a>b) c=a; a=b; b=c;

答案: 10 3 3

6、 下列描述正确的是( ) 。

答案: 如果至少有一个操作数为true,则包含”||”运算符的表达式为true

7、 下面程序的运行结果是( ).#include<iostream>using namespace std;int main( ){ int i=10; switch (i){ case 9:i++; case 10:++i; case 11:i++; default:i=i+1;}cout<<i<<endl;return 0;}

答案: 13

8、 若int a=6,则执行完下列语句后,a的值为( ).if (a>10) a-=5; a+=5;

答案: 11

9、 #include<iostream>using namespace std;int main(){int a=3;if(a=5)cout<<a+1<<endl;elsecout<<a<<endl;return 0;}程序的输出是( )。

答案: 6

10、 若x和y是程序中的两个整型变量,则下列if语句中正确的是( )。

答案: if(x==0) y=1; else y=2;

第三章 选择结构 第三章 单元测试

1、 若有定义“int a=1,b=2,c=3;”则执行以下程序段后a,b,c的值分别为( )。if (a<b){ c=a;a=b;b=c;}

答案: a=2,b=1,c=1

2、 以下程序的运行结果是( )。int main(){ int n=’c’; switch(n++) { default: cout<<“error”; break; case ‘a’: case ‘b’: cout<<“good “; break; case ‘c’: cout<<“pass “; case ‘d’:cout<<“warn “; }return 0;}

答案: pass warn

3、 以下if语句书写正确的是( )。

答案: if ( x > 0 ) { x = x + 1; cout << x; } else cout << -x;

4、 阅读下面语句,则程序的执行结果是() 。 #include<iostream>using namespace std;int main(){int a=-1,b=1;if((++a<0)&&!(b–<=0))cout<<a<<b<<endl;else cout<<b<<a<<endl; return 0;}

答案: 10

5、 有如下程序段 int a=14,b=15,x; char c=′A′; x=(a&&b)&&(c<′B′); cout<<x<<endl;执行该程序段后,x的值为()。

答案: 1

6、 有如下程序 #include<iostream>using namespace std;int main(){ double x=2.0,y; if(x<0.0) y=0.0; else if(x>10.0) y=1.0/x; else y=1.0; cout<<y<<endl; return 0;}

答案: 1

7、 有以下程序 #include<iostream>using namespace std;int main(){int a=5,b=4,c=3,d=2;if(a>b>c) cout<<d<<endl;else if((c-1>=d)==1) cout<<d+1<<endl;else cout<<d+2<<endl;return 0;}执行后输出结果是( )。

答案: 3

8、 阅读程序的结果是():#include<iostream>using namespace std;int main(){ int n=’e’; switch(n–) { default: cout<<“error “; case ‘a’: case ‘b’: cout<<“good “; break; case ‘c’: cout<<“pass”; case ‘d’: cout<<“warn”; } return 0;}

答案: error good

9、 写出以下程序的运行结果()。#include <iostream>using namespace std;int main( ){ int a=2,b=-1,c=2;if (a<b)if (b<0) c=0;else c=c+1; cout<<c<<endl; return 0;}

答案: 2

10、 对于整型变量x,下述if语句与赋值语句“x=x%2==0?1:0;”不等价的是( )。

答案: if (x%2) x=1; else x=0;

 

第4章——循环结构:周而复始,求同存异 第四章单元测试

1、 下面关于break语句的描述中,不正确的是( ).

答案: 一个break语句就可以跳出多重循环

2、 以下语句不正确的是( )。

答案: for( )也表示无限循环

3、 有如下程序:  #include<iostream>  using namespace std; int main( ){ int i ,f,f1=0,f2=1;  for( i=3;i<=6;i++){ f=f1+f2;  f1=f2;f2=f;  } cout<<f<<endl; return 0; }  运行时的输出结果是( )

答案: 5

4、 有如下程序段:int i=5;while (int i=0){ cout<<‘‘; i–; }运行时输出”“的个数是( )。

答案: 0

5、 执行完以下语句int i=0; do i++; while(i*i<10);时,do后面的循环体语句i++被执行的次数为 ( )

答案: 4

6、 有如下循环语句:for(int i=50; i>20; i-=2) cout<<i<<‘,’;运行时循环体的执行次数是( )

答案: 15

7、 有如下程序段: int i=1; while (1) { i++; if(i == 10) break; if(i%2 == 0) cout << ‘‘; } 执行这个程序段输出字符的个数是( )

答案: 4

8、 有如下程序:#include<iostream> using namespace std;int main( ){int sum;for(int i=0; i<6; i+=3){sum=i; for(int j = i; j<6; j++) sum+=j;} cout<<sum<<end1; return 0;}运行时的输出结果是( )。

答案: 15

9、 下面程序的运行结果是( )。#include<iostream>using namespace std;void main(){ int i,j,a=0; for(i=0;i<2;i++) { for (j=0; j<4; j++) { if (j%2) break; a++; } a++; } cout<<a<<endl;}

答案: 4

10、 有如下程序段:for (int i=1;i<=50;i++){ if (i%3!=0) continue;else if(i%5!=0) continue; cout<<i<<“,”;}执行这个程序段的输出是( )

答案: 15,30,45,

 

第四章 循环结构 第四章 单元测试

1、 若有整型变量x的当前值是3,则执行下列语句的结果是 。 do{ cout<<(x -= 2); }while( !(-x));

答案: 1

2、 在while(!a)中,其中!a与表达式 等价。

答案: a == 0

3、 下面程序段执行结果是( )。int y=9;for(;y>0;y–) if(y%3==0) cout<<–y<<’\t’;

答案: 8 5 2

4、 C++语言的跳转语句中,对于break 和 continue说法正确的是( )。

答案: continue语句只应用于循环体中。

5、 设有程序段int x=10; while (x=0) x=x-1;则下面描述中正确的( ) 。

答案: 循环体语句一次也不执行。

6、 写出下列代码运行后的结果 ( ) 。int i, j;for(i=-3; i<=1; i++){ j = i; while( j < 0 ) { if(j == -1) break; j++; }} cout<<i<<‘\t'<<j<<endl;

答案: 2 1

7、 执行下述程序段后, a,b的值分别是 。int a,b;for(b=1,a=1;b<=50;b++){ if(a>=10) break; if(a%2==1) { a+=5; continue; } a-=3;}

答案: 10和 6

8、 执行下面的语句序列,输出字符“$”和“”的个数分别是( ) 。int k=0;do {k+=5; cout<<‘$’;}while(k<19);while(k–>0) cout <<‘‘;

答案: 4和20

9、 有如下程序段,其执行结果是( )。int x=3;do{ x-=2; cout<<x;} while(!(–x));

答案: 1-2

10、 有如下程序段,执行这个程序段输出字符的个数是( )。int i=1;while(1){i++;if (i==10) break;if (i%3==0) cout<<““;}

答案: 3

 

第5章——数组:实现算法的利器 第五章单元测试

1、 要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是( )

答案: int x[ ]={0};

2、 在C++语言中,二维数组元素在内存中的存放顺序是( )。

答案: 按行优先存放

3、 在下述对C++语言字符数组的描述中,有错误的是( )。

答案: 可以在赋值语句中通过赋值运算符”=”对字符数组整体赋值。

4、 以下数组的初始化,正确的是( )。

答案: int a[]={1,2,3,4,5};

5、 下面关于数组的描述错误的是( )。

答案: 数组元素的个数在定义时可以缺省。

6、 下面程序的运行结果是( )。char c[5] = {‘a’,’b’,’ ‘,’c’, ‘ ‘};cout<<c;

答案: 以上都不是

7、 有如下程序段:char c[20]=”examination”;c[4]=0;cout<<c<<endl;执行这个程序段的输出是( )。

答案: exam

8、 以下程序运行后的输出结果是( )。int main( ) { char a[]=”abbcabbcabbc”; int i =0,j=0,k=0; while(a[i]) { if(a[i] ==’a’) j++; if(a[i]==’b’) k++; i++; } cout<<j<<” “<<k<<endl;return 0;}

答案: 3 6

9、 已知:int i,x[3][3] = {1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( ).for(i = 0;i < 3;i ++) cout<<x[i][2-i]<<” “;

答案: 3 5 7

10、 下面程序的运行结果是( ).#include <iostream>#include <cstring>using namespace std;int main( ){ char s1[10]=”abc”; char s2[20]=”inter”; int k=0,j=0; while (s2[k]) k++; while(s1[j]) s2[k–]=s1[j++]; cout<<s2<<endl;return 0;}

答案: intcba

第五章 数组与指针 第五章 单元测试

1、 以下数组定义正确的是()

答案: int i=5, a[ ‘5’ – ‘0’ ];

2、 有如下程序段int i=0, j=1;int &r=i ; //① r=j; //②int p=&i ; //③p=&r ; //④其中会产生编译错误的语句是( )。

答案: ④

3、 若有语句“int p=&k;”,与这个语句等效的语句序列是( )

答案: intp;p=&k ;

4、 下列语句中错误的是( )

答案: char str[5]=”point”;

5、 已知数组arr的定义如下:int arr[5]={1,2,3,4,5};下列语句中输出结果不是2的是( )。

答案: cout << arr <<endl;

6、 设有“char s1=”ABCDE”, S2=”ABCDE”, *S3=S1;”,下列表达式中值不等于true的是( )

答案: &s1==&s2

7、 执行下列语句后,屏幕的输出结果是( ).#include<iostream>using namespace std;int main(){int a=5;int pa=&a;int &b=a;b++;cout<<(pa)++<<endl;return 0;}

答案: 6

8、 若有以下定义和语句,且0<i<10,则对数组元素地址的正确表示是( ). int a[ ]={1,2,3,4,5,6,7,8,9,0},p,i; p=a;

答案: &p[i]

9、 #include<iostream>using namespace std;int main(){char p=0; p=’a’; cout<<“The value at p:”<<p; return 0;} 编译运行程序将出现的情况是( )。

答案: 运行时出错

10、 以下不能对二维数组正确初始化的是( )

答案: int a[2][3]={{1,2},{3,4},{5,6}};  

 

第6章——指针:所向披靡的“金箍棒” 魂 第6章单元测试

1、 下面程序的运行结果是( ).#include<iostream>using namespace std;int main ( ){ float a=1,b=2,c; float p1=&a,p2; p2=&b; c= * p1 + p2; cout<<p1<<”;}

答案: 1

2、 设有定义一维数组如下:int a[5],*p=a;,则下列描述中错误的是( ).

答案: 表达式a=a+1是合法的

3、 已知数组arr的定义如下: int arr[5] = {1,2,3,4,5}; 下列语句中输出结果不是2的是( )

答案: cout << arr <<endl;

4、 下列语句中,正确的是( )。

答案: charmyString=”Hello-World!”;

5、 已知:int m=10;在下列语句中错误的是( )

答案: int *p=new int[m]={0};

6、 下面程序的运行结果是( ).#include<iostream>using namespace std;void main(void){ int a[5]={10,20,30,40,50}; int p=&a[0]; p++; cout<<++p<<endl;}

答案: 21

7、 下列程序的输出结果是#include <iostream>using namespace std;int main(){ char a[] = “Hello, World”; char ptr = a; while (ptr) { if (ptr >= ‘a’ && ptr <= ‘z’) cout << char(ptr + ‘A’ -‘a’); else cout << ptr; ptr++; } return 0;}

答案: HELLO, WORLD

8、 已知有数组定义 char a[3][4]; 下列表达式中错误的是( )。 

答案: a[2]=”WIN” ;

9、 下列程序运行时的输出结果是( )。#include <iostream>using namespace std;int main() {int a[7]={23,15,64,33,40,58};int s1,s2,p;s1=s2=a[0];for(p=a+1;p;p++){if(s1>p) s1=p;if(s2<p) s2=p;}cout<<s2;return 0;}

答案: 64

10、 下面程序的运行结果是( ).#include<iostream>using namespace std;int main( ){int aa[3][3]={{1},{2},{3}},i,p=&aa[0][0];for(i=0;i<2;i++) {if(i==0) aa[i][i+1]=p+1; else ++p; cout<<*p<<” “;}cout<<endl;return 0;}

答案: 1 2

 

第6章——指针:所向披靡的“金箍棒” 魂 第六章 练一练 经典提高题

1、 阅读程序,回答问题:#include <iostream>#include<iomanip>using namespace std;int main(){ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int (p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a; cout<<p<<endl; p++; cout<<*p<<endl; return 0;}请问这两个输出的地址差是多少字节?

答案: 16

2、 阅读程序,回答下面问题:#include <iostream>#include<iomanip>using namespace std;int main(){ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int p[3]; //定义一个指针数组,表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2] p=a; cout<<p<<endl; p++; cout<<*p<<endl; return 0;}请问这两个输出的数据相差多少?

答案: 编译错误

3、 若定义 char s[2][3]={“ab”, “cd”}, p=(char )s;//字符型指针p存放的是字符串s的首地址,而字符串s表示的是这样一个字符串:那么下列表达式语法正确,并且其值与 s[1][1]相等的表达式(并非一定与其等价)是() //根据字符串的表示,s[1][1]是字符‘d’

答案: char(++p+2)

4、 #include<iostream>using namespace std;int main(){ int a[5] = { 1, 2, 3, 4, 5 }; int ptr = (int)(&a + 1); cout<< (a + 1)<<” “<< (ptr – 1)<<endl; return 0;}程序运行结果是什么?

答案: 2 5

5、 阅读程序,输出结果。#include<iostream>using namespace std;int main(){ int a[3][2] = { 1, 2,4, 5 }; int *p; p = a[0]; cout<<p[0]<<” “<<p[1]<<” “<<p[2]<<” “<<p[3]<<endl; p=a[1]; cout<<p[0]<<” “<<p[1]<<” “<<p[2]<<” “<<p[3]<<endl; p=a[2]; cout<<p[0]<<” “<<p[1]<<” “<<p[2]<<” “<<p[3]<<endl; return 0;}

答案: 1 2 4 5 4 5 0 00 0 不确定 不确定

6、 阅读程序,输出结果。#include<iostream>using namespace std;int main(){ int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int ptr1 = (int )(&aa + 1); int ptr2 = (int )((aa + 1)); cout<<(ptr1 – 1)<<” “<< *(ptr2 – 1); return 0;}

答案: 10 5

7、 阅读程序,输出结果#include<iostream>using namespace std;int main(){ char a[] = { “work”, “at”, “alibaba” }; char pa = a; pa++; cout<<pa<<endl; return 0;}

答案: at

8、 有定义语句:char s[3][10],(k)[3],p;则对于下列赋值语句,哪个是正确的?

答案: p = s[0];

9、 如定义 int a[3][4];下面哪个不能表示 a[1][1]?

答案: (&a[1]+1)

10、 阅读程序,输出结果#include<iostream>using namespace std; int main(){ int a[3][4]={{0,1,2,10},{3,4,5,11},{6,7,8,12}}; cout<<(&a[0][0])<<endl; cout<<a<<endl; cout<<(&a[1][0])<<endl; cout<<(a[0]+1)<<endl; cout<<(a+1)<<endl; return 0; }

答案: 0031第一行的首地址

第6章——指针:所向披靡的“金箍棒” 魂 第六章 练一练 经典基础题

1、 阅读程序,请输出程序的结果。#include<iostream>using namespace std;int main(){ int a[]={11,16,13,14,15}; int ptr = a; cout<<ptr<<endl; cout<<*(++ptr)<<endl; return 0; }

答案: 1116

2、 阅读程序,请输出程序的结果。#include<iostream>using namespace std;int main(){ int a[]={11,16,13,14,15}; int ptr = a; cout<<ptr<<endl; cout<<*(ptr++)<<endl; return 0; }

答案: 1111

3、 阅读程序,输出结果。#include<iostream>using namespace std;int main(){ int a[]={11,16,13,14,15}; int ptr = a; cout<<ptr<<endl; cout<<ptr++<<endl; cout<<a[0]<<endl; cout<<ptr<<endl; return 0; }

答案: 11111116

4、 #include<iostream>using namespace std;int main(){ int a[]={11,16,13,14,15}; int ptr = a; cout<<ptr<<endl; cout<<(ptr)++<<endl; cout<<a[0]<<endl; cout<<ptr<<endl; return 0; }

答案: 11111212

5、 阅读程序,输出结果。#include<iostream>using namespace std;int main(){ int a[]={11,16,13,14,15}; int ptr = a; cout<<ptr<<endl; cout<<(ptr++)<<endl; cout<<a[0]<<endl; cout<<ptr<<endl; return 0; }

答案: 11111116

6、 阅读程序,输出结果。#include<iostream>using namespace std;int main(){ int a[]={11,16,13,14,15}; int ptr = a; cout<<ptr<<endl; cout<<++ptr<<endl; cout<<a[0]<<endl; cout<<ptr<<endl; return 0; }

答案: 11161116

7、 阅读程序,输出结果。#include<iostream>using namespace std;int main(){ int a[]={11,16,13,14,15}; int ptr = a; cout<<ptr<<endl; cout<<++ptr<<endl; cout<<a[0]<<endl; cout<<ptr<<endl; return 0; }

答案: 11121212

8、 阅读程序,输出结果。#include<iostream>using namespace std;int main(){ int a[]={11,16,13,14,15}; int ptr = a; cout<<ptr<<endl; cout<<(++ptr)<<endl; cout<<a[0]<<endl; cout<<ptr<<endl; return 0; }

答案: 11161116

9、 阅读程序,输出结果#include<iostream>using namespace std;int main(){ int a[]={11,16,13,14,15}; int ptr = a; cout<<ptr<<” “<<*(++ptr)<<endl; return 0; }

答案: 16 16

10、 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请在黄色处选择合适的语句。#include<iostream>using namespace std;int main(){char p,s[6]; int n; p=s; cin>>p; n=p-‘0′; while( !=’\0’) n=n8+p-‘0’; cout<<n<<endl; return 0;}

答案: *++p

C++程序设计基础(华中科技大学) 第9章-经典基础题-钟类专题,点击这里查看


下方是付费阅读内容:本平台商品均为虚拟商品,无法用作二次销售,不支持退换货,请在购买前确认您需要购买的资料准确无误后再购买,望知悉!

暂无优惠



完整答案需点击上方按钮支付5元购买,所有答案均为章节测试答案,购买后上方矩形框将出现已付费的隐藏内容。


,

1、 下面的函数利用递归实现了求123…..n的功能:
int sum(int n){
if( n==1 || n == 0)
return 1;
else
return n
sum(n-1);
}
在执行sum(10)的过程中,递归调用sum函数执行的次数是( )。

答案: 9

2、 已知函数f的原型是:void f(int *a, long &b); 变量v1、v2的定义是:int x; long y;,正确的调用语句是( )。

答案: f(&x, y);

3、 为了提高系统调用函数时的执行速度,可以将程序调用平繁且简单的函数定义为( )。

答案: 内联函数

4、 不能作为函数重载的判断依据的是( )。

答案: 返回类型

5、 以下程序的执行结果是( )。
int fun(long b[],int n,long x)
{
int cnt=-1;
for(int i=0; i<n; i++)
if(b[i] == x) cnt=i;
return cnt;
}
int main()
{
long x = 7;
long a[5]={3,5,2,7,9};
cout<<fun(a,5,x)<<endl;
return 0;
}

答案: 3

6、 以下程序的执行结果是( )。
int fun(long b[],int n,long x)
{
int cnt=-1;
for(int i=0; i<n; i++)
if(b[i] == x) cnt=i;
return cnt;
}
int main()
{
long x = 7;
long a[5]={3,5,2,7,9};
cout<<fun(a,5,x)<<endl;
return 0;
}

答案: 3

7、 已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则( )。

答案: 若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

8、 下列函数原型声明中错误的是( )。

答案: void f(int a=0, int b);

9、 已知函数fun的原型为
int fun (double,int,int);
下列重载函数申明形式中错误的是______。

答案: double fun(double,int,int);

10、 函数定义为Fun(int &i),变量定义 n=5,则下面调用函数形式正确的是( )。

答案: Fun(n)

11、 有如下程序段:
int x=4;int y=1;
int main( ) {
int x=8,y=::y;
cout<<x<<y<<endl;
}
运行时的输出结果是( )。

答案: 81

 

第7章 函数:面向过程的基础 第7章单元测试

1、 有如下程序段:int i=4;int j=1;int main( ) {int i=8,j=i;cout<<i<<j<<endl;}运行时的输出结果是______。

答案: 88

2、 有以下程序#include<iostream>int i = 0 ; void fun(){ { static int i = 1; cout<<i++<<‘,’;}cout<<::i<<‘,’;}int main(){ fun(); fun(); return 0;}程序执行后的输出结果是( )

答案: 1,0,2,0,

3、 已知函数fun的原型为int fun (int,int,int);下列重载函数原型中错误的是______。

答案: float fun(int,int,int);

4、 下列函数原型声明中错误的是( )

答案: void Fun(int x=0, int y);

5、 已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则

答案: 若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

6、 为了提高函数调用的实际运行速度,可以将较简单的函数定义为

答案: 内联函数

7、 下面的函数利用递归实现了求1+2+3…..+n的功能:int sum(int n){ if( n==0 ) return 0; else return n+sum(n-1);}在执行sum(10)的过程中,递归调用sum函数的次数是( )。

答案: 10

8、 已知函数f的原型是:void f(int *a, long &b); 变量v1、v2的定义是:int v1; long v2;,正确的调用语句是( )。

答案: f(&v1, v2);

9、 有如下程序:#include<iostream> using namespace std; void f1(int& x, int& y) {int z=x; x=y; y=z;} void f2(int x; int y) {int z=x; x=y; y=z;} int main(){ int x=10,y=26; f1(x,y); f2(x,y); cout<<x<<endl; return 0; } 运行时的输出结果是

答案: 26

10、 以下程序的执行结果是( )。 int fun(int b[],int n){ int i,r=1; for(i=0;i<n;i++) r=r*b[i]; return r;}void main(){ int x,a[]={1,2,3,4,5,6,7,8}; x=fun(a,3); cout<<x<<endl;}

答案: 6

 

第8章 文件:让数据流动起来 第8章 练一练经典提高题 程序填空题

1、 下列程序的功能是:将M行N列的二维数组中的字符数据,按列的顺序依此放到一个字符串并将该字符显示在屏幕上,然后将此字符串的内容存入e:\out.txt文件中。请在程序( )位置填入适当的一条语使程序完整。请注意本题中的3个空分别是接下来的3个填空题,本题只需填入第一空位置//1 处的答案。#include <fstream>

include<iostream>

using namespace std;
const int M=3;
const int N=4;
int main()
{
char b[100],w[M][N]={{‘W’,’W’,’W’,’W’},{‘S’,’S’,’S’,’S’},{‘H’,’H’,’H’,’H’}};
ofstream wf;
( ) // 1
int i,j,k=0;
cout<<“The matrix:”;
for(i=0;i<M;i++)
{ for(j=0;j<N;j++)
cout<<w[i][j];
cout<<“”;
}
for(i=0;i<N;i++)
for(j=0;j<M;j++)
( ) //2
b[k]=’\0′;
cout<<“The A string:”;
cout<<b;
cout<<“”;
( ) //3
wf.close();
return 0;
}
答案: (以下答案任选其一都对)wf.open(“out.txt”);;
wf.open(“e:\out.txt”,ios::out);;
wf.open(“e:\out.txt”);;
wf.open(“E:\out.txt”);
分析:通过输出文件流对象打开out.txt 文件。

2、 题目题干见第1题。将第1题中第二空位置//2 处 的答案填入此题。
答案: (以下答案任选其一都对)b[k++]=w[j][i];;
{b[k]=w[j][i]; k++; };
{b[k]=w[j][i]; k=k+1;}
分析:将二维数组的元素赋值给数组b .

3、 题目题干见第1题。将第1题中第三空位置//3 处的答案填入此题。
答案: wf<<b;< span=””>
分析:将数组b输出到文件out.txt</b;<>

4、 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到e:\file1.txt文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。程序的运行结果是:Hello!1234598.76请在程序( )位置填入适当的一条语句使程序完整。请注意本题中的4个空//4 ,//5,//6, //7 分别对应问题4,问题5,问题6和问题7. 本题只需填入//4位置第一空的答案。#include <iostream>

include <fstream>

using namespace std;
void fun(char *s, int a, double f)
{
fstream fp;
char ch;
( ) //4
fp<<s; fp<<a; fp<<f;
fp.close();
( ) //5
cout<<“The result :”;
fp.get(ch);
while ( ) //6
{
cout<<ch;
( ) //7
}
cout<<endl;
fp.close();
}
int main()
{ char a[10]=”Hello!”;
int b=12345;
double c= 98.76;
fun(a,b,c);
return 0;
}
答案: (以下答案任选其一都对)fp.open(“file1.txt”,ios::out);;
fp.open(“file1.txt”,ios::out|ios::trunc);;
fp.open(“e:\file1.txt”,ios::out|ios::trunc);;
fp.open(“e:\file1.txt”,ios::out);;
fp.open(“E:\file1.txt”,ios::out);

5、 题目题干见第4题。将第4题中第二空位置//5 处的答案填入此题。
答案: (以下答案任选其一都对)fp.open(“file1.txt”);;
fp.open(“e:\file1.txt”);;
fp.open(“E:\file1.txt”);
分析:打开文件file1.txt .为读文件做准备。

6、 题目题干见第4题。将第4题中第三空位置//6 处的答案填入此题。
答案: (以下答案任选其一都对)fp.eof()==0;
!fp.eof()
分析:判断是否读到文件结尾。

7、 题目题干见第4题。将第4题中第四空位置//7 处的答案填入此题。
答案: fp.get(ch);
分析:从文件中依次读取一个个的字符。

8、 编写一个函数 intcharnum(char fn[ ]),该函数打开文件fn,,通过统计,返回文件中字符的个数。请在程序( )位置填入适当的一条语句使程序完整。请注意本题中的3个空//8, //9, //10 分别对应问题8,问题9和问题10 ,本题只需填入第一空位置//8 处的答案。#include <iostream>

include <fstream>

using namespace std;
int charnum(char fn[]);
int main()
{int num;
num=charnum(“abc.txt”);
cout<<“num=”<<num<<endl;
return 0;
}
int charnum(char fn[])
{
fstream file;
( ) //8
if(!file)
{cout<<“abc.txt can’t open”<<endl;
abort();
}
char ch;
int i=0;
file.get(ch);
while( ) //9
{
( ) //10
i++;}
file.close();
return i;
}
答案: file.open(fn);
分析:打开文件fn .

9、 题目题干见第8题。将第8题中第二空位置//9 处的答案填入此题。
答案: (以下答案任选其一都对)!file.eof();
file.eof()==0
分析:判断是否读到文件结尾。

10、 题目题干见第8题。将第8题中第三空位置//10 处的答案填入此题。
答案: (以下答案任选其一都对)file.get(ch);;
ch=file.get( );
分析:依次从文件中读取每个字符

第8章 文件:让数据流动起来 第8章 单元测试

1、 要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是(  )

答案: iomanip

2、 以下不能作为输出流对象的是(  )。

答案: 键盘

3、 C++系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是( )  

答案: cset 

4、 下列关于文件流的描述中,正确的是( )   

答案: 若输出流要打开的文件不存在,将建立一个新文件

5、 以下叙述中不正确的是( )

答案: C++语言中,随机读写方式不适用于文本文件

6、 以下不能正确创建输出文件对象并使其与磁盘文件相关联的语句是(  )。

答案: ofstream*myfile=new(“d:ofiletxt”);

7、 如果调用C++流进行输入输出,下面的叙述中正确的是( )

答案: 只能借助于流对象进行输入输出

8、 打开文件时可单独或组合使用下列文件打开模式  ①ios_base::app ②ios_base::binary  ③ios_base::in ④ios_base::out  若要以二进制读方式打开一个文件,需使用的文件打开模式为( ).

答案: ②③ 

9、 当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。

答案: ios_base::in

10、 执行语句序列ofstream outfile(“DATA.DAT”);if(…) cout << “OK”; else cout << “FAIL”;后,如果文件打开成功显示“OK”,否则就显示“Fail。”。由此可知,上面if语句的...处的表达式应是( ) .

答案: outfile.good() 或 outfile

第9章 以人为本:用类与对象诠释现实世界 第9章 单元测试

1、 下列关于构造函数的描述中,错误的是( )

答案: 构造函数可以有返回值

2、 在 C++中,编译系统自动为一个类生成缺省构造函数的条件是( )。

答案: 该类没有定义任何构造函数

3、 若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为( )

答案: a

4、 Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是  Sample a[2], q, p = new Sample;

答案: 3

5、 若MyClass是一个类名,且有如下语句序列 MyClass c1,c2; MyClass c3=new MyClass; MyClass &c4=c1;上面的语句序列所定义的类对象的个数是

答案: 2

6、 下列运算符函数中肯定不属于类FunNumber的成员函数的是

答案: int operator – (FunNumber,FunNumber)

7、 关于友元,下列说法错误的是

答案: 如果类A是类B的友元,那么类B也是类A的友元

8、 有以下类定义class Point {public: Point(int x = 0, int y = 0) { .x = x; .y = y; } void Move(int xOff, int yOff) { x += xOff; .y += yOff; } void Print() const { cout << ‘(‘ << _x << ‘,’ << _y << ‘)’ << endl; }private: int _x, _y;};下列语句中会发生编译错误的是

答案: const Point pt; pt.Move(l, 2);

9、 有如下两个类定义 class AA{ }; class BB{ AA v1,v2; BB v3; int v4; }; 其中有一个成员变量的定义是错误的,这个变量是

答案: v3

10、 有如下程序:#include<iostream>using namespace std;   class XA{int a;public: static int b; XA(int aa):a(aa){b++;} ~XA(){} int get(){return a;}};int X答案: 7

 

 

第七章 类和对象 第七章 单元测试

1、 1.有如下类定义: class Point{ int xx, yy; public: Point():xx(0)yy(0){} Point(int x, int y =0): xx(x), yy(y){}};若执行语句 Point a(2),b[3],*c[4];则 Point类的构造函数被调用的次数是()。

答案: 4次

2、 有如下程序: #include <iostream> using namespace std; class CD{ public: ~CD(){cout<<‘C’;} private: char name[80];}; int main(){ CD a, *b,d [2]; return 0;}执行这个程序的输出结果是()

答案: CCC

3、 Sample是一个类,且有如下语句: Sample a[2], *p = new Sample;执行这个语句时调用 Sample类的构造函数的次数是()

答案: 3

4、 关于构造函数的叙述正确的是( )。

答案: 构造函数的名字必须与类名完全相同

5、 已知类中的一个函数成员说明为:int f (C &a)。其中,C &a 的含义是

答案: a是类C的对象引用,用来作为f()的形参

6、 关于析构函数特征描述正确的是( )

答案: 析构函数不能指定返回类型

7、 下列静态数据成员的特性中,错误的是( )。

答案: 静态数据成员不是所有对象所共有的

8、 若有如下类声明: class MyClass{ public: MyClass(){cout<<1;}};执行下列语句 MyClass a, b[2], *[2];程序的输出结果是()

答案: 111

9、 已知TV是一个类,并有函数func定义如下: void func(){ TV li, *net[2]. company[3];}则在调用func()后,TV类的析构函数被调用的次数是()

答案: 4次

10、 ClassA是一个类,且有如下语句序列 ClassA cl, c2; ClassA c3=new MyClass; ClassA &c4=c1;则 ClassA的构造函数被调用的次数是()

答案: 2

 

第10章 从生物遗传说起,取其精华——继承与多态 第10章单元测试

1、 当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是  

答案: 公有或保护

2、 下列关于派生类的叙述中,错误的是。  

答案: 基类成员被派生类继承以后访问权限保持不变

3、 下列关于派生类和基类的描述中,正确的是( )

答案: 派生类成员函数只能访问基类的公有和保护成员

4、 生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )

答案: 派生类构造函数明确调用了基类构造函数

5、 在C++中用来实现运行时多态性的是( )

答案: 虚函数

6、 有如下类定义: class XX{ int xdata; public: XX(int n=0) : xdata (n) { } }; class YY : public XX{ int ydata; public: YY(int m=0, int n=0) : XX(m), ydata(n) { } }; YY类的对象包含的数据成员的个数是( )

答案: 2

7、 请按下面注释的提示,在横线处填入适当的内容将类B的构造函数定义补充完整。class A{ int a;public: A(int aa=0) { a=aa; }};class B: public A { int b; A c;public://用aa初始化基类A,用aa+1初始化类对象成员cB(int aa):__ { b=aa+2; }};

答案: A(aa), c(aa+1)

8、 下列关于虚基类的描述中,错误的是

答案: 声明“class B : virtual public A”说明类B为虚基类

9、 下面是类Shape的定义:  class Shape{  public:  virtual void Draw()=0;  };  下列关于Shape类的描述中,正确的是

答案: 类Shape是抽象类

10、 下列程序的输出结果是#include <iostream>using namespace std;class base { public: int n; base(int x) { n = x;} virtual void set(int m) { n = m; cout << n <<‘ ‘;}};class derive答案: 2 5

第11章 计算机等级考试二级C++ 全国等级考试二级C++模拟题(单选题部分)–不计入总分

1、 下列数据结构中,属于非线性结构的是()

答案: 二叉树

2、 下列数据结构中,能够按照先进后出原则存取数据的是()

答案: 栈

3、 对于循环队列,下列叙述中正确的是()

答案: 队头指针可以大于队尾指针,也可以小于队尾指针

4、 算法的空间复杂度是指()

答案: 算法在执行过程中所需要的计算机存储空间

5、 软件设计中划分模块的一个准则是()

答案: 高内聚低耦合

6、 程序流程图中带有箭头的线段表示是( )

答案: 控制流

7、 对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是( )

答案: 堆排序

8、 数据库管理系统是()

答案: 在操作系统支持下的系统软件

9、 在E-R图中,用来表示实体联系的图形是()

答案: 菱形

10、 设有学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,姓名),选课SC(学号,课号,成绩),则SC的关键字为( )

答案: 学号,课号

11、 下列符号中可以用做C++标识符的是()。

答案: _radius

12、 下列各组类型声明符中,含义相同的一组是()。

答案: signed short int和short

13、 必须用一对大括号括起来的程序段是()。

答案: 函数的函数体

14、 语句intp=k;定义了指针p,与这个语句等效的语句序列是()。

答案: int p;p=&k;

15、 执行下列语句段后,输出字符“”的个数是()。 for (int i=50; i> 1; i-=2) cout <<‘

答案: 25

16、 下列关于运算符重载的叙述中,错误的是()。

答案: 所有的运算符都可以通过重载而被赋予新的含义

17、 对C++编译器区分重载函数无任何意义的信息是()。

答案: 返回值类型

18、 运算符重载时不需要保持的性质是()。

答案: 操作数类型

19、 下列关于函数的描述中,错误的是()。

答案: 函数不能被定义为模板

20、 关于函数重载,下列叙述中错误的是()。

答案: 重载函数的返回值类型必须相同

21、 下列关于运算符重载的描述中,正确的是()。

答案: 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符

22、 有如下函数定义: void func(int a,int &b){a++;b++;}若执行代码段:int x=0,y=1; func(x, y);则变量x和y的值分别是()。

答案: 0和2

23、 对于一个类定义,下列叙述中错误的是()。

答案: 如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数

24、 有如下头文件: int f1(); static int f2(); class MA public: int f3(); static int f();在所描述的函数中,具有隐含的this指针的是()。

答案: f3

25、 下列关于类定义的说法中,正确的是()。

答案: 类定义中包括数据成员和函数成员的声明

26、 如果派生类以 protected方式继承基类,则原基类的 protected成员和public成员在派生类中的访问属性分别是()

答案: protected和protected

27、 下列有关继承和派生的叙述中,正确的是()。

答案: 派生类应当向基类的构造函数传递参数

28、 有如下类定义: class AA{ int a; public: AA(int n=0):a(n)}; class BB: public AA{ public:BB(int n)};其中处缺失的部分是()。

答案: :AA(n){ }

29、 有如下程序: #include <iostream> using namespace std; class CD{ public:CD(){cout<<“C”;} private: char name[80];}; int main( ){ CD a, *b,[2]; return 0;}执行这个程序的输出结果是()。

答案: CCC

30、 有如下程序:#include <iostream>using namespace std;class MyClass{public: MyClass(){++count;} ~ MyClass(){–count;} static int getCount(){ return count;}private: static int count;};int MyClass:: count=0;int main(){ MyClass obj; cout<<obj.getCount( ); MyClass *ptr=new MyClass ; cout<< MyClass::getCount( ); delete ptr; cout<< MyClass::getCount( ); return 0;}执行这个程序的输出结果是()。

答案: 121

31、 有如下程序: #include <iostream> using namespace std; class MyClass{ public: MyClass(int x): val(){}; void Print( ) const{ cout<<“const: val=”<<val<<‘\t’;} void Print(){ cout<<“val=”<<val<<‘\t’;} private: int val;}; int main( ){ const MyClass obj1(10); MyClass obj2(20); obj1. Print( ); obj2. Print ( ); return 0;}执行这个程序的输出结果是()。

答案: const:val=10 val=20

32、 有如下程序: #include <iostream> using namespace std; class Part{ public: Part(){} Part(int v){val=v;} ~Part(){cout<<val;}private: int val;}; class Whole{ public: Whole(int x,int y,int=0):p2(x),p1(y),val(0){ cout<<val;}Whole(){cout<<val;} private: Part p1, p2; int val;}; int main( ){ Whole obj(1,3); return 0;}执行这个程序的输出结果是()。

答案: 013

33、 有如下程序: #include <iostream> using namespace std; class Base{ public:Base (int x=0){cout<<x;}}; class Derived: public Base public: Derived(int x=0){ cout<<x;} private: Base val;} int main( ){ Derived d(1); return 0;}执行这个程序的输出结果是()。

答案: 001

34、 下列代码段中声明了3个类: class Person {}; class Student: public Person{}; class Undergraduate: Student{};下列关于这些类之间关系的描述中,错误的是()。

答案: 类 Undergraduate从类Student公有继承

35、 有如下程序: #include <iostream> using namespace std; class Base{ public: void output(){cout<<‘1’;} virtual void Print(){cout<<‘b’;}}; class Derived: public Base{ public: void output(){cout<<‘2’;} void Print(){cout<<‘d’;}}; int main( ){ Base *ptr=new Derived; ptr->output( ); ptr->Print( ); delete ptr; return 0;}执行这个程序的输出结果是()。

答案: 1D

36、 有如下程序:#include <iostream> using namespace std; class B{ public: virtual void show(){cout<<“b”;}}; class D: public B{ public: void show(){cout<<“d”;}}; void fun1(B ptr){ ptr->show();} void fun2(B &ref) {ref.show();} void fun3(B b){b.show();} int main( ){ B b,p=new D; D d; fun1(p); fun2(b); fun3(d); delete p; return 0;}执行这个程序的输出结果是()。

答案: DBB

37、 C++中的模板包括()

答案: 函数模板和类模板

38、 下列关于类模板的模板参数的叙述中,错误的是()。

答案: 模板参数不能作为成员函数的局部变量的类型

39、 下列关于C++预定义流对象的叙述中,正确的是()。

答案: cin是C++预定义的标准输入流对象

40、 有如下语句序列: char str[10];cin>>str;当从键盘输入“I love this game”时,str中的字符串是()

答案: “I”

 


不知道怎么购买?点此查看购买教程!


点关注,不迷路,微信扫一扫下方二维码

关注我们的公众号:阿布查查  随时查看答案,网课轻松过


为了方便下次阅读,建议在浏览器添加书签收藏本网页

电脑浏览器添加/查看书签方法

1.按键盘的ctrl键+D键,收藏本页面

2.下次如何查看收藏的网页?

点击浏览器右上角-【工具】或者【收藏夹】查看收藏的网页


手机浏览器添加/查看书签方法

一、百度APP添加/查看书签方法

1.点击底部五角星收藏本网页

2.下次如何查看收藏的网页?

点击右上角【┇】-再点击【收藏中心】查看

二、其他手机浏览器添加/查看书签方法

1.点击【设置】-【添加书签】收藏本网页

2.下次如何查看收藏的网页?

点击【设置】-【书签/历史】查看收藏的网页

阿布查查 » C++程序设计基础(华中科技大学) 中国大学mooc慕课答案2024版 m84896
+
账户
更新
搜索
帮助
主页