Ch1_3(初尝试自定义函数)
1 /*比较两数大小并输出最大值的平方根*/ 2 #include<iostream> 3 #include<cmath> 4 using namespace std; 5 double Max(double x, double y); 6 //声明Max函数,函数名前为函数体中返回数据类型,形参前必须加数据类型,且一参一类型,不可共同定义,参数用于函数间传递数据,否则会报错,函数定义一般放置在主函数之后 7 int main() { 8 double a, b, c; 9 //定义变量,意味着给变量分配存储空间 10 cin >> a >> b; 11 //输入时,两个值用空格/回车键分开 12 cout << sqrt(Max(a, b)) << endl; 13 //sqrt()函数为cmath函数库中开方函数,endl等价于'\n'(""也可以) 14 return 0; 15 } 16 double Max(double x, double y) 17 //定义Max函数,获取参数,并有返回值 18 {
19 if (x < y) 20 return y; 21 else 22 return x; 23 }
//自定义函数,不获取参数,并且无返回值 #include<iostream> using namespace std; void P(); int main() { P(); return 0; } void P() { cout << "你好" << endl; }
函数定义由函数头和函数体构成,函数头:返回类型,函数名,函数参数;函数体:花括号中内容。
#include<iostream> using namespace std; void fan(int a, int b, int c) { c = a > b ? a : b; } int main() { int a, b, c; a = 10; b = 15; c = 16; fan(a, b, c);//值传递:形参作为被调函数内部变量处理,开辟内存用于存放复制过来的实参的值 cout << c << endl;//输出c的值为16,实参与形参的传递是单向的,形参的值不能传回实参(即不能改变实参的值),可以通过return来传递。 return 0; }
1 #include<iostream> 2 using namespace std; 3 void func(); 4 void print(int a, int b, int c); 5 int n = 1;//全局变量 6 int main() { 7 static int a;//静态局部变量,仅在此函数中可见,系统初始化为0(仅进行一次初始化) 8 int b = -10; 9 print(a, b, n);//输出0,-10,1 10 b += 4;//b变为-6 11 func();//输出4,7,13 12 print(a, b, n);//输出0,-6,13 13 n += 10; 14 func();//a在第一次调用fanc函数时已经变成4,不会被再次初始化,输出6,7,35 15 } 16 void func() { 17 static int a = 2;//静态局部变量,仅在此函数中可见,系统初始化为0(仅进行一次初始化),对main中a无影响 18 int b = 2; 19 a += 2; 20 b += 5;//不会对main中b进行改变 21 n += 12;//可以对全局数据进行修改 22 print(a, b, n); 23 } 24 void print(int a, int b, int c) { 25 cout << a<<endl << b<<endl << c<<endl; 26 }
//关于阶乘实现的递归函数 #include<iostream> using namespace std; long Jie(int a) { if (a == 1) return 1; else return Jie(a - 1) * a;//直接递归 } int main() { int b; cin >> b ; cout << Jie(b); return 0; }