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 nsum(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.下次如何查看收藏的网页?
点击【设置】-【书签/历史】查看收藏的网页