![算法训练营:海量图解+竞赛刷题(入门篇)](https://wfqqreader-1252317822.image.myqcloud.com/cover/621/39479621/b_39479621.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.6 如何轻松写一个函数
函数是对实现某一功能的代码的模块化封装,其定义如下:
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/030-1.jpg?sign=1739313077-Xt0Eupxtr8VSdGzLV4XDspEW2vaoRAC3-0-898de8acbea01ca0f162e56224dee587)
1. 标准函数
训练1-22:输入n对整数a和b,输出它们的和。
如果前面有函数原型声明,则可以将函数定义放在被调用函数之后。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/030-2.jpg?sign=1739313077-lpaXRi24ZCOQy6JVxqhrUXcjWs0LAIlH-0-de5b9968b2a630c385e2d3702092b07a)
2. 无返回值函数
如果没有返回值,则返回值类型为void。
训练1-23:输入n,输出1~n的所有整数(无返回值)。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/030-3.jpg?sign=1739313077-DHa8nu6uds6EUQANuIT9rBviSPqQHrVx-0-5e9d987011a8cbc3f1b1d9eab3d9d3de)
3. 无参数函数
训练1-24:输入n,如果n为10的倍数,则输出3个“very good!”。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/031-2.jpg?sign=1739313077-ctTaK2a037GVsYYK0zB3KWv9r9tCBL3y-0-c63ddf41cc853caa4786a159cab9f42e)
4. 传值参数函数
传值参数在函数内部的改变出了函数后无效。
训练1-25:输入两个整数a和b,交换后输出。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/031-3.jpg?sign=1739313077-rRIvvuopPLZAg7Ia3gWGejpBUZSeGJQm-0-5d9e4fa6667676ce11b2d0a0f0487228)
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/032-1.jpg?sign=1739313077-6SdPzYFgNsz8PwUBiS6TSEWRJz3toxF9-0-d2bc80398ed7f4752a0f42de0c78e41f)
5. 引用参数函数
引用参数在参数前加“&”符号,引用参数在函数内部的改变出了函数后仍然有效。
训练1-26:输入两个整数a和b,交换后输出。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/032-2.jpg?sign=1739313077-MrOCgklZqzZ8tLXUiaZU3pAkXSPyVyeE-0-3a9a7e64fafead30f5f8933cdc19ab41)
6. 数组参数函数
训练1-27:输入n个整数并将其存入a[]数组,求和后输出和值。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/032-3.jpg?sign=1739313077-obji3MNuTIjWoBgqAvw2exSvRVw12xPs-0-5f10ce1a9f0828980a60bb362a38e604)
7. 字符串参数函数
训练1-28:输入n个字母,如果是小写字母,则将其转换为大写字母,输出转换后的字符串。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/033-2.jpg?sign=1739313077-oitZMtwAo3Rzb2BzQqykAdvw8W1R1oRi-0-923b9954e0b084e7b50b7e704b0d4a18)
8. 函数嵌套
训练1-29:输入两个整数a和b,求这两个整数的最大公约数和最小公倍数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/033-3.jpg?sign=1739313077-j3m2s6wyBPhr7FKxFuG6QLk7p3kWsfh7-0-1f84b9b389bfd19185da7c57dfda8f99)
9. 函数重载
函数重载(多态)指有多个同名函数,但是每个同名函数的参数数量、类型、顺序不同。
训练1-30:写一个函数,对于字符串类型的数据,取其长度的一半;对于浮点数类型的数据,取其值的二分之一。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/034-2.jpg?sign=1739313077-DenosCD9nMBeASL3Z29N6t6CyJZ4bpgu-0-f1da70099674a80ee82f2a7935f26b3f)
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/035-1.jpg?sign=1739313077-T7cQjUYxhds4Q5E4M4SjXxl3UzkxHCvn-0-f7a1228648e8cb2181eed5f525a78745)
10. 函数模板
训练1-31:输入两个数a和b(整数或者浮点数),求这两个数的和值。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/035-2.jpg?sign=1739313077-tthqUdfDkTy1VrZDMAXhmuH4znI4WG5l-0-03f934c55f4daba2262a6ebb6aca8945)
练习:
(1)输入10个学生的程序设计成绩,将其存储在数组中,写3个函数,分别输入、显示和计算平均成绩。
(2)一直输入两个数,直到其中一个为0,对每两个数都求它们的调和平均数。调和平均数=2×x×y/(x+y)。