第二章习题

原创 2018年04月15日 23:39:31

第二章习题

习题二

一、名词解释

引用:所谓引用,就是给对象起一个别名,使用该别名可以存取该对象。换句话说,是使新的对象和原对象共用一个地址。

内联函数:内联函数是使用inline关键字声明一个函数。

重载函数:重载函数通常用来对具有相似行为而数据类型不同的操作提供一个通用的名称。

二、填空题

(1)一般情况下,用C++语言编写的程序是由 函数 加上  组成的。  

(2) C++有两种注释符号,一种是//,另一种是/*,,,,*/

(3)使用C++风格的输入输出,在程序中必须包含头文件iostream

(4)cin是预定义的标准输入流对象,>>是输入操作符,也称提取运算符。

(5)cout是预定义的标准输出流对象,<<是输出操作符,也称插入运算符。

(6)指针的值是它所指向对象的地址值。指针的类型是它所指向对象的类型。指针的内容便是它所指向对象的

(7)C++使用运算符&来定义一个引用,对引用的存取都是对它所引用的对象的存取。

(8)当一个函数调用出现在函数定义之前时,必须先用函数原型对函数进行声明

(9)C++有值传递引用传递两种参数传递机制。

(10)使用关键字inline声明的函数称为内联函数。

(11)运算符new用于进行动态内存分配,运算符delete用于释放动态分配的内存。

(12)下面程序的输出结果为x=10,y=10  ;  x=100,y=100

#include<iostream>
using namespace std;
int main()
{
   int x=10,&y=x;
   cout<<"x="<<x<<",y="<<y<<endl;
   int *p=&y;
   *p=100;
   cout<<"x="<<x<<",y="<<y<<endl;
   return 0;
}

三、选择题(至少选一个,可以多选)

(1)在整型指针变量p2、p3的定义中,错误的是(A)。

A .int p1,*p2,p3;     B  .int *p2,p1,*p3;      C .int p1,*p2=&p1,*p3;        D.int *p2,p1,*p3=&p1;

(2)若有定义“double xx=3.14,*pp=&xx;”,则*pp等价于(C)。

A .&xx                   B .*xx                        C.3.14                               D.xx

(3)下面对引用的描述中(C)是错误的。

A.引用是某个变量或对象的别名                      B.建立引用时,要对它初始化     

C. 对引用初始化可以使用任意类型的变量        D.引用与其代表的对象具有相同的地址

(4)函数没有返回值的时候,应该选择(A)函数类型。

A.void                  B.int                     C.不确定                   D.float

(5)在函数的定义格式中,下面各组成部分中,(D)是可以省略的。

A.函数名              B.函数体                C.返回值类型             D.函数参数

(6)对重载的函数来说,下面叙述不正确的是(D)。

A.参数的类型不同     B.参数的顺序不同     C.参数的个数不同      D.参数的个数、类型、顺序都相同,但函数的返回值类型不同

(7)下列有关设置函数参数默认值的描述中,(D)是正确的。

A.对设置函数参数默认值的顺序没有任何规定       B.函数具有一个参数时不能设置默认值

C.默认参数要设置在函数的原型中,而不能设置在函数的定义语句中 D.设置默认参数可使用表达式,但表达式中不可用全局变量

(8)下面说法正确的是(BC)。

A.所有函数都可以说明为内联函数       

B.具有循环语句、switch语句的函数不能说明为内联函数

C.使用内联函数,可以加快程序执行的速度,但会增加程序代码的大小

D.使用内联函数,可以减小程序代码大小,但使程序执行的速度减慢

(9)一个函数功能不太复杂,但要求被频繁调用,应选用(A)。

A.内联函数          B.重载函数          C.递归函数           D.嵌套函数

(10)C++对C语言做了很多改进,下列描述中使得C语言发生了质变,即从面向过程变成面向对象的是(D)。

A.增加了一些新的运算符             B.允许函数重载,并允许设置默认参数

C.规定函数说明必须用原型          D.引进了类和对象的概念

四、判断题 

(1)  C++程序中,不得使用没有定义或说明的变量。(对) 

(2)使用const说明常量时,可以不必指出类型。(错)

(3)引用被创建时可以用任意变量进行初始化。(错)

(4)一个返回引用的调用函数可以作为左值。(对)

(5)函数可以没有参数,也可以没有返回值。(对)

(6)没有参数的两个函数是不能重载的。(对)

(7)函数可设置默认参数,但不允许将一个函数的所有参数都设置为默认参数。(对)

(8)运算符new分配的空间由运算符delete释放。(对)

五、简答题

(1)名字空间的定义是什么?

答:名字空间用来防止命名的冲突。

(2)引用有何用处?

答:除了独立引用外,在C++程序中,引用的主要用途是用作函数参数和函数返回值。

(3)比较直调用和引用调用的相同点与不同点。

答:在值传递机制中,作为实参的表达式的值被复制到由对应的形参名所标识的一个对象中,作为形参的初始值。函数体对形参的访问、修改都是在这个标识对象上操作,与实参无关,即数据的传递是单向的。使用引用作函数的形参时,调用函数的实参要用变量名。实参传递给形参,相当于在被调用函数中对形参的操作,实质是对实参的直接操作,即数据的传递是双向的。

(4)内联函数有什么作用?它有哪些特点?

答:内联函数是使用inline关键字声明一个函数。在程序编译时,编译系统将程序中出现内联函数调用的地方用函数体进行替换,进而减少了时间开销。

      使用内联函数应注意:

      递归函数不能定义为内联函数。 

     内联函数一般适合于不含有switch和while等复杂的结构且只有1~5条语句的小函数,否则编译系统将该函数视为普通函数。

     内联函数只能先定义后使用,否则编译系统也将该函数视为普通函数。对内联函数也不能进行异常接口声明。

(5)函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗?

答:不必一致。所以的参数是根据位置和类型而不是名字来区分的。

(6)重载函数时通过什么来区分?

答:编译系统将根据函数参数的类型和个数来判断使用哪一个函数。

六、程序分析题(写出程序的输出结果,并分析结果)

  1. #include<iostream>  
  2. using namespace std;  
  3. int main()  
  4. {  
  5.    int num=50;  
  6.    int& ref=num;  
  7.    ref=ref+10;  
  8.    cout<<"num="<<num<<endl;  
  9.    num=num+40;  
  10.    cout<<"ref="<<ref<<endl;  
  11.    return 0;  
  12. }  

输出结果如下:


结果分析如下:

   在程序中,定义了一个int类型的对象num,并给它赋初值50;然后又定义一个int类型的引用refv, 并将它和num相联系。ref=num=50,ref=ref+10,num=ref+10=50+10,所以num=60。又num=num+40=60+40,ref=num,所以ref=100。

    七、程序设计题

写出一个完整的C++程序,使用系统函数pow(x,y)计算x^y的值,注意包含头文件cmath。

程序如下:

  1. //xiti2-1.cpp  
  2. #include<iostream>  
  3. #include<cmath>  
  4. using namespace std;  
  5. int main()  
  6. {  
  7.    float x,y;  
  8.    cout<<"please input 2 floats to x,y:"<<endl;  
  9.    cin>>x>>y;  
  10.    float z=pow(x,y);  
  11.    cout<<"pow("<<x<<","<<y<<")="<<z<<endl;  
  12.    return 0;  
  13. }  

运行结果如下:

《编程之法》习题集答案整理-第二章

1、不用除法运算 3、找出数组中唯一的重复元素 1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。 每个数组元素 只能访问一次,设计一个算法,将它找出来;不用...
  • king457757706
  • king457757706
  • 2016年10月08日 13:09
  • 489

统计学习方法 李航 第二章习题

2.1Minsky和Papert指出:感知机因为是线性模型,所以不能表示复杂的函数,如异或。验证感知机为什么不能表示异或明显可知异或不具有线性可分性,由感知机定义可知,感知机不能表示异或。 2.2模...
  • cracker180
  • cracker180
  • 2017年12月12日 02:34
  • 333

周志华机器学习第二章总结及课后答案

2.1 经验误差与过拟合通常我们把分类错误的样本总数的比例称为错误率(error rate),即如果在m个样本中有a个样本分类错误,则错误率E=a/m;相应的,1-a/m称为”精度”(accuracy...
  • LIUSHAO123456789
  • LIUSHAO123456789
  • 2018年01月31日 19:38
  • 184

编程珠玑第二章习题答案

转载自 1、提供单词和词典,找到该单词的所有变位词,可以事先花时间和空间处理下该词典。 因为要查找变位词,事先遍历词典,得到每个单词签名,并建立签名列表,签名列表的每个项包含了该签名的所有...
  • wordwarwordwar
  • wordwarwordwar
  • 2014年10月28日 22:31
  • 630

第二章 Linux安装课后习题

一、Linux对于硬件的要求是什么?是否一定要有很高的配置才能安装Linux?       规模很小的主机系统:           (1)CPU(中央处理器):Pentium-166以上等级即可...
  • xg15_38241415107
  • xg15_38241415107
  • 2017年10月18日 22:22
  • 79

PythonNLP学习进阶:第二章练习题(Python自然语言处理)

Python自然语言处理 Steven Bird 2014年第一版 第二章课后习题
  • txlCandy
  • txlCandy
  • 2016年02月13日 11:55
  • 2132

Python教材第二章部分习题

教材:《Python编程 从入门到实践》2-2:多条简单消息# 2-2 multiple simple messages msg = "Hello!" print(msg) msg...
  • qq_35783731
  • qq_35783731
  • 2018年03月07日 22:20
  • 80

紫书第二章-----循环结构程序设计

阶乘之和输入n,计算S=1!+2!+3!+……+n!的末6位(不含前导0)。n
  • ccnuacmhdu
  • ccnuacmhdu
  • 2017年08月29日 16:21
  • 129

Linux操作系统(第二章课后习题)

第二章Linux的安装 1.Linux对于硬件的要求是什么?是否一定要有很高的配置才能安装Linux操作系统? 2.请写下目前你使用的个人计算机中,各项设备的主要等级与厂商或芯片组名称。 3.请问一个...
  • xg15_38241415125
  • xg15_38241415125
  • 2017年10月17日 23:35
  • 179

编程珠玑第二章习题

1、提供单词和词典,找到该单词的所有变位词,可以事先花时间和空间处理下该词典。 因为要查找变位词,事先遍历词典,得到每个单词签名,并建立签名列表,签名列表的每个项包含了该签名的所有单词。有了这个列表,...
  • chenzujie
  • chenzujie
  • 2013年08月10日 11:57
  • 1962
收藏助手
不良信息举报
您举报文章:第二章习题
举报原因:
原因补充:

(最多只允许输入30个字)