2021-01-14
函数(重点)
1、为什么需要函数?
避免重复性操作
有利于程序的模块化
2、什么叫做函数
逻辑上看:能够完成特定功能的独立的代码快
物理上看:能够接收数据[也可以不接收],并对数据进行处理,最后返回操作结果[可以不返回任何值]。
总结:函数是个工具,为了解决大量类似问题而设计;函数可以当作一个黑匣子;
3、如何定义函数
函数的返回值 函数名(函数的形参列表){
函数的执行体;
}
a、函数的本质:是详细描述函数之所以能执行特定的独立的某个功能的具体方法;
b、return 表达式;
return 是终止整个函数,向主调函数返回表达式的值,break是终止这个循环;
如果返回值为空,则只中止函数,不想主调函数返回任何值;
c、return返回的值是以函数的类型为准;
4、函数的分类
(1)有参数函数 和 无参数函数;
(2)有返回值函数 和 无返回值函数;
(3)普通函数 和 主函数(main函数);
一个程序必须有且仅有一个主函数;
主函数可以调用普通函数,普通函数不能调通主函数;
普通函数可以相互调用;
主函数是程序的入口,也是程序的出口;
5、注意的问题
(1)函数调用和函数声明顺序:先函数声明,再函数调用
(2)对库函数的声明是通过#include<库函数所在的文件名字.h>来实现的系统函数。
(3)形参和实参:
个数相同;位置一一对应;数据类型必须相互兼容;
(4)如何在软件开发中合理的设计函数来解决问题?
一个函数的功能尽量单一;模仿牛人的代码(字节跳动、腾讯、百度、leecode等平台)
6、常用的系统函数
(1)函数是C语言的基本单位,类是Java,C#,C++的基本单位。
(2)double sort(double x);//求x的平方根
int abs(int x);//求x的绝对值
等等;
7、举例
//判断输入的数是否是素数?
#include <stdio.h>
bool isPrime(int val){//函数:判断是不是素数
int i ;
for (i = 2;i <val;++i){
if(val%i ==0 ){
break;
}
}
if(i == val)
return true;
else
return false;
}
int main(void){
int m;
scanf("%d",&m);//接收键盘输入
if(isPrime(m))//调用函数,并且判断返回的是不是素数:是true或不是false;
printf("Yes!\n");
else
printf("No!\n");
return 0;
}
//递归:先学会栈(数据结构)
递归的定义 和 不同函数之间相互调用:
递归必须满足三个条件:
一个函数调用自己:
循环 和 递归比较:
递归应用:
1+2+3+...+100之和用递归实现:
变量的作用域和存储方式
1、按作用域分:
(1)全局变量:在所有函数外部定义的变量
使用范围:从定义位置 到 整个程序结束。
(2)局部变量:在一个函数内部定义的变量或者函数的形参
注意问题:局部变量名和全局变量名一样,局部变量名会屏蔽全局变量名。
2、按变量的存储方式(java没有继承过来)
静态变量
自动变量
寄存器变量