- 21天学通C++(第5版)
- 刘蕾
- 929字
- 2020-08-27 17:15:49
5.8 习题
1.编写函数,重复打印给定字符n次。例如,在主函数中调用该函数后,给出打印字符和次数,该函数将在屏幕上输出指定字符。
【解答】该习题主要考查字符串参数在函数调用过程中的传递。根据前面章节的学习,读者知道字符的输出可以通过输出流cout来实现,但更好的办法是通过putchar函数来实现。指定输出字符的次数后,通过一个循环语句实现即可。同时,在主函数中要指定需打印的字符,也可以用函数getchar来实现接收。其简要实现代码如下所示。
![](https://epubservercos.yuewen.com/E623DA/16896237004359006/epubprivate/OEBPS/Images/txt007_64.jpg?sign=1739341406-i84rCAnZlROas0IbGGsgVWmmPWYWir6Q-0-19284960d9b9fb564648b82a9d980601)
2.下列程序的输出结果是多少?
![](https://epubservercos.yuewen.com/E623DA/16896237004359006/epubprivate/OEBPS/Images/txt007_65.jpg?sign=1739341406-ytav6WnMaKunOziqwCLM5NB34oVzGsNI-0-2474a2bbde9efeb146d3155d6f2b778c)
【解答】该习题主要考查函数的调用。上述程序中的函数fun包含两个参数,在调用时将实参传递给形参。读者需要注意的是实参分别为k++和++k,进行参数传递后,k的值都将加1。因此,传递到函数fun后,x和y都变为6,运行函数后,得到函数返回值36。因此,该程序的输出为36。
3.已知三角形的三边,求三角形面积,将其编写成一个函数,在main函数中调用该函数。例如,运行该程序段后输入三角形的三边分别为3、4、5,输出三角形面积如图5-19所示。
![](https://epubservercos.yuewen.com/E623DA/16896237004359006/epubprivate/OEBPS/Images/txt007_66.jpg?sign=1739341406-ExjpXhyUXKmpk4TLvq6mUW9q5hU88w9x-0-1ca0344962499163bcf2cd7076e99170)
图5-19 求三角形的面积
【解答】该习题主要考查函数的声明、定义和调用。在使用函数前需要先对其进行声明,声明后的函数定义可写在调用后。该函数求三角形面积,因此函数的参数为三边,根据三角形面积的计算公式:面积=三边之和除2再乘以其与三边之差的平方根。需要读者注意的是,此处的函数返回值应为浮点型,因为三角形面积有可能为浮点数。
4.输入的整数按字符串形式逆序输出,要求分别用递归算法和非递归算法实现。如输入12345,输出:5 4 3 2 1。
【解答】该程序段首先需声明两个函数,其分别对应非递归输出分解的结果和递归输出,在主函数main()中调用这两个函数。其中,非递归的函数实现中可使用while循环,其循环变量a以a/10为依次一次循环。其简要实现代码如下所示。
![](https://epubservercos.yuewen.com/E623DA/16896237004359006/epubprivate/OEBPS/Images/txt007_67.jpg?sign=1739341406-ZHVepFOhJsoItnzrGKKEgA3ozThcxYBV-0-8e8df1f1767781eb61268050e70575af)
5.下面的程序段的运行结果是多少?
![](https://epubservercos.yuewen.com/E623DA/16896237004359006/epubprivate/OEBPS/Images/txt007_69.jpg?sign=1739341406-tVPtts9ZfYi9Msfwaqfz1pokry90HOTo-0-ba6e52f5ea18ecf26f20d617c2aa3955)
【解答】该习题主要考查递归函数及其返回值。递归函数是在定义中调用自身的函数,在上述程序中定义时调用了其自身。要计算递归函数的返回值,需要将实参传递到函数中后,先进行递推,再进行回归来实现。在上述程序中实参为9,那么第一次递推后p的值为(9-func(7)),第二次递推后p的值为(7-func(5)),一直到x的值为0或为1后再回归,得出最终p的值为7,如图5-20所示,因此该程序的返回值为7。
![](https://epubservercos.yuewen.com/E623DA/16896237004359006/epubprivate/OEBPS/Images/txt007_70.jpg?sign=1739341406-jGds9SE3VKv3vKlup1wBWINvYirwhOB5-0-77c0fb1dbdff997aced424e4473da82a)
图5-20 递推与回归