邯郸做网站的地方,广州网站制作,网站流量与带宽,简单的app开发制作数学库常用函数
函数
我们其实已经掌握了一些函数#xff0c;比如主函数main()。还有其他的函数比如一些库中的函数#xff0c;例#xff1a;stdio.h头文件对应标准输入输出库中的printf()和scanf()、stdlib.h标准库头文件对应的标准库中的srand()和rand(…数学库常用函数
函数
我们其实已经掌握了一些函数比如主函数main()。还有其他的函数比如一些库中的函数例stdio.h头文件对应标准输入输出库中的printf()和scanf()、stdlib.h标准库头文件对应的标准库中的srand()和rand()除此之外在C中常用的还有数学库函数
C中常见的数据类型
若想使用数学库函数首先需导入math.h头文件当然在C中也可以导入cmath头文件
常用的数学库函数有
函数解释abs()取绝对值ceil()向上取整floor()向下取整pow()指数函数log2()对数函数sqrt()算术平方根
#include iostream
#include cmath
using namespace std; int main() { int a -100;cout abs(a) endl;double d 3.14;// 向下取整 cout floor(d) endl;// 向上取整 cout ceil(d) endl;int m2, n10;// m的n次方 cout pow(m, n) endl;// 对数函数 2的几次方是1024 cout log2(1024) endl;// 算术平方根cout sqrt(100) endl; return 0;
}100
3
4
1024
10
10实战演练完全平方数判定
#include iostream
#include cmath
using namespace std; int main() { int n; cin n;double ret sqrt(n);int i int(ret);if(i ret){cout yes endl;}else{cout no endl;}return 0;
}运行结果
100
yes函数与递归
函数与自定义函数
函数是一组一起执行一个任务的语句。每个C程序都至少有一个函数即主函数main()所有简单的程序都可以定义其他额外的函数。
自定义函数的声明要告诉编译器函数的名称、返回值和参数。
自定义函数
自定义函数名字和变量名一样都属于标识符都必须遵循标识符的命名规则而且要有意义
比如我们要写一个求和函数可以起名为sum再比如我们要写一个我们自己的交换函数可以起名为mySwap。
无返回值类型void
void function(){cout 这是一个无返回值类型的函数 endl;
}有返回值类型
int function(){cout 这是一个有返回值类型的函数返回值为1 endl;return 1;
}return的作用
自定义函数的返回值
结束当前函数(return的作用)。将返回值给到被调用的当前函数(返回值的作用)。
主函数的返回值
结束当前程序(return的作用)。一般情况下写为return 0如果返回了错误码说明程序崩溃。虽然编译成功但代码中存在错误(返回值的作用)。
函数的调用
int main(){function_name(arg1, arg2......);
}有参数
int sum(int a, int b){ // 形参return a b;
}自定义函数内的参数成为形参即形式参数
int main(){int a, b;cout sum(a, b); // 实参
}主函数中调用函数传进去的参数为实参即实际参数
实战演练
#include iostream
#include cmath
using namespace std; int myMax(int a, int b){return a b ? a : b;
}int main() { int a, b; cin a b;// c自带的求最大值函数max //cout max(a, b) endl;cout myMax(a, b) endl;return 0;
}运行结果
100 200
200实战演练
#include iostream
#include cmath
using namespace std; long long myPow(int a, int b){long long ans 1;for(int i1; ib; i){ans * a;}return ans;
}int main() { int m, n; cin m n;//cout pow(m, n) endl;cout myPow(m, n) endl;return 0;
}运行结果
2 10
1024作用域
作用域
作用域(scope)程序设计概念通常来说一段程序代码中所用到的名字并不总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。
作用域的使用提高了程序逻辑的局部性增强程序的可靠性减少名字冲突。
全局变量、局部变量的作用域
全局变量作用域
主函数外对应的内存区域我们成为全局区其中全局区定义的变量我们称之为全局变量
全局变量如果未初始化会自动初始化为0
全局变量作用域为整个C项目任何一个函数(局部作用域)均可以访问全局变量
#include iostream
using namespace std; // 全局区
// 全局变量如果未初始化那么会自动初始化为0
// 全局变量作用域作用于整个C文件任何一个局部区域都可以访问
int g; void add(){g;cout g endl;
} int main() { g;cout g endl;add();return 0;
}运行结果
1
2局部变量作用域
函数内对应的内存区域我们称为栈区栈区内定义的变量称为局部变量
局部变量必须初始化
局部变量的作用域为当前函数各个局部作用域中的变量互不关联
#include iostream
using namespace std; void add(){// 局部变量局部变量必须初始化局部变量作用域为当前函数下 int a 200; a;cout a endl;
} int main() { int a 100;a;add();cout a endl;return 0;
}运行结果
201
101参数的值传递与引用传递
int 整型引用类型
#include iostream
using namespace std; int main() { int b 100;// int 整型引用类型 int a b; // 给b起了个别名叫aa;cout b endl; return 0;
}运行结果
101实战演练自定义交换两个变量的函数mySwap()
#include iostream
using namespace std; // 引用传参
void mySwap(int a, int b){int c a;a b;b c;
}int main() { int a, b; cin a b; //swap(a, b);mySwap(a, b);cout a b;return 0;
}运行结果
100 200
200 100递归
递归
也许我们都听过下面这句话
从前有座山山里有座庙庙里有个和尚讲故事故事内容是从前有座山山里有座庙庙里有个和尚讲故事故事内容是…
这句话包含了递归技术的思想所谓递归就是在自定义函数中调用自己
#include iostream
using namespace std; // 递归-在自定义函数中调用自己
void function(){cout 从前有座山山里有座庙庙里有个和尚讲故事故事内容是: endl;function();
} int main() { function();return 0;
}实战演练递归打印1-n
#include iostream
using namespace std; // 递归
int n;
void function(int i){if(i n) return; // 结束当前函数 cout i ;i; function(i);
} int main() { cin n;int i 1; function(i);return 0;
}运行结果
10
1 2 3 4 5 6 7 8 9