0.074

五煦查题

快速找到你需要的那道考题与答案

超星C++面向对象程序设计_17答案(学习通2023课后作业答案)

73 min read

超星C++面向对象程序设计_17答案(学习通2023课后作业答案)

1.3章节测验

1、超星【单选题】一个C++程序的向对象程序设习通执行是从_____。
A、计答本程序的案学main函数开始,到main函数结束
B、课后本程序文件的作业第一个函数开始,到本程序文件的答案最后一个函数结束
C、本程序的超星main函数开始,到本程序文件的向对象程序设习通最后一个函数结束
D、本程序文件的计答第一个函数开始,到本程序main函数结束

2、案学【单选题】以下叙述正确的课后是_____。
A、作业在C++程序中main函数必须位于程序的答案最前面
B、C++程序的超星每行中只能写一条语句
C、C++语言本身没有输入输出语句
D、在对一个C++程序进行编译的过程中,可发现注释中的拼写错误

3、【单选题】以下叙述不正确的是_____。
A、一个C++源程序可由一个或多个函数组成
B、一个C++源程序必须包含一个main函数
C、C++程序的基本组成单位是函数
D、在C++程序中,注释说明只能位于一条语句的后面

4、【单选题】C++语言规定:在一个源程序中,main函数的位置_____。
A、必须在最开始
B、必须在系统调用的库函数的后面
C、可以任意
D、必须在最后

5、【单选题】以下叙述中正确的是_____。
A、C++语言的源程序不必通过编译就可以直接运行
B、C++语言中的每条可执行语句最终都将被转换成二进制的机器指令
C、C++源程序经编译形成的二进制代码可以直接运行
D、C++语言中的函数不可以单独进行编译

6、【单选题】以下叙述中正确的是_____。
A、C++语言是低级语言
B、C++语言可以不用编译就能被计算机识别执行
C、C++语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D、C++语言出现得最晚,具有其他语言的一切优点

7、【单选题】要把高级语言编写的源程序转换为目标程序,需要使用_____。
A、编辑程序
B、驱动程序
C、连接程序
D、编译程序

8、【单选题】一个C++程序是由_____个源程序文件(.cpp)组成。
A、0
B、1
C、多
D、1或多

9、【填空题】C++源程序文件的扩展名是____ 。

10、【填空题】每个程序都有且只有一个主函数,它的名称应写为____ 。

11、【填空题】C++语言源程序经____后生成后缀为obj的目标程序。

12、【填空题】C++程序经过编译、____步骤之后才能形成一个真正可执行的二进制机器指令文件。

13、【填空题】用C++语言编写的程序称为____,它以ASCII代码形式存放在一个文本文件中。

14、【填空题】在C++语言中,每个语句必须以____结束。

15、【填空题】行注释语句以____开头。

16、【填空题】当使用关键字____作为main函数返回类型时,该函数不返回任何值。

17、【填空题】机器语言是低级语言,C++语言是____。

18、【填空题】C++程序执行时,总是从名为____的函数开始的。

19、【简答题】一个C++程序是由_____。

20、【简答题】用C++语言编写的代码程序_____。

21、【简答题】为什么需要计算机语言?高级语言有哪些特点?

22、【简答题】请根据你的了解,叙述C++?的特点。C++?对C有哪些发展?

23、【简答题】一个C++的程序是由哪几部分构成的?其中的每一部分起什么作用?

24、【简答题】请说明编辑、编译、连接的作用。在编译后得到的目标文件为什么不能直接运行?

25、【简答题】#分析下面程序运行的结果。 #include <iostream> using namespace std; int main( ) { cout<<" This "<<" is "; cout<<" a "<<" C++ "; cout<<"program. " << endl; return 0; }#

26、【简答题】编程输出: 超星尔雅答案

***** How are you! 超星尔雅答案

*****

27、【简答题】编程输出: 超星尔雅答案

**** 超星尔雅答案

**** 超星尔雅答案

**** 超星尔雅答案

****

2.6章节测验

1、【单选题】C++语言基本类型包括_____。
A、整型、实型、逻辑型
B、整型、实型、字符型、逻辑型
C、整型、字符型、逻辑型
D、整型、实型、字符型

2、【单选题】C++语言中的标识符只能由字母、数字、下划线三种字符组成,且第一个字符_____。
A、必须为字母
B、必须为下划线
C、必须为字母或下划线
D、可以是字母、数字、下划线中任意一种字符

3、【单选题】C++语言中最简单的数据类型包括_____。
A、整型、实型、逻辑型
B、整型、实型、字符型
C、整型、字符型、逻辑型
D、整型、实型、逻辑型、字符型

4、【单选题】若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是_____。
A、-3
B、9
C、-12
D、6

5、【单选题】若t为double类型,表达式t=1,t+5,t++的值是_____。
A、1
B、6.0
C、2.0
D、1.0

6、【单选题】若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是_____。
A、1
B、2
C、2.0
D、2.5

7、【单选题】设a为5,执行下列语句后,b的值不为2的是_____。
A、b=a/2
B、b=6-(--a)
C、b=a%2
D、b=a>3?2:1

8、【单选题】下列四组选项中,均是不合法的用户标识符的选项是_____。
A、AP _0 do
B、float goto _A
C、b-a goto int
D、_123 temp INT

9、【单选题】下列选项中,合法的C++语言关键字是_____。
A、VAR
B、cher
C、integer
D、default

10、【单选题】下面不正确的字符串常量是_____。
A、'abc'
B、"12\'12"
C、"0"
D、" "

11、【单选题】下面不正确的字符常量是 _____。
A、"c"
B、'\''
C、'W'
D、' '

12、【单选题】下述程序段的输出结果是_____。 int x=10; int y=x++; cout<<(x++,y)<< ","<<y++<<endl;
A、11,10
B、11,11
C、10,10
D、10,11

13、【单选题】已知各变量的类型说明如下:int k,a,b; unsigned long w=5; double x=1.42; 则以下不符合C++语言语法的表达式_____。
A、x%(-3)
B、w+=-2
C、k=(a=2,b=3,a+b)
D、a+=a-=(b=d) *(a=3)

14、【单选题】已知字母A的ASCII编码为10进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为_____。
A、D
B、68
C、不确定的值
D、C

15、【单选题】以下所列的C++语言常量中,错误的是_____。
A、0xFF
B、1.2e0.5
C、2L
D、'\72'

16、【单选题】以下叙述正确的是_____。
A、在C++程序中main函数必须位于程序的最前面
B、C++程序的每行中只能写一条语句
C、C++语言本身没有输入输出语
D、在对一个C++程序进行编译的过程中,可发现注释中的错误

17、【单选题】以下运算符中,运算对象必须是整型的是_____。
A、/
B、%=
C、!=
D、〈=

18、【单选题】正确的标识符是_____。
A、?a
B、a=2
C、a.3
D、a_3

19、【单选题】在C++语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为_____。
A、char<int<1ong int<=float<double
B、char=int<long int<=float<double
C、char<int<long int=float=double
D、char=int=long int<=float<double

20、【单选题】假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是_____。
A、7
B、8
C、6
D、2

21、【单选题】以下不正确的叙述是_____。
A、在C++程序中,逗号运算符的优先级最低
B、在C++程序中,APA和apa是两个不同的变量
C、如果a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值保持
D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

22、【单选题】若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为_____。
A、4
B、16
C、32
D、52

23、【单选题】下列四组选项中,均不是C++语言关键字的选项是_____。
A、define IF type
B、getc char printf
C、include scanf case
D、while go pow

24、【单选题】下面四个选项中,均是C++语言关键字的选项是_____。
A、auto enum include
B、switch typedef continue
C、signed union scanf
D、if struct type

25、【单选题】下面四个选项中,均是合法整型常量的选项是_____。
A、160 -0xffff 011
B、-0xcdf 01a 0xe
C、-01 986.012 0668
D、-0x48a 3e5 0x

26、【单选题】下面四个选项中,均是合法转义字符的选项是_____。
A、'\'' '\\' '\n'
B、'\' '017' '\;;'
C、'018' 'f' 'xab'
D、'\\0' '\101' 'xlf'

27、【单选题】下面四个选项中,均是正确的八进制数或十六进制数的选项是_____。
A、-10 0x8f -011
B、0abc -017 0xc
C、0010 -0x11 0xf1
D、0a12 -0x123 -0xa

28、【单选题】己知各变量的类型说明如下:int i=8,k,a,b;unsigned long w=5; double x=1.42,y=5.2; 则以下符合C++语法的表达式是_____。
A、a+=a-=(b=4)*(a=3)
B、a=a*3=2
C、x%(-3)
D、y=float(i)

29、【单选题】写出下面赋值表达式运算后a的值_____,设原来a=12。 a+=a-=a*=a;
A、24
B、10
C、4
D、0

30、【单选题】已定义c为字符型变量,则下列语句中正确的是_____。
A、c='97';
B、c="97";
C、c=97;
D、c="a";

31、【单选题】已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是_____。
A、字符A
B、字符a
C、字符e
D、非法的常量

32、【单选题】以下程序运行后的输出结果是_____。#include <iostream>using namespace std;void main(){ char m; m='B'+32; cout<<m<<endl;}
A、B
B、b
C、66
D、98

33、【单选题】ASCII码(含扩展ASCII码)可以用一个字节表示,则可以表示的ASCII码值个数为_____。
A、1024
B、256
C、128
D、80

34、【单选题】以下选项中合法的字符常量是_____。
A、"B"
B、'\010'
C、68
D、D

35、【单选题】若变量a是int类型,并执行了语句:a='A'+1.6; 则正确的叙述是_____。
A、a的值是字符C
B、a的值是浮点型
C、不允许字符型和浮点型相加
D、a的值是字符'A'的ASCII值加上1

36、【单选题】英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为_____。
A、50
B、66
C、52
D、68

37、【单选题】下列属于合法的无符号短整型常数的选项是_____。
A、-2
B、65536
C、123L
D、50000

38、【单选题】有以下程序段:int m=0,n=0; char c='a'; cin>>m>>c>>n; cout<<m<<c<<n; 若从键盘上输入:10A10<回车>,则输出结果是_____。
A、10A10
B、10a10
C、10a0
D、10A0

39、【单选题】有以下程序: #include <iostream> using namespace std; void main() { char a='a',b; cout<<++a; cout<<(b=a++)<<endl; } 程序运行后的输出结果是_____。
A、bb
B、bc
C、ab
D、ac

40、【单选题】若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为_____。
A、a<>0
B、!a
C、a=0
D、a

41、【单选题】若变量c为char类型,能正确判断出c为小写字母的表达式是_____。
A、'a'<=c<= 'z'
B、(c>='a')||(c<= 'z')
C、('a'<=c)and ('z'>=c)
D、(c>='a')&&(c<='z')

42、【单选题】下列程序执行后的输出结果是_____。 #include <iostream> using namespace std; void main() { int x='f'; cout<<char('A'+(x-'a'+1)); }
A、G
B、H
C、I
D、J

43、【单选题】设有说明语句:char a='\72';则变量a _____。
A、包含1个字符
B、包含2个字符
C、包含3个字符
D、说明不合法

44、【单选题】以下选项中,非法的字符常量是_____。
A、'\t'
B、'\17'
C、"n"
D、'\xaa'

45、【单选题】下列运算符中,不属于关系运算符的是_____。
A、<
B、>=
C、==
D、!

46、【单选题】已定义ch为字符型变量,以下赋值语句中错误的是_____。
A、ch='\';
B、ch=62+3;
C、ch=NULL;
D、ch='\xaa';

47、【单选题】以下程序的输出结果是_____。 #include <iostream> using namespace std; void main() { char c='z'; cout<<c-25; }
A、a
B、Z
C、z-25
D、y

48、【单选题】语句”cout<< "a\bre\'hi\'y\\\bou\n";”的输出结果是_____。(说明:'\b'是退格符)
A、a\bre\'hi\'y\\\bou
B、a\bre\'hi\'y\bou
C、re'hi'you
D、abre'hi'y\bou

49、【单选题】有以下定义语句,编译时会出现编译错误的是_____。
A、char a= 'a';
B、char a='\n';
C、char a='aa';
D、char a='\x2d';

50、【单选题】有如下程序 #include <iostream> using namespace std; void main( ) { int y=3,x=3,z=1; cout<<(++x,y++)<<" "<<z+2<<endl; } 运行该程序的输出结果是_____。
A、3 4
B、4 2
C、4 3
D、3 3

51、【单选题】请读程序段:short int i=65536; cout<<i<<endl; 上面程序段的输出结果是_____。
A、65536
B、0
C、有语法错误,无输出结果
D、-1

52、【单选题】若x和y都是int型变量,x=100,y=200,且有下面的程序段: cout<<(x,y); 上述程序段的输出结果是_____。
A、200
B、100
C、100 200
D、输出不确定的值

53、【单选题】以下程序的输出结果是_____。 #include <iostream> #include <math.h> using namespace std; void main( ) { int a=1,b=4,c=2; float x=10.5 , y=4.0 , z; z=a+b/c+sqrt((double)y)*1.2/c+x; cout<<z; }
A、14.0
B、15.4
C、14.7
D、14.9

54、【单选题】以下不正确的叙述是_____。
A、在C++程序中,逗号运算符的优先级最低
B、在C++程序中,APA和apa是两个不同的变量
C、如果a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值保持不变
D、当从键盘输入数据时,对于整型变量只能输入整型数值,实型变量只能输入实型数

55、【单选题】语句cout<<"s\\t"的输出结果为_____。
A、s\\t
B、s\t
C、s\
D、s

56、【单选题】逻辑运算符两侧运算对象的数据类型_____。
A、只能是0或l
B、只能是0或非0正数
C、只能是整型或字符型数据
D、可以是任何类型的数据

57、【单选题】以下关于运算符优先顺序的描述中正确的是_____。
A、关系运算符<算术运算符<赋值运算符<逻辑与运算符
B、逻辑与运算符<关系运算符<算术运算符<赋值运算符
C、赋值运算符<逻辑与运算符<关系运算符<算术运算符
D、算术运算符<关系运算符<赋值运算符<逻辑与运算符

58、【单选题】下列运算符中优先级别最高的是_____。
A、<
B、+
C、&&
D、!=

59、【单选题】能正确表示”当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是_____。
A、(x>=1)&&(x<=10&&(x>=200)&&(x<=210)
B、(x>=1)||(x<=10)||(x>=200)||(x<=210)
C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D、(x>=1)||(x<=10)&&(x>=200)||(x<=210)

3.4章节测验

1、【单选题】执行以下程序段时______。 int x=-1; do { x=x*x; } while(! x);
A、循环体将执行一次
B、循环体将执行两次
C、循环体将执行无限次
D、系统将提示有语法错误

2、【单选题】以下程序的输出结果是______。 #include <iostream> using namespace std; void main( ) { int n=4; while(n--) cout<<(--n)<<" "; }
A、2 0
B、3 1
C、3 2 1
D、2 1 0

3、【单选题】在下列选项中,没有构成死循环的程序段是______。
A、int i=100; while(1) { i=i%100+1; if(i>100)break; }
B、for( ; ;) ;
C、int k=1000; do{ ++k;} while(k>=10000);
D、int s=36; while(s);--s;

4、【单选题】以下程序的输出结果是______。 #include<iostream> using namespace std; void main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2)continue; x++; } x++; } cout<<"x="<<x<<endl; }
A、x=4
B、x=8
C、x=6
D、x=12

5、【单选题】假定a和b为int型变量,则执行以下语句后b的值为______。 a=1; b=10; do { b-=a; a++; } while (b--<0) ;
A、9
B、-2
C、-1
D、8

4.7章节测验

1、【单选题】正确的函数定义形式为 。
A、void fun(void)
B、double fun(int x;int y)
C、int fun(int=0,int);
D、double fun(int x,y)

2、【单选题】若有函数调用语句:fun(a+b,(x,y),(x,y,z));此调用语句中的实参个数为 。
A、3
B、4
C、5
D、6

3、【单选题】必须用一对大括号括起来的程序段是 。
A、switch 语句中的case标号语句
B、if语句的分支
C、循环语句的循环体
D、函数的函数体

4、【单选题】C++中,关于默认形参值,正确的描述是 。
A、设置默认形参值时,形参名不能缺省
B、只能在函数定义时设置默认形参值
C、应该先从右边的形参开始向左边依次设置
D、应该全部设置

5、【单选题】关于C++主函数特性,下列叙述正确的是 。
A、主函数在同一个C++文件中可以有两个
B、主函数类型必须是void类型
C、主函数一定有返回值
D、每个C++程序都必须有一个main函数

6、【单选题】在C++语言中,main函数默认返回一个 类型的值。
A、int
B、float
C、char
D、void

7、【单选题】若同时定义了如下函数,fun(8,3.1)调用的是下列哪个函数 。
A、void fun(float,int)
B、void fun(double,int)
C、void fun(char,float)
D、void fun(double,double)

8、【单选题】在“文件包含”预处理命令形式中,当#include后面的文件名用< >(尖括号)括起时,寻找被包含文件的方式是 。
A、直接按系统设定的标准方式搜索目录
B、先在源程序所在目录中搜索,再按系统设定的标准方式搜索
C、仅仅搜索源程序所在目录
D、仅仅搜索当前目录

9、【单选题】C++语言中规定函数的返回值类型是由 。
A、return 语句中的表达式类型所决定
B、调用该函数时的主调用函数类型所决定
C、调用该函数时系统临时决定
D、在定义该函数时指定的数据类型所决定

10、【单选题】有函数原型void fun4(int &);下面选项中,正确的调用是 。
A、int x=2.17; fun4(&x);
B、int a=15:fun4(a*3.14);
C、int b=100; fun4(b).;
D、fun4(256):

11、【单选题】下面程序执行后的输出结果是 。 #include <iostream > using namespace std; #define MAX(x,y) x>y?x:y void main() { int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; cout<<t; }
A、9
B、8
C、7
D、6

12、【单选题】下列的描述中 是错误的。
A、使用全局变量可以从被调用函数中获取多个操作结果
B、局部变量可以初始化,若不初始化,则系统默认它的值为0
C、当函数调用完后,静态局部变量的值不会消失
D、全局变量若不初始化,则系统默认它的值为0

13、【单选题】以下叙述中不正确的是 。
A、函数中的自动变量可以赋初值,每调用一次,赋一次初值
B、在调用函数时,实参和对应形参在类型上只需赋值兼容
C、外部变量的隐含类别是自动存储类别
D、函数形参可以说明为register变量

14、【单选题】下列选项中, 具有文件作用域。
A、函数形参
B、局部变量
C、全局变量
D、静态变量

15、【单选题】以下有关宏替换的叙述中错误的是 。
A、宏替换不占用运行时间
B、宏名无类型
C、宏替换只是字符替换
D、宏名必须用须用大写字母表示

16、【单选题】在任何情况下计算平方都不会引起二义性的宏定义是 。
A、#define POWER(x) ((x)*(x))
B、#define POWER(x)(x)*(x)
C、# define POWER(x) (x* x)
D、#define POWER(x) x* x

17、【单选题】设#define P(x) x/x,执行语句cout <<P(3 *5);后的输出结果是 。
A、1
B、25
C、0
D、15

18、【单选题】下列不是函数重载所要求的条件是 。
A、函数名相同
B、参数个数不同
C、参数类型不同
D、函数返回值类型不同

19、【单选题】如果在一个源文件中定义的函数只能被本文件中的函数调用,而不能被同一程序的其他文件中的函数调用,则说明这个函数是 。
A、私有函数
B、内部函数
C、外部函数
D、库函数

20、【单选题】在C++中把不返回任何类型的函数说明为 。
A、int
B、float
C、char
D、void

21、【单选题】假定n=2,下列程序的运行结果是 。 #include<iostream> using namespace std; int fun(int m); void main() { cout << "please input a number :"; int n, s = 0; cin >> n; s = fun(n); cout << s << endl; } int fun(int m) { int p =1, s = 0; for (int i = 1; i <= m; i++) { p *= i; s += p; } return s; }
A、1
B、3
C、5
D、7

22、【单选题】在编译指令中,宏定义使用 指令。
A、# include
B、#if
C、#define
D、#else

23、【单选题】在参数传递过程中,对形参和实参的要求是 。
A、参数定义时,形参一直占用存储空间
B、实参可以是常量、变量或表达式
C、形参可以是常量、变量或表达式
D、形参和实参类型和个数都可以不同

24、【单选题】在C++中所有的函数名称后面都紧跟着一对括号,其中既可以没有内容,也可以包含函数的参数,这对括号是 。
A、()
B、<>
C、[]
D、{ }

25、【单选题】在函数中,可以用auto,extern,register和static这4个关键字中的一个来说明变量的存储类型。如果不说明存储类型则默认的存储类型是 。
A、auto
B、extern
C、register
D、static

26、【单选题】在函数的定义格式中,下面各组成部分中, 是可以省略的。
A、函数名
B、函数数据类型说明
C、函数体
D、函数参数

27、【单选题】下面程序执行后的输出结果是 。 #include <iostream> using namespace std; #define ADD(x) x+x void main() { int m = 1, n = 2, k=3, sum; sum = ADD(m + n)*k; cout << sum; }
A、9
B、18
C、12
D、10

28、【单选题】使用值传递方式将实参传给形参,下列说法正确的是 。
A、形参是实参的备份
B、实参是形参的备份
C、形参和实参是同一对象
D、形参和实参无联系

29、【单选题】下列函数调用中,对调用它的函数没有起到任何作用的是 。
A、void fl(double &.x){ --x;}
B、double f2(double x){ return x-1.5;}
C、void f3(double x){ --x;}
D、double 14(double * x){ --*x;return * x;}

30、【单选题】内部静态变量的作用域是 。
A、定义该静态变量的函数外部
B、定义该静态变量的函数内部
C、定义该静态变量的文件外部
D、定义该静态变量的文件内部

31、【单选题】以下正确的说法是 。
A、用户若需要调用标准函数,调用前必须重新定义
B、用户可以直接调用所有标准库函数
C、用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数
D、用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数

32、【单选题】在 的情况下适宜采用inline 定义内联函数。
A、函数体含有循环语句
B、函数体含有递归语句
C、函数代码少、频繁调用
D、函数代码多、不常调用

33、【单选题】不能实现函数之间数据传递的是 。
A、全局变量
B、局部变量
C、函数接口
D、函数返回值

34、【单选题】在C++中编写一个内联函数Fsqu,使用double类型的参数,求其平方并返回,返回值为double类型,下列定义正确的是 。
A、double Fsqu(double x){ returnx*x;}
B、inline double Fsqu(double x){ returnx*x;}
C、double inline Fsqu(double x)(returnx*x;)
D、double Fsqu (double x){ inine return x*x;}

35、【单选题】下列对定义重载函数的要求中, 是错误的提法。
A、要求参数的个数相同
B、要求参数的类型相同时,参数个数不同
C、函数的返回值可以不同
D、要求参数的个数相同时,参数类型不同

36、【单选题】下面程序执行后的輸出结果是 。 #include < iostream > using namespace std; #define MA(x) x*x-1 void main() { int a=1,b=2; cout<<MA(l+a+b); }
A、12
B、10
C、8
D、6

37、【单选题】重载函数在调用时选择的依据中,错误的是 。
A、函数的参数
B、参数的类型
C、函数的名字
D、函数返回值类型

38、【单选题】下面程序执行后的输出结果是 。 #include < iostream > using namespace std; # define DOUBLE (r) r*r void main() { int x=1,y=2,t; t = DOUBLE(x+y) ; cout<< t; }
A、5
B、5.0
C、4
D、9.0

39、【单选题】下面程序执行后的输出结果是 。 #include < iostream > using namespace std; #define R 0.5 #define AREA(x) R*x*x void main() { int a=1, b=2; cout<<AREA(a+b); }
A、0.0
B、0.5
C、3.5
D、4.5

40、【单选题】下列关于函数参数默认值的描述中,正确的是 。
A、函数参数的默认值只能设置一个
B、若一个函数含有多个参数,其中一个参数设置成默认值后,其后所有参数都必须设置默认值
C、若一个函数含有多个参数,则设置默认参数时可以不连续设置默认值
D、C++语言中函数都必须设有默认值

41、【单选题】若有宏定义#define MOD(x,y) x%y,下面程序段的结果是 。 int z,a=15; float b= 100; z= MOD(b,a); cout<<z++;
A、语法错误
B、11
C、10
D、6

42、【单选题】若调用一个函数,且此函数中没有return语句,则正确的说法是该函数 。
A、没有返回值
B、返回若千个系统默认值
C、有返回值,但返回一个不确定的值
D、返回一个用户所希望的函数值

43、【单选题】下面程序执行后的输出结果是 。 #include < iostream > using namespace std; #define
A、3 #define
B、2* A #define
C、B+A void main() { int a=B; cout<<C<<"_ "<<--a<<endl; } A.9_5 B.2_3 C. 7_5
D、9_3

44、【单选题】下列函数原型声明中错误的是 。
A、void fun(int x=0,int y=0);
B、void fun(int x,int y);
C、void fun(int x,int y=0);
D、void fun(int x=0,int y);

45、【单选题】若有宏定义: #define N 3 #define Y(n) ((N+1) *n) 则表达式2* (N+Y(5+1))的值是 。
A、48
B、42
C、54
D、出错

46、【单选题】一个函数为void x(int,char ch='a'),另一个函数为void x(int),则它们 。
A、不能在同程序中定义
B、可以在同一程序中定义并可重载
C、可以在同程序中定义,但不可以重载
D、以上说法均不正确

47、【单选题】设存在函数int min(int,int)返回两参数中较小值,若求10,55,78 三者中最小值,下列表达式不正确的是 。
A、int m= min(10, min(55,78));
B、int m=( min(10,55),78);
C、int m= min(10,55,78);
D、int m= min(55,min(10,78));

48、【单选题】下列 类型函数不适合声明为内联函数。
A、函数体语句较多
B、函数体语句较少
C、函数执行时间较短
D、函数执行时间过长

49、【单选题】进行初始化即可自动获取初值为0的变量包括 。
A、任何用static 修饰的变量
B、任何在函数外定义的变量
C、局部变量和用static修饰的全局变量
D、全局变量和用static修饰的局部变量

50、【单选题】对于某个函数调用,不给出调用函数的声明的情况是 。
A、被调用函数是无参函数
B、被调用函数是无返回值的函数
C、函数的定义在调用处之前
D、函数的定义在别的程序文件中

51、【单选题】所有在函数中定义的变量,连同形式参数都是 。
A、全局变量
B、局部变量
C、静态变量
D、寄存器变量

52、【单选题】下列叙述中错误的是 。
A、一个函数中可以有多条return语句
B、调用函数必须在一条独立的语句中完成
C、函数中通过return语句传递函数值
D、主函数名main也可以带有形参

53、【单选题】在一个C++源程序文件中定义的全局变量的有效范围是 。
A、该C++程序的所有源程序文件
B、本源程序文件的全部范围
C、从定义变量的位置开始到本源程序文件结束
D、函数内部全部范圈

54、【单选题】不合法的main函数命令行参数表示形式是 。
A、main(int a,char * c[1])
B、main(int arc,char **arv)
C、main(int argc,char * argv)
D、main(int argy,char *argc[])

55、【单选题】下面关于C++语言变量的叙述错误的是 。
A、C++语言中分为auto、static、extern和registr这4种存储类型
B、自动变量和外部变量的作用城为整个程序
C、内部静态变量的作用城是定义它的函数
D、外部静态变量的作用城是定义它的文件

56、【单选题】下面程序执行后的输出结果是 。 #include < iostream > using namespace std; #define f(x) (x) * (x) void main() { int i1,i2; i1=f(8)/f(4); i2=f(4+ 4)/f(2+2); cout<<i1<<","<<i2; }
A、64,28
B、4,4
C、4,3
D、64, 64

57、【单选题】定义宏将两个float类型变量的数据交换,下列写法中最好的是 。
A、#define jh(a,b) t=a;a= b;b=t;
B、#define jh(a,b) { float t;t=a;a=b;b=t;}
C、#define jh(a,b) a=b;b=a;
D、# define jh(a,b,t) t-a;a=b;b=t;

58、【单选题】已知宏定义#define p(x,y,z) x=y*z;,则宏替换p(a,x+5,y-3.1)应为 。
A、a=x+5* y-3,1;
B、a=(x+5) * (y-3.1); B. a=x+5*y-3.1 D. a-(x+5)* (y-3.1)

59、【单选题】在函数的返回值类型与返回值表达式类型的描述中,错误的是 。
A、函数返回值的类型是在定义函数时确定的,在函数调用时不能改变
B、函数返回值的类型就是返回值表达式的类型
C、函数返回值的类型与返回值表达式类型不同时,函数表达式类型应转换成返回值类型
D、函数返回值的类型决定了返回值表达式的类型

60、【单选题】以下叙述中错误的是 。
A、预处理命令行都必须以#开始
B、在程序中凡是以#开始的语句行都是预处理命令行
C、C++程序在执行过程中对预处理命令行进行处理
D、预处理命令行可以出现在C++程序中任意一行上

61、【单选题】在下划线处填上求两个浮点数之差的cha函数的原型声明、调用方法. #include <iostream> using namespace std; void main() { float a, b; (1_____________) //函数cha的原型声明;
A、= 12, 5;
B、= 6.5; float
C、= (2___________); //调用函数cha cout << c << endl; }
D、float cha(float x, float y) {
E、float w; w = x - y;
F、return w;}

62、【填空题】当函数参数表用____保留字表示时,表示该参数表为空。

63、【填空题】在C++程序中,所有函数在使用前都要使用相应的函数原型语句加以声明,但____函数不需要声明。

64、【填空题】用预处理指令#define声明一个常数,用来表明1年中有多少秒(忽略闰年问题),应该写成____。

65、【填空题】在C++中函数原型不但能标识函数的____,而且能标识函数参数的____。

66、【填空题】____可以删除由#define定义的宏,使之不再起作用。

67、【填空题】在调用一个函数的过程中可以直接或间接地调用该所数,这种调用称为___调用,该函数称为____函数。

68、【填空题】C++提供的预处理命令有嵌入指令、条件编译指令和____。

69、【填空题】重新定义标识符的作用域规定是外层变量被隐藏,____变量是可见的。

70、【填空题】已知递归函数f的定义如下: int f(int n){ f (n<=1) return 1; //递归结束情况 else return n* f(n-2);} //递归 则函数调用语句f(5)的返回值是____。

71、【填空题】关键字static有三个明显作用:____,____和____。

72、【填空题】写一个”标准”宏MIN,这个宏输入两个参数并返回较小的一个:____。

73、【填空题】在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是____定义的头文件。

74、【填空题】函数调用func( (exp1 ,exp2),(exp3,exp4 ,exp5))中所含实参的个数为____。

75、【填空题】一个函数带有参数说明时,参数的默认值应该在____中给出。

76、【填空题】在下划线处填上适当字句,完成求最大值函数模板的定义。 #include <iostream> using namespace std; template <typename T> T Max(T x, T y) { return(x>y ? x : y); } (1____) T Max(T x, T y, T z) { T t=Max(x,y); return((2____)); } void main() { int x; double y; x = Max(5, 6); y = Max(12.3, 3.4, 7.8); cout << "x=" << x<"y="<y<end1; }

77、【填空题】下面程序三次调用同一函数sum,在下划线处填上适当内容,使输出结果为: S=2 5=5 S=9 #include <iostream> using namespace std; void sum(int i) { static int s; (1____); cout << "s=" << s << end; } void main(void) { int 1; for (1 = 0; (2____)) sum(i); }

78、【填空题】在下面程序下划线处填上适当内容,使程序执行结果为: 200________100 #include <iostream> using namespace std; Template(1____) T f(T x, T y){ if (sizeof(T) == (2____)) return x + y; else return x*y; } void main() { cout << f(10, 20) << "--" << (45.5, 54.5) << endl; }

79、【填空题】在下划线处填上适当字句,完成求最大值函数模板的定义。 #include <iostream> using namespace std; template <typename T> T Max(T x, T y) { return(x>y ? x : y); } (1____)); } void main() { int x; double y; x = Max(5, 6); y = Max(12.3, 3.4, 7.8); cout << "x=" << x<"y="<y<end1; }

80、【填空题】请写出程序的运行结果。 include<iostream> using namespace std; int f____ { int c; if ____ c = l; else if ____ c = 0; else c = -1; return ____; } void main____ { int i = 2, j = 3; int p = f____; cout << p << endl; }

81、【填空题】请写出程序的输出结果。 #include < iostream> using namespace std; void f2____ { int z = x; x = y; y = z; } void main____ { int x = 10, y = 26; cout << "x, y=" << x << "," << y << endl; f2____; cout << "x, y=" << x << "," << y << endl; x++; y--; f2____; cout << "x, y=" << x << "," << y << endl; }

82、【填空题】阅读下列程序,并写出输出结果。 #include<iostream > using namespace std; int f(int); void main(){ int i; for (i = 0; i<3; i++) cout << f(i) << "____"; cout << endl; } int f(int a) { int b = 0; static int c = 3; b++; c++; return(a + b + c); }

83、【填空题】阅读下列程序,并写出输出结果。 #include<iostream> using namespace std; int min____{ return a<b ? a : b; } int min____{ int t = min____; return____); } int min____{ int t1 = min____; int t2 = min____; return min____; } void main____ { cout << min____ << endl; cout << min____ << endl; }

84、【填空题】写出下面程序执行后的运行结果。 #include< iostream> using namespace std; #define N 1 #define MN+ 2 #define NUM 3*M+1 void main____ { int i; for ____ cout<<i; }

85、【填空题】写出下面程序执行后的运行结果。 #include< iostream> using namespace std; # include <math.h> #define ROUND____ ____ ____*pow ____ + 0. 5) /pow ____) void main____ cout<<ROUND ____<< "," <<ROUND____; }

86、【填空题】写出下面程序执行后的运行结果。 #include< iostream> using namespace std; #define RELEASE 0 void main____ { int i;char str[20]="Northwest",c; for ____!='\0';i++) { #ifdef RELEASE if ____ c=c-32; #else if ____ c=c+32; #endif cout<<c; } }

87、【填空题】写出下面程序执行后的运行结果。 #include< iostream> using namespace std; void main____ { int b = 5, y = 3; #define b 2 #define f____ b*x cout << f____; #undef b cout << f____; #define b 3 cout << f____; }

88、【填空题】写出下面程序执行后的运行结果。 #include< iostream> using namespace std; #define DEBUG void main____ { int a = 20, b =10, c; c = a / b; #ifdef DEBUG cout << a << "/" << b << "="; #endif cout << c; }

89、【填空题】编写求n!____,然后编写函数原型为double cmk____,调用阶乘函数计算Ckm,计算公式为Ckm=m!/____!),在主函数中输入m、k,调用这两个函数计算C83的结果。

90、【填空题】用递归的方法编写函数求n阶勒让德多项式的值,在主程序中实现输入、输出;递归公式为: 其中n和x为任意正整数,计算当x=10时的P1____,P2____,…P30____。在主函数中输入数据并调用函数得到结果。

91、【填空题】编写递归函数getpower____,计算x的y次幂,在主程序中实现输入输出。

92、【填空题】汉诺____塔问题是一个经典问题。有三根细柱A,B,C, 柱A上套有n个从小到大的圆盘,小的在上,大的在下,要求把这n个盘移到C柱上,在移动的过程中可以借助B柱,每次只许动一个盘,且在移动过程中在三根柱上总是保持大盘在下,小盘在上。编写程序来完成盘子的移动,打印出移动的步骤。

93、【填空题】三角形的面积为area= ,其中s=____ /2, a,b,c为三角形的三边。定义两个带参数的宏,一个用来求s,另一个用来求area。编写程序在主函数中用带实参的宏名来求三角形的面积。

94、【填空题】我国最新的个人所得税(工资所得)缴纳方法为:每月取得工资收入后,先减去个人承担的基本养老保险金、医疗保险金、失业保险金,以及按省级规定标准缴纳的住房公积金及专项附加扣除项目,再减去费用扣除额60000元/年,为应纳税所得额,按3%~45%的7级超额(下表所示)累进税率计算缴纳个人所得税。计算公式为:应纳个人所得税税额=应纳税所得额×适用税率 - 速算扣除数。 级数 全年应纳税所得额 税率(%) 速算因子 1 不超过36000元的 3 0 2 超过36000元至144000元的部分 10 210 3 超过144000元至300000元的部分 20 1410 4 超过300000元至420000元的部分 25 2660 5 超过420000元至660000元的部分 30 4410 6 超过660000元至960000元的部分 35 7160 7 超过960000元的部分 45 15160 将上述个人所得税缴纳计算用带参数宏定义出来,使用这个宏定义,编写程序计算应缴纳所得税金额。

95、【填空题】使用模板函数实现swap____,函数功能为交换x,y的值

96、【填空题】编写程序,在主程序中输入两个数opl、op2以及一个字符com,然后根据com的值____,选择4个函数调用并显示结果。这4个函数的原型为: int add____:计算a,b的加法。 int sub____:计算a,b的减法。 int mul____:计算a,b的乘法。 int div____:计算a,b的除法。

97、【简答题】指令指示编译器将一个源文件嵌入到带该指令的源文件之中。

98、【简答题】给定一个十进制正整数n,判断其是否为完数。所谓完数是指不包括其本身的所有因数之和恰好等于其本身的数。例如,6是一个完数,因为6的因数有1.2.3.6,不包含6本身的因数和为1+2+3,恰好为6.请写一个函数来判断一个数是否为完数。

99、【简答题】我国最新的个人所得税(工资所得)缴纳方法为:每月取得工资收入后,先减去个人承担的基本养老保险金、医疗保险金、失业保险金,以及按省级规定标准缴纳的住房公积金及专项附加扣除项目,再减去费用扣除额60000元/年,为应纳税所得额,按3%~45%的7级超额(如下表所示)累进税率计算缴纳个人所得税。计算公式为:应纳个人所得税税额=应纳税所得额×适用税率 - 速算扣除数。 将上述个人所得税缴纳计算用带参数宏定义出来,使用这个宏定义,编写程序计算应缴纳所得税金额。

100、【简答题】空

101、【简答题】空

102、【简答题】空

103、【简答题】空

104、【简答题】空

105、【简答题】空

5.4章节测验

1、【单选题】在C++语言中,引用数组元素时,其数组下标的数据类型允许是 。
A、整型常量
B、整型表达式
C、整型常量或整型表达式
D、任何类型的表达式

2、【单选题】在C++语言中引用数组元素时,关于数组下标数据类型的说法错误的是 。
A、整型常量
B、整型表达式
C、整型常量或整型表达式
D、任何类型的表达式

3、【单选题】若有说明:int a[10];则对a数组元素的正确引用是 。
A、a[10]
B、a[3.5]
C、a(5)
D、a[10-10]

4、【单选题】下列关于数组的描述正确的是 。
A、数组的长度是固定的,而其中元素的数据类型可以不同
B、数组的长度是固定的,而其中元素的数据类型必须相同
C、数组的长度是可变的,而其中元素的数据类型可以不同
D、数组的长度是可变的,而其中元素的数据类型必须相同

5、【单选题】以下对一维整型数组a的正确说明是 。
A、int a(10);
B、int n=10,a[n];
C、int n; cin>>n; int a[n];
D、#define SIZE 10 int a[SIZE];

6、【单选题】以下叙述中错误的是 。
A、对于double类型的数组,不可以直接用数组名对数组进行整体输入或输出
B、数组名代表的是数组所占存储区的首地址,其值不可改变
C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D、可以通过赋初值的方式确定数组元素的个数

7、【单选题】要定义数组A,使得其中每个元素的数据依次为3,9,4,8,0,0,0,错误的定义语句是 。
A、int A[]={ 3,9,4,8,0,0,0};
B、int A[9]={ 3,9,4,8,0,0,0};
C、int A[]={ 3,9,4,8};
D、int A[7]={ 3,9,4,8};

8、【单选题】对以下说明语句的正确理解是 。 int a[10]={ 6,7,8,9,10};
A、将5个初值依次赋给a[1]至a[5]
B、将5个初值依次赋给a[0]至a[4]
C、将5个初值依次赋给a[6]至a[10]
D、因为数组长度与初值的个数不相同,所以此语句不正确。

9、【单选题】有数组声明int value[30];下标值引用错误的是 。
A、value[30]
B、value[0]
C、value[l0]
D、value[20]

10、【单选题】下列一维数组定义正确的是 。
A、x=6;int num[x];
B、const int x= 6; float a[x];
C、const float x= 6; int b[x];
D、const int x; int c[x];

11、【单选题】下面的二维数组定义中正确的是 。
A、int a[][]={ l,2,3,4,5,6};
B、int a[2][]={ 1,2,3,4,5,6};
C、int a[][3]={ 1,2,3,4,5,6};
D、int a[2,3]={ 1,2,3,4,5,6};

12、【单选题】若二维数组a 有m 列,则计算任一元素a[i][j]在数组中位置的公式为: 。(假设a[0][0]位于数组的第一个位置上。)
A、i*m+j
B、j*m+i
C、i*m+j-1
D、i*m+j+1

13、【单选题】以下对二维数组a进行初始化正确的是 。
A、int a[2][]={ { l,0,1} ,{ 5,2,3}};
B、int a[][3]={ { 1,2,3},{ 4,5,6}};
C、int a[2][4]={ { 1,2,3},{ 4,5},{ 6}};
D、int a[][3] = { { 1, 0, 1}, { }, { 1, 1}};

14、【单选题】若有定义int a[3][4]; 则正确引用数组a元素的是 。
A、a[2][4]
B、a[3][3]
C、a[0][0]
D、a[3][4]

15、【单选题】若定义了int b[][3] = { 1, 2, 3, 4, 5, 6, 7}; 则b数组第一维的长度是 。
A、2
B、3
C、4
D、无确定值

16、【单选题】若有定义int a[][4]={ 0,0}; 以下叙述中错误的是 。
A、数组a的每个元素都可得到初值0
B、二维数组a的第一维大小为1
C、因为初值个数除以a中第二维大小的值的商为0,故数组a的行数为1
D、只有元素a[0][0]和a[0][l]可得到初值0,其余元素均得不到初值0

17、【单选题】下面程序 void main() { float a[3]=; inti; for(i=0;i<3;i++)cin>>a[i]; for(i=1;i<4;i++) a[0]=a[0]+a[i]; cout<<a[0]; }
A、没有错误
B、第3行有错误
C、第5行有错误
D、第6行有错误

18、【单选题】若二维数组a有m列,则计算元素a[i][j]在数组中相对位置的公式为 。
A、i*m+j
B、j*m+i
C、i*m+j-1
D、i*m十j+l

19、【单选题】下面选项中等价的是 。
A、int a[2][3]={ 1,0,2,2,4,5}与int a[2][]={ 1,0,2,2,4,5};
B、int a[][3]= { l,0,2,2,4,5}与int a[2][3]={ 1,0,2,2,4,5};
C、int a[2][3]={ 3,4,5}与int a[][3]={ 3,4,5};
D、int a[2][3]={ 0,l}与int a[2][3]= { { 0},{ l}};

20、【单选题】以下不能正确定义二维数组的选项是 。
A、int a[2][2]= { { l},{ 2}};
B、int a[][2]={ l,2,3,4};
C、int a[2][2]={ { 1},2,3};
D、int a[2][]={ { 1,2},{ 3,4}};

21、【单选题】下面程序中有错误的行是 。 void main() { float a[3]={ 1}; int i; cin>>a; for(i=1;i<3;i++) a[0]=a[0]+a[i]; cout<<" a*0+=" <<a*0+<<endl; }
A、3
B、6
C、7
D、5

22、【单选题】下面程序的输出结果是 。 #include< iostream> using namespace std; void main() { int n[2],i,j, k = 2; for(i=0; i < k; i++) for (j = 0; j < k; j++) n[j] = n[i] + 1; cout << n[j - 2]; }
A、不确定的值
B、3
C、2
D、1

23、【单选题】串的长度是 。
A、串中不同字符的个数
B、串中不同字母的个数
C、串中所含字符的个数且字符个数大于0
D、串中所含字符的个数

24、【单选题】下列说法正确的是 。
A、字符型数组与整型数组可通用
B、字符型数组与字符串其实没什么区别
C、当字符串放在字符数组中,这时要求字符数组长度比字符串长一个单元,因为要放字符串终结符'\0' 。
D、字符串的输出可以用它所存储的数组来输出,也可以字符串的形式整体输出,结果没区别

25、【单选题】下面有关字符数组的描述中错误的是 。
A、字符数组可以存放字符串
B、字符串可以整体输入、输出
C、可以在赋值语句中通过赋值运算对字符数组整体赋值
D、不可以用关系运算符对字符数组中的字符串进行比较

26、【单选题】给出下面定义: char a []="abed"; char b[]= { 'a','b','c','d'}; 则下列说法正确的是 。
A、数组a与数组b等价
B、数组a和数组b的长度相同
C、数组a的长度大于数组b的长度
D、数组a的长度小于数组b的长度

27、【单选题】若有说明:int a[3][4];则对a 数组元素的非法引用是 :
A、a[0][2*1]
B、a[1][3]
C、a[4-2][0]
D、a[0][4]

28、【单选题】要使字符串变量str具有初值"Lucky",不正确的定义语句是 。
A、char str[]={ 'L','u','c','k','y'};
B、char str[5]={ 'L','u','c','k','y'};
C、char str [] ="Lucky";
D、char str [5] ="Lucky";

29、【单选题】下面程序的输出结果是 。 #include< iostream> using namespace std; #include "string.h" void main() { char a[] = "welcome", b[] = "well "; strcpy(a, b); cout << a << endl; }
A、wellome
B、well om
C、well
D、well we

30、【单选题】在C++语言中,一维数组的定义方式为:<类型说明符> 数组名 ;
A、[整型常量表达式]
B、[整型表达式]
C、[常量]
D、[整型常量] 或[整型表达式]

31、【单选题】下列是为字符数组赋字符串的语句组,其中错误的是 。
A、char s[l0]; s="program";
B、char s[]=" program";
C、char s[l0]="Hello!";
D、char s[l0];strcpy(s,"hello !");

32、【单选题】若己知char str[20]; 有语句cin>>str; 当输入为This is a C++ program时,str所得结果是 。
A、This is a C++ program
B、This
C、This is
D、This is a C

33、【单选题】若有说明:int a[3][4];则对a 数组元素的正确引用是 。
A、a[2][4]
B、a[1,3]
C、a[1+1][0]
D、a(2)(1)

34、【单选题】若有以下定义: char s[l0]=" Program",t[]=" test"; 则对字符串的操作错误的是 。
A、strcpy( s, t) ;
B、cout<<strlen( s);
C、strcat("this",t);
D、cin>>t;

35、【单选题】若有以下定义: int a[]={ l,2,3,4,5,6,7}; char c= 'b', c2 = '2'; 则表达式值不为2的是 。
A、a[1]
B、(int) c2
C、a['3'-c2]
D、c2-'0'

36、【单选题】以下对二维数组a 的正确说明是 。
A、int a[3][];
B、float a(3,4);
C、double a[1][4];
D、float a(3)(4);

37、【单选题】字符数组s不能作为字符串使用的是 。
A、char s[]="happy";
B、char s[6]={ 'h','a','p','p','y',''};
C、char s[] = { "happy"};
D、char s[5]={ 'h','a','p','p','y'};

38、【单选题】下面程序段执行后的输出结果是 。 int k,a[3] [3]={ 1,2,3,4,5,6,7,8,9}; for (k=0;k<3;k++) cout<<a[k][2-k];
A、3 5 7
B、3 6 9
C、1 5 9
D、1 4 7

39、【单选题】下面程序段执行后的输出结果是 。 char c [5]= { 'a','b','','c',''}; cout<<c;
A、'a’’b’
B、ab
C、ab c
D、abc

40、【单选题】以下不能对二维数组a 进行正确初始化的语句是 。
A、int a[2][3]=;
B、int a[2][3]={ { 1,2},{ 3,4},{ 5,6}};
C、int a[][3]={ { 1,2},};
D、int a[][3]={ 1,2,3,4,5,6}

41、【单选题】有两个字符数组a, b,则以下 是正确的输入语句。
A、gets(a, b);
B、cin>>a;cin>>b;
C、cin>>&a>>&b;
D、gets("a") ; gets("b");

42、【单选题】表达式strcmp("3. 14","3.278")的值是 。
A、非零整数
B、浮点数
C、0
D、字符

43、【单选题】程序段执行后的输出结果是 。 char c[] = "\t\b\\\0will\n"; cout<<strlen(c);
A、14
B、3
C、9
D、6

44、【单选题】下面程序 。 void main() { float a[10]={ 0.0}; int i; for(i=0;i<3;i++) cin>>a[i]; for(i=1;i<10;i++) a[0]=a[0]+a[i]; cout<<a[0]; }
A、没有错误
B、第3行有错误
C、第5行有错误
D、第7行有错误

45、【单选题】以下叙述中正确的是 。
A、两个字符串所包含的字符个数相同时,才能比较字符串
B、字符个数多的字符串比字符个数少的字符串大
C、字符串"STOP "与"STOP"相等
D、字符串"That"小于字符串"The"

46、【单选题】下面程序执行后的输出结果是 。 #include< iostream> using namespace std; #include "string" void main() { char ch[7] = "12ab56"; int i, s = 0; for (i = 0; ch[i] > '0'&&ch[i] <= '9'; i += 2) s = 10 * s + ch[i] - '0'; cout << s; }
A、1
B、1256
C、12ab56
D、ab

47、【单选题】以下各组选项中,均能正确定义二维实型数组a 的选项是 。
A、float a[3][4]; float a[][4]; float a[3][]={ { 1},};
B、float a(3,4); float a[3][4]; float a[][]={ { 0};};
C、float a[3][4]; float a[][4]={ { 0},}; float a[][4]={ { 1},{ 2},{ 3}};
D、float a[3][4]; float a[3][]; float a[][4];

48、【单选题】下面程序执行后的输出结果是 。 #include< iostream> #include<string> using namespace std; void main() { char str[]="SSWLIA",c; int k; for (k =1;(c=str[k])!='\0';k++) { switch (c) { case 'I':++k; break; case 'L':continue; default: cout << c; continue; } cout << '*'; } }
A、SSW
B、SW*
C、SW*A
D、SW

49、【单选题】以下能对一维数组a进行正确初始化的语句是 。
A、int a[10]=(0,0,0,0,0);
B、int a[10]={ };
C、int a[]=;
D、int a*10+=“10*1”;

50、【单选题】下面程序执行后的输出结果是 。 #include< iostream> #include<string> using namespace std; void main() { int a[3][3] = { { 1, 2 }, { 3, 4 }, { 5, 6 } }, i, j, s = 0; for (i = 1; i < 3; i++) for (j = 0; j <= i; j++) s += a[i][j]; cout << s; }
A、18
B、19
C、20
D、21

51、【单选题】下面程序执行后的输出结果是 。 #include< iostream> #include<string.h> using namespace std; void main() { char w[][10] = { "ABCD", "EFGH", "IJKL", "MNOP" }, k; for (k = 1; k < 3; k++) cout << w[k]; }
A、ABCDFGHKL
B、ABCDEFGIJM
C、EFGJKO
D、EFGHIJKL

52、【单选题】若有说明:int a[][4]={ 0,0};则下面不正确的叙述是 。
A、数组a 的每个元素都可得到初值0
B、二维数组a 的第一维大小为1
C、因为二维数组a 中第二维大小的值除以初值个数的商为1,故数组a 的行数为1
D、只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

53、【单选题】设有数组A[i][j],数组的每个元素长度为3字节,i的值为1~8,j的值为1~10, 数组从内存首地址BA开始顺序存放,当以列为主存放时,元素A[5][8]的存储首地址为 。
A、BA+141
B、BA+l80
C、BA+222
D、BA+225

54、【单选题】若有说明:int a[3][4]=;则下面正确的叙述是 。
A、只有元素a[0][0]可得到初值0
B、此说明语句不正确
C、数组a 中各元素都可得到初值,但其值不一定为0
D、数组a 中每个元素均可得到初值0

55、【单选题】下面程序执行后的输出结果是 。 #include< iostream> using namespace std; void swapl(int c[]) { int t; t = c[0]; c[0] = c[1]; c[1] = t; } void swap2(int c0, int cl) { int t; t = c0; c0 = cl; cl = t; } void main() { int a[2] = { 3, 5 }, b[2] = { 3, 5 }; swapl(a); swap2(b[0], b[1]); cout << a[0] << a[1] << b[0] << b[1]; }
A、5353
B、5335
C、3535
D、3553

56、【单选题】己知某函数的一个形式参数被说明为MAT[3][10],在下列说明中,与此等效的形参说明是 。
A、int MAT[][10]
B、int MAT[3][]
C、int MAT[l0][3]
D、int MAT[][]

57、【单选题】设主调函数为如下程序段,则函数f中对形参数组定义错误的是 。 int a[3][4]; f(a);
A、f(int array[3][4])
B、f(int array[][4])
C、f(int array[3][])
D、int array[4][3]

58、【单选题】下面程序执行后的输出结果是 。 #include< iostream> #include<string.h> using namespace std; # define N 20 void fun(int a[], int n, int m) { int i; for (i = m; i >= n; i--) a[i +1] = a[i]; } void main() { int i; int a[N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; fun(a, 2, 9); for (i = 0; i<5; i++) cout << a[i]; }
A、10234
B、12344
C、12334
D、12234

59、【填空题】字符串是以____为结束标志的一维字符数组。若有定义char a[]=" "; 则a数组的长度是 ____。

60、【填空题】C++语言数组的下标总是从____开始,不可以为负数。数组的各个元素具有相同的____。

61、【填空题】若有定义double x[3][5]; 则x数组中行下标的上限为____,列下标的上限为____

62、【填空题】在C++语言中,二维数组的元素在内存中的存放顺序是____。

63、【填空题】若有定义char a[]="windows",b[]="9x"; 则执行语句cout<<strcat(a, b); 后的输出结果为____。若有定义char a[20 ] ="windows",b[]="9x"; 则执行语句 cout<<strcat(a, b);后的输出结果为____。

64、【填空题】如果在程序中调用了strcat函数,则需要预处理命令____。

65、【填空题】在C++语言中,一个二维数组可以看成若干个____数组。

66、【填空题】程序中使用了字符运算函数(如isupper),则需要预处理命令____。

67、【填空题】要将字符串S1复制到字符串S2中,其语句是____。

68、【填空题】下面程序执行后的输出结果是____。 #include< iostream> #include<string.h> using namespace std; void main() { int p[8] = { 11, 12, 13, 14, 15, 16, 17, 18 }, i = 0, j =0; while (i++ < 7) if (p[i] % 2) j += p[i]; cout << j; }

69、【填空题】若有说明:int a[][3]={ 1,2,3,4,5,6,7};则a数组第一维的大小是____。

70、【填空题】设有数组定义: char array[]="China"; 则数组 array所占的空间为____个字节。

71、【填空题】假定int类型变量占用两个字节,其有定义:int x[10]={ 0,2,4};,则数组x在内存中所占字节数是____。

72、【填空题】已知:char a[20]= "abc",b[20]= "defghi";则执行cout<<strlen(strcpy(a,b));语句后的输出结果为____。

73、【填空题】有如下定义语句:int aa[][3]={ 12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为____。

74、【填空题】若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设a[0][0]位于数组的第一个位置上) ____。

75、【填空题】定义如下变量和数组: int k; int a[3][3]={ 9,8,7,6,5,4,3,2,1}; 则语句for(k=0;k<3;k++) cout<<a[k][k];的输出结果是____。

76、【填空题】已知:char a[15],b[15]={ "I love china"};则在程序中能将字符串I love china赋给数组a的语句是____。

77、【填空题】下面rotate函数的作用是将n行n列的矩阵A转置为A’。请填空使程序完整、正确。 #define N 4 void rotate(int a[N][N]) { int i, j, t; for (i = 0; i < N; i++) for (j = 0; (1____); j++){ t = a[i][j]; (2____); a[j][i] = t; } }

78、【填空题】在下面程序的下划线处填上适当字句,以使该程序的执行结果为: 5____4____3____2____1 0____5.5____4.4____3.3____2.2-1.l #include <iostream> using namespace std; void f((1____)){ (2____) for (int i = 0;i<n / 2; i++) t = a[i], a[i] = a[n - 1 - i], a[n - 1 - i] = t; } void main(){ int a[5] = { 1, 2, 3, 4, 5 }; double d[6] = { 1.1, 2.2, 3.3, 4.4, 5.5 }; f(a, 5); f(d, 6); for (int i = 0; i < 5; i++) cout << a[i] <<"____"; cout << endl; for (i = 0; i < 6; i++) cout << d[i] <<"____"; cout << endl; }

79、【填空题】下面函数用“折半查找法”在有10个数的a数组中对关键字m查找,若找到,返回其下标值;否则返回-1。请填空使程序完整、正确。 提示:折半查找法的思路是先确定待查元素的范围,将其分成两半,然后比较位于中间点元素的值。如果该待查元素的值大于中间点元素的值,则将范围重新设定为大于中间点元素的范围,反之则设定为小于中间点元素的范围。 int search(int a[10], int m) { int xl = 0, x2 = 9, mid; while (xl <= x2) { mid = (xl + x2) / 2; if (m < a[mid]) (1____); else if (m > a[mid]) (2____); else return (mid); } return (-1); }

80、【填空题】下面程序的功能是将数组输入数据,逆序置换后输出。逆序置换是指数组的首元素和末元素置换,第二个元素和倒数第二个元素置换,……。请填空使程序完整、正确。 #include <iostream> using namespace std; #define N 8 void main() { int i, j, t, a[N]; for (i = 0; i < N; i++) cin >> a[i]; i = 0; j = N - 1; while (i < j) { t = a[i], (1____), a[i] = t; i++, (2____); } for (i = 0; i < N; i++) cout << a[i]; }

81、【填空题】下面程序的功能是求矩阵a和b的乘积,结果存放在矩阵c中并按矩阵形式输出。请填空使程序完整、正确。 #include <iostream> #include <iomanip> using namespace std; void main() { int a[3][2] = { 2, 10, 9, 4, 5, 119 }, b[2][2] = { -1, -2, -3, -4 }; int i, j, k, s, c[3][2]; for (i = 0; i < 3; i++) for (j = 0; j < 2; j++){ (1____); for (k = 0; k < 2; k++) s += (2____); c[i][j] = s; } for (i = 0; i < 3; i++) { for (j = 0; j < 2; j++){ cout << setw(6) << c[i][j]; (3____); } } }

82、【填空题】下面程序的功能是用“两路合并法”把两个已按升序(由小到大)排列的数组合并成一个新的升序数组。请填空使程序完整、正确。 #include <iostream> using namespace std; void main() { int c[10], i = 0, j = 0, k = 0; int a[3] = { 5, 9, 10 }; int b[5] = { 12, 24, 26, 37, 48 }; while (i < 3 && j < 5) if ((1____)){ c[k] = b[j]; k++; j++; } else{ c[k] = a[i]; k++; i++; } while ((2____)){ c[k] = a[i]; i++; k++; } while ((3____)){ c[k] = b[j]; j++; k++; } for (i = 0; i < k; i++) cout << c[i] << " "; }

83、【填空题】下面程序的功能是将十进制整数n转换成base进制。请填空使程序完整、正确。 #include <iostream> using namespace std; void main() { int i = 0, base, n, j, num[20]; cin >> n; cin >> base; do { i++; num[i] = (1____); n = (2____); } while (n! = 0); for ((3____)); cout << num[j]; }

84、【填空题】下面程序的功能是输入10个整数,统计其中正数(neg)、负数(pos)和O(zero)的个数并将三者输出。请填空使程序完整、正确。 #include <iostream> using namespace std; int neg = 0, pos = 0, zero = 0; void self(int num) { if (num> 0) neg++; else if (num = 0)pos++; else (1____); } void main() { int i, a[10]; for (i =0; i<10; i++) { cin >> a[i]; self((2____)); } cout <<"neg=" << (3____) << ",pos="<< (4____) <<",zero=" << (5____); }

85、【填空题】写出下面程序执行后的运行结果 #include<iostream> using namespace std; int main____ { char arr[2][4]; strcpy____; strcpy____; arr[0][3]='&'; cout<<arr[0]<<endl; return 0; }

86、【填空题】写出下面程序执行后的运行结果: #include<iostream> using namespace std; int main____ { char a[]={ 'a', 'b', 'c', 'd', 'e', 'f', 'g','h',''}; int i,j; i=sizeof____; j=strlen____; cout<< i <<","<<j<<endl; return 0; }

87、【填空题】写出下面程序执行后的运行结果: #include<iostream> using namespace std; int main____ { int i; int a[3][3]={ 1,2,3,4,5,6,7,8,9}; for____ cout<<a[2-i][i]; return 0; }

88、【填空题】写出下面程序执行后的运行结果: #include<iostream> using namespace std; int main____ { char a[30]="nice to meet you!"; strcpy____/2,"you"); cout<<a<<endl; return 0; }

89、【填空题】写出下面程序执行后的运行结果: #include<iostream> using namespace std; int main____ { int k[30]={ 12,324,45,6,768,98,21,34,453,456}; int count=0,i=0; while____ { if____ count++; i++; } cout<< count <<","<<i<<endl; return 0; }

90、【填空题】写出下面程序执行后的运行结果: #include<

学习通C++面向对象程序设计_17

本文将为大家详细介绍C++面向对象程序设计的第17章:

多态的概念与实现

多态是面向对象程序设计中的重要概念,它指的是同一类型的对象在不同的情况下可能产生不同的行为。

多态有两种实现方式:虚函数和模板类。

虚函数

虚函数指的是在基类中声明为虚函数的函数,在子类中可以被重写,从而实现多态的效果。

在C++中,使用虚函数需要注意以下几点:

  • 虚函数必须在基类中声明,子类中可以选择是否重写
  • 虚函数的调用是动态绑定的,即在运行时根据对象的实际类型确定调用哪个函数
  • 虚函数可以被普通函数覆盖,但是不能被static函数、friend函数和构造函数/析构函数覆盖

模板类

模板类是另一种实现多态的方式,它允许我们编写通用的代码,可以适用于不同类型的数据。

模板类的定义形式如下:

template <class T>
class className{
private:
T variable;
public:
void function(T parameter);
};

其中,className是类名,T是模板参数,可以是任意类型。

模板类在实例化时,可以指定具体的类型参数,例如:

className<int> object;

这样就创建了一个类型为int的className对象。

虚函数的使用

虚函数的使用有以下几个步骤:

  1. 在基类中声明虚函数
  2. 在子类中对虚函数进行重写
  3. 使用指向基类的指针或引用调用虚函数

下面是一个示例:

#include <iostream>
using namespace std;
class Shape{
public:
virtual void draw() const{
cout << \Shape::draw() called.\ << endl;
}
};
class Circle:public Shape{
public:
void draw() const{
cout << \Circle::draw() called.\ << endl;
}
};
class Square:public Shape{
public:
void draw() const{
cout << \Square::draw() called.\ << endl;
}
};
int main(){
Shape *shapes[3];
shapes[0]=new Shape;
shapes[1]=new Circle;
shapes[2]=new Square;
for(int i=0;i<3;++i)
shapes[i]->draw();
return 0;
}

运行结果为:

Shape::draw() called.
Circle::draw() called.
Square::draw() called.

模板类的使用

模板类的使用也分为几个步骤:

  1. 定义模板类
  2. 使用具体类型参数实例化模板类
  3. 使用模板类的成员函数

下面是一个示例:

#include <iostream>
using namespace std;
template <class T>
class Array{
private:
T *data;
int length;
public:
Array(int size){
data=new T[size];
length=size;
}
T &operator[](int index){
return data[index];
}
~Array(){
delete [] data;
}
};
int main(){
Array<int> a(5);
for(int i=0;i<5;++i)
a[i]=i+1;
for(int i=0;i<5;++i)
cout << a[i] << \ \
cout << endl;
return 0;
}

运行结果为:

1 2 3 4 5

总结

本文详细介绍了C++面向对象程序设计的第17章,包括多态的概念和两种实现方式:虚函数和模板类,并通过示例进行了详细说明。

掌握多态的概念和实现方式是C++编程的重要基础,希望本文对大家的学习有所帮助。

学习通C++面向对象程序设计_17

本文将为大家详细介绍C++面向对象程序设计的第17章:

多态的概念与实现

多态是面向对象程序设计中的重要概念,它指的是同一类型的对象在不同的情况下可能产生不同的行为。

多态有两种实现方式:虚函数和模板类。

虚函数

虚函数指的是在基类中声明为虚函数的函数,在子类中可以被重写,从而实现多态的效果。

在C++中,使用虚函数需要注意以下几点:

  • 虚函数必须在基类中声明,子类中可以选择是否重写
  • 虚函数的调用是动态绑定的,即在运行时根据对象的实际类型确定调用哪个函数
  • 虚函数可以被普通函数覆盖,但是不能被static函数、friend函数和构造函数/析构函数覆盖

模板类

模板类是另一种实现多态的方式,它允许我们编写通用的代码,可以适用于不同类型的数据。

模板类的定义形式如下:

template <class T>
class className{
private:
T variable;
public:
void function(T parameter);
};

其中,className是类名,T是模板参数,可以是任意类型。

模板类在实例化时,可以指定具体的类型参数,例如:

className<int> object;

这样就创建了一个类型为int的className对象。

虚函数的使用

虚函数的使用有以下几个步骤:

  1. 在基类中声明虚函数
  2. 在子类中对虚函数进行重写
  3. 使用指向基类的指针或引用调用虚函数

下面是一个示例:

#include <iostream>
using namespace std;
class Shape{
public:
virtual void draw() const{
cout << \Shape::draw() called.\ << endl;
}
};
class Circle:public Shape{
public:
void draw() const{
cout << \Circle::draw() called.\ << endl;
}
};
class Square:public Shape{
public:
void draw() const{
cout << \Square::draw() called.\ << endl;
}
};
int main(){
Shape *shapes[3];
shapes[0]=new Shape;
shapes[1]=new Circle;
shapes[2]=new Square;
for(int i=0;i<3;++i)
shapes[i]->draw();
return 0;
}

运行结果为:

Shape::draw() called.
Circle::draw() called.
Square::draw() called.

模板类的使用

模板类的使用也分为几个步骤:

  1. 定义模板类
  2. 使用具体类型参数实例化模板类
  3. 使用模板类的成员函数

下面是一个示例:

#include <iostream>
using namespace std;
template <class T>
class Array{
private:
T *data;
int length;
public:
Array(int size){
data=new T[size];
length=size;
}
T &operator[](int index){
return data[index];
}
~Array(){
delete [] data;
}
};
int main(){
Array<int> a(5);
for(int i=0;i<5;++i)
a[i]=i+1;
for(int i=0;i<5;++i)
cout << a[i] << \ \
cout << endl;
return 0;
}

运行结果为:

1 2 3 4 5

总结

本文详细介绍了C++面向对象程序设计的第17章,包括多态的概念和两种实现方式:虚函数和模板类,并通过示例进行了详细说明。

掌握多态的概念和实现方式是C++编程的重要基础,希望本文对大家的学习有所帮助。