#include<iostream>usingnamespace std;constdouble pi =3.14159;// Function Declarations (Prototypes)doublearea(double input_radius);doublecircumference(double input_radius);intmain(){
cout <<"Enter the radius of the circle: ";double radius;
cin >> radius;//call function "area"
cout <<"Area is: "<<area(radius)<< endl;// call function "circumference"
cout <<"Circumference is: "<<circumference(radius)<< endl;return0;}// Function Definitions (implementations)doublearea(double input_radius){return pi * input_radius * input_radius;}doublecircumference(double input_radius){return2* pi * input_radius;}
2.计算圆柱表面积的函数
#include<iostream>usingnamespace std;constdouble pi =3.14;// function declaration contains two parametersdoublesurface_area(double radius,double height);intmain(){
cout <<"Enter the radius and height of the cylinder: ";double radius; cin >> radius;
cout <<"Enter the height: ";double height; cin >> height;
cout <<"Surface area of the cylinder is: "<<surface_area(radius, height)<< endl;return0;}doublesurface_area(double radius,double height){double area =2* pi * radius *(radius + height);return area;}
3. 没有参数和返回值的函数
#include<iostream>usingnamespace std;// function declarationvoidsay_hello();intmain(){say_hello();return0;}// function implementationvoidsay_hello(){
cout <<"Hello, World!"<< endl;}
#include<iostream>usingnamespace std;intget_fib_number(int fib_index){if(fib_index <2)return fib_index;else//recursion if fib_index >= 2returnget_fib_number(fib_index -1)+get_fib_number(fib_index -2);}intmain(){
cout <<"Enter 0-based index of desired fibonacci number: ";int index =0;
cin >> index;
cout <<"Fibonacci number is: "<<get_fib_number(index)<< endl;return0;}
6. 函数重载
/*
- 名称和返回类型相同,但参数不同的函数被称为重载函数
- 在应用程序中,如果需要使用不同的参数调用具有特定名称和返回类型的函数,重载函数将很有用
*/#include<iostream>usingnamespace std;constdouble pi =3.14159;doublearea(double radius);// for circledoublearea(double radius,double height);// overloaded for cylinderintmain(){
cout <<"Enter z for cylinder, c for circle: ";char choice ='z';
cin >> choice;
cout <<"Enter radius: ";double radius =0;
cin >> radius;if(choice =='z'){
cout <<"Enter height: ";double height =0;
cin >> height;// invoke overloaded variant of area()
cout <<"Area of cylinder is "<<area(radius, height)<< endl;}else
cout <<"Area of circle is "<<area(radius)<< endl;return0;}doublearea(double radius){return pi * radius * radius;}doublearea(double radius,double height){return2*area(radius)+2* pi * radius * height;}
7. 将数组传递给函数
#include<iostream>usingnamespace std;voiddisplay_array(int numbers[],int length);voiddisplay_array(char characters[],int length);intmain(){int my_numbers[4]={1,2,3,4};display_array(my_numbers,4);char my_statement[7]={'H','e','l','l','o','!','\0'};display_array(my_statement,7);return0;}voiddisplay_array(int numbers[],int length){for(int index =0; index < length; index++){
cout << numbers[index]<<" ";}
cout << endl;}voiddisplay_array(char characters[],int length){// 注意:字符数组不需要指定长度for(int index =0; index < length; index++){
cout << characters[index]<<" ";}
cout << endl;}
8. 按引用传递参数
#include<iostream>usingnamespace std;constdouble pi =3.1415926;//按引用传递参数是让函数将修改结果提供给调用模块的方式之一//output parameter result by referencevoidarea(double radius,double& result){
result = pi * radius * radius;}intmain(){
cout <<"Enter the radius of a circle: ";double radius;
cin >> radius;double area_fetched =0;area(radius, area_fetched);
cout <<"The area of the circle is: "<< area_fetched << endl;return0;}
9. 内联函数
/*将函数声明为内联的会导致代码急剧膨胀,在声明为内联的函数做了大量
复杂处理时尤其如此。应尽可能少用关键字 inline,仅当函数非常简单,需要降低其开销时(如前面所示),才应使用该关键字。*/#include<iostream>usingnamespace std;// define inline functioninlinelongdouble_number(int number){return2* number;}intmain(){
cout <<"Enter an integer: ";int input_number =0;
cin >> input_number;// call inline function
cout <<"Double is: "<<double_number(input_number)<< endl;return0;}