![算法训练营:海量图解+竞赛刷题(入门篇)](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=1739185548-qawR7EP54C3Xp1jej1t4sTm59gZ7kDSc-0-e93eb878c0f8baa51cfa2139c6df5fd3)
1. 标准函数
训练1-22:输入n对整数a和b,输出它们的和。
如果前面有函数原型声明,则可以将函数定义放在被调用函数之后。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/030-2.jpg?sign=1739185548-RzDPsv7HOd94n2pH67G280Qi31DexJrJ-0-ebfcd9353c3dd971bf07ad350927c5b9)
2. 无返回值函数
如果没有返回值,则返回值类型为void。
训练1-23:输入n,输出1~n的所有整数(无返回值)。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/030-3.jpg?sign=1739185548-eE2CUKx4gdM31i1NBEjTY1XgVVD40m0m-0-b18ede6fc0390b5bde2a46dc5052d9da)
3. 无参数函数
训练1-24:输入n,如果n为10的倍数,则输出3个“very good!”。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/031-2.jpg?sign=1739185548-drMi0XmBF8fZNQD7PIDOaN2HSgbmdSXJ-0-91656ce4dbef877f1b5bcff6b66666af)
4. 传值参数函数
传值参数在函数内部的改变出了函数后无效。
训练1-25:输入两个整数a和b,交换后输出。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/031-3.jpg?sign=1739185548-5LLYm99yjIG57KKBgTF2In6XTRoOUCET-0-6ee3c3596fa9f0801af5d73790869381)
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/032-1.jpg?sign=1739185548-TAUzdlhmlhD6iaNlsEo26eY6rhmwPzdt-0-bba4da9be05f765adf60d80e14b959d3)
5. 引用参数函数
引用参数在参数前加“&”符号,引用参数在函数内部的改变出了函数后仍然有效。
训练1-26:输入两个整数a和b,交换后输出。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/032-2.jpg?sign=1739185548-VQYlhBM70hlycUb2PiPN9UsfY7AujibO-0-6b11ef9c903c4b671b48738b29832b66)
6. 数组参数函数
训练1-27:输入n个整数并将其存入a[]数组,求和后输出和值。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/032-3.jpg?sign=1739185548-H4TJOnc0H7A9MErcgMcKGwZ2cDZ1MDLz-0-560b59213632686852ef2c4f33efeb9d)
7. 字符串参数函数
训练1-28:输入n个字母,如果是小写字母,则将其转换为大写字母,输出转换后的字符串。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/033-2.jpg?sign=1739185548-Vi3HlntkUp2RXov5oohzdbZOW9Nlbv1E-0-52209d61febc2cc804f90f70ae9c3c1a)
8. 函数嵌套
训练1-29:输入两个整数a和b,求这两个整数的最大公约数和最小公倍数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/033-3.jpg?sign=1739185548-d19r2R7Vbupc75ypgMyG9pzTRJX5Ynns-0-044e1d44c63a61a93bd829bfa33b89a5)
9. 函数重载
函数重载(多态)指有多个同名函数,但是每个同名函数的参数数量、类型、顺序不同。
训练1-30:写一个函数,对于字符串类型的数据,取其长度的一半;对于浮点数类型的数据,取其值的二分之一。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/034-2.jpg?sign=1739185548-eUqW8Acy8q2d0Koj61FVwZWwrUhZKyas-0-5b20156e741e98c253399a7f2b8f6aaa)
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/035-1.jpg?sign=1739185548-3SJmmNN4BwIrS1bvTrypIFpl7z8XldFy-0-fdf572e696aebe48138f8798d3028cd8)
10. 函数模板
训练1-31:输入两个数a和b(整数或者浮点数),求这两个数的和值。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/035-2.jpg?sign=1739185548-b2nGSeedzjWjgwwknyOVuDfblPClkhL6-0-4f7127e136d6c15b58332226813c3878)
练习:
(1)输入10个学生的程序设计成绩,将其存储在数组中,写3个函数,分别输入、显示和计算平均成绩。
(2)一直输入两个数,直到其中一个为0,对每两个数都求它们的调和平均数。调和平均数=2×x×y/(x+y)。