C语言之函数的用法以及调用函数
C语言之调用函数—“黑盒子”
这是我第一次去我们学校acm的集训学到的东西,也是我第一个博客,现在来整理第一个内容。
一、 引子
若题目中有一个要求:判断a,b,c,d是否在给定区间[0,10)/[45,55)/[90,100)内
知识先知:bool
bool函数返回值只是用于判断真假
如果bool里面的语句成立就返回真(1),否则返回假(0)
常用于判断语句中,下面只写一下部分代码体现bool的应用。
int main() { // 假设判断a, b, c, d分别是否满足 int a = 5, b = 10, c = 20, d = 95; // 直接写 bool res_a = (0<=a&&a<10)||(45<=a&&a<55)||(90<=a&&a<100); bool res_b = (0<=b&&b<10)||(45<=b&&b<55)||(90<=b&&b<100); bool res_c = (0<=c&&c<10)||(45<=c&&c<55)||(90<=c&&c<100); bool res_d = (0<=d&&d<10)||(45<=d&&d<55)||(90<=d&&d<100);
可以看出,以上代码的功能是一样的,只是参数不同,如果这样写,代码太长。
因此,如果用函数数把同一功能的代码封装起来后,直接输入参数来调用函数即可得到结果,可以明显地提高编程速度和质量,函数名又能起到一定的解释作用,代码显得更加清晰易读
相当于用函数将同一功能的代码封装成一个黑盒子,丢进参数,就可以输出想要的结果。
二、函数定义
类型 名称 (参数声明)
{
声明、语句
}
- 例子1
bool is_satisfied(int n){ return (0<=n&&n<10)||(45<=n&&n<55)||(90<=n&&n<100); } int main() { // 假设判断a, b, c, d分别是否满足 int a = 5, b = 10, c = 20, d = 95; bool res_a = is_satisfied(a); bool res_b = is_satisfied(b); bool res_c = is_satisfied(c); bool res_d = is_satisfied(d);
- 例子2
double cal_circle(double r){ const int pi = 3.1415926; double S = pi * r * r; return S; }
下面以例子2来解释函数结构其中的含义
1.double :声明了输出的数据类型
2.cal_circle:声明了输出量的名称
3.(double r):声明了参数的类型和名称
4.{}里面是函数里的内容,即丢入参数后要做的事
5.const int pi = 3.1415926; //声明一个常量
6.double S = pi * r * r; // 声明一个变量及其表达式
7.return :返回值,后面跟着的就是要输出的(可以为常量、变量、表达式),如 return S指的就是返回S的值作为输出值,且该输出值数据类型为double(由第一个double决定的),名称为cal_circle
【再比如我们常用的 int main(void){ … return 0;}结构也是一样】
那,我把例2的函数的作用发挥出来,现在来跑一个代码作为例3:
double S(double r){ const int pi = 3.1415926; double S = pi * r * r; return S; } int main() { double r; scanf("%lf",&r); double result=S(r); printf("%lf",result); return 0; }
注意事项
- 函数最好定义在前面,如果函数和int main()位置互换,会导致main里面用到的那个S()函数没有定义
- 如果在定义参数时要声明多个参数,每个参数都要给数据类型
如:(int a, int b) √ (int a,b) × (int a)(int b) × - 函数里面的每个变量都要声明数据类型,但与下面int main()函数无关,在int main(){…}中,出现的变量也要声明,不是说函数内有声明了就不用声明了
- 在调用函数时,可以先声明一个变量(不可与函数输出名称相同)来装输出的值,也可以直接写在printf里面
如: double result = S(r);printf("%lf",result); 或者 printf("%lf",S ( r ) );
三、函数调用函数
何为函数调用函数?
意思就是在某一函数的定义中用到了另一个函数的输出值
下面以计算圆环面积为例:
// 计算圆的面积 double cal_circle(double r){ const int pi = 3.1415926; double S = pi * r * r; return S; }// 计算圆环的面积 double cal_area(double r1, double r2){ if(r1>r2){ int t = r1; r1 = r2; r2 = r; } return cal_circle(r2) - cal_circle(r1); //上面语句就是函数调用函数的体现,该函数输出值的表达式用了函数cal_circle的输出值 } int main(){ double S = cal_area(50,10); //括号内就是你要输入的参数 return 0; }
!!!请好好思考回味上面这个代码 !!!
以上就是今天的内容,谢谢我自己嘻嘻嘻
ps:部分内容摘自acm师兄的集训文档
- 点赞
- 收藏
- 分享
- 文章举报
- C语言带空格的字符串输入——gets()函数、scanf()函数缺陷以及改进后的gets_s()函数、scanf_s()函数的简单用法(上)
- C语言学习笔记(三) 输入输出函数的基本用法以及运算符
- C语言 获得系统时间以及时间函数的用法。
- C语言中字符/字符串输入函数汇总以及用法区别
- C语言strcpy_s 和strncpy_s的用法,以及函数实现的方法
- python 中的map(),zip()函数以及表达式lambda用法
- Makefile编译目录下多个文件以及函数wildcard用法
- C语言中isdigit()函数和isxdigit()函数的用法
- Windows API函数之PlaySound函数以及sndPlaySound函数用法
- srand()以及rand()函数用法
- 转载_srand()以及rand()函数用法(zz)
- midiOutShortMsg 函数的用法以及乐器编号
- clock的用法(C语言)以及算法不同时消耗的时间
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- socket编程:客户端与服务器间的连接以及各函数的用法
- srand()以及rand()函数用法(zz)
- C语言中返回错误信息的相关函数用法总结
- np.random.random()函数 参数用法以及numpy.random系列函数大全
- C语言scanf函数用法详细解释!
- c语言复习之局部变量和全局变量以及局部函数和全局函数