函数
if,while,continue 就不记录了。函数这节覆盖的内容是:函数的定义与调用、参数传递及拓展知识。
函数的基本用法
- 函数的定义
- 函数的声明与调用
- 参数传递
- 默认参数
- 函数重载
函数定义:与其他语言类似
#include<iostream>
using namespace std;
int add(int a, int b){
return a+b;
}
int main(){
int num1,num2;
cin>>num1>>num2;
cout<<add(num1,num2)<<endl;
}
函数的声明与调用:先声明,再调用,声明要位于调用之前。
#include <iostream>
using namespace std;
int add(int a,int b); //函数声明。
int main(){
int x,y;
cout<<"input x y:"; //输出提示信息。
cin>>x>>y; //通过输入的方式给 x y 赋值。
int c=add(x,y);//在未定义函数前调用函数。将函数的返回结果赋给变量 c。
cout<<c<<endl;//输出 c 值。
return 0;
}
int add(int a,int b){
return a + b;
}//定义函数
参数传递
复制了 x,y 的变量值传递给 swap,未改变 x,y 指向的内存空间中的值
#include<iostream>
using namespace std;
void swap(int a,int b){ // 定义空函数 swap,用于交换 a 和 b 的值。
int t=a; // 定义中间变量 t,并将 a 的值赋给变量 t。
a=b; // 将 b 的值赋给 a。
b=t; // 将 t 的值赋给 b,又因为 t=a,所以把 a 的值赋给 b。
}
int main(){
int x=3;
int y=4;
cout<<"x="<<x<<","<<"y="<<y<<endl; // 输出 x、y。
swap(x,y); // 调用 swap 函数。
cout<<"x="<<x<<","<<"y="<<y<<endl; // 输出调用函数后 x、y 的值。
}
使用引用可以对 x,y 的值进行修改。
#include<iostream>
using namespace std;
void swap(int &a,int &b){ // 定义空函数 swap,用于交换 a 和 b 的值。
int t=a; // 定义中间变量 t,并将 a 的值赋给变量 t。
a=b; // 将 b 的值赋给 a。
b=t; // 将 t 的值赋给 b,又因为 t=a,所以把 a 的值赋给 b。
}
int main(){
int x=3;
int y=4;
cout<<"x="<<x<<","<<"y="<<y<<endl; // 输出 x、y。
swap(x,y); // 调用 swap 函数。
cout<<"x="<<x<<","<<"y="<<y<<endl; // 输出调用函数后 x、y 的值。
}
默认参数,与 Python 中的一样,可以设置参数的默认值,且设置默认值的参数要放在最后。
#include<iostream>
using namespace std;
int add(int a,int b = 10){
return a+b;
}
int add2(int a = 10 ,int b=10){
return a+b;
}
int main(){
cout<<add(10)<<endl; // 10
cout<<add2(10)<<endl; // 20
}
函数重载:与 Java 一样的重载规则
#include<iostream>
using namespace std;
int add(int a,int b){ //定义整型函数 add。
int c;
c = a - b;
return c;
}
double add(double a,double b){ //定义双精度型函数 add。
double c;
c = a + b;
return c;
}
int main(){ //函数重载。
cout<<"a + b = "<<add(3,4)<<endl;//调用整型函数 add。
cout<<"a + b = "<<add(3.111,4.222)<<endl;//调用双精度型函数 add。
}
常见函数
数学函数
在 C++ 中,除了可以创建各种函数,还包含了各种有用的函数供您使用。这些函数写在标准 C 和 C++ 库中,叫做<b>内置</b>函数。我们可以在程序中引用这些函数。
C++ 内置了丰富的数学函数,可对各种数字进行运算。下表列出了 C++ 中一些有用的内置的数学函数。
为了利用这些函数,您需要引用数学头文件 。
序号 |
函数 & 描述 |
1 |
<b>double cos(double);</b> 该函数返回弧度角(double 型)的余弦。 |
2 |
<b>double sin(double);</b> 该函数返回弧度角(double 型)的正弦。 |
3 |
<b>double tan(double);</b> 该函数返回弧度角(double 型)的正切。 |
4 |
<b>double log(double);</b> 该函数返回参数的自然对数。 |
5 |
<b>double pow(double, double);</b> 假设第一个参数为 x,第二个参数为 y,则该函数返回 x 的 y 次方。 |
6 |
<b>double hypot(double, double);</b> 该函数返回两个参数的平方总和的平方根,也就是说,参数为一个直角三角形的两个直角边,函数会返回斜边的长度。 |
7 |
<b>double sqrt(double);</b> 该函数返回参数的平方根。 |
8 |
<b>int abs(int);</b> 该函数返回整数的绝对值。 |
9 |
<b>double fabs(double);</b> 该函数返回任意一个浮点数的绝对值。 |
10 |
<b>double floor(double);</b> 该函数返回一个小于或等于传入参数的最大整数。 |
测试代码
#include<iostream>
#include<cmath>
using namespace std;
int main(){
short s = 10;
int i = -100;
long l = 100L;
float f = 20.4f;
double d = 200.1;
cout<<sin(d)<<endl;
cout<<abs(i)<<endl;
cout<<floor(f)<<endl; // 20 向 0 取整
cout<<ceil(f)<<endl; // 21 向大取整
cout<<pow(f,s)<<endl;
}
随机数&时间
#include<iostream>
#include<cmath>
#include<ctime>
using namespace std;
int main(){
// 用当前时间充当随机数种子
srand(time(NULL));
cout<<rand()<<endl;
cout<<rand()<<endl;
}