回顾:1.printf 输出函数,⽤于输出⼀个信息
2.scanf 输⼊函数,⽤于从键盘输⼊⼀个信息
3.strlen 求字符串⻓度函数,⽤于求指定字符串的⻓度
4.strcpy 字符串拷⻉函数,⽤于实现字符串的赋值
它们都是函数,都实现了某⼀功能。
1.函数的概念:函数是具有特定功能的代码段
函数的使⽤可以省去重复代码的编写,⼤⼤简化程序,提⾼开发效率。
2.函数的定义: 返回值类型 函数名(形式参数列表)
{
语句
return 返回值;
}
返回值类型可以是所有的基本类型 int ,float等...也可以没有返回值,没有返回值用void 没有返回值的时候,不用return返回值
函数的四种形态:
(1) 无返回值无参数
void myprintf()
{
printf("无返回值无参数的函数\n");
}
(2) 有返回值 无参数的函数
int returnValue()
{
return 3;
}
(3)有返回值,有参数
// 多个参数 ,中间用逗号隔开
// 注意:参数的名字不能相同
// 函数的参数 需要在函数体中去使用
// 参数的两种形式:
// 1.形式参数 函数声明时的参数
// 2.实际参数 函数调用时的参数
// 函数调用的时候,相当于,实际参数赋值给形式参数:num1 = 3; 参数间的传递是一个值的传递
// 计算 两个 整数的 和
int sumNumber(int num1, int num2)
{
return num1 + num2;
}
(4) 无返回值有参数 函数
// 打印两个 整数 的和
void sumNumber2(int n1 , int n2)
{
printf("%d ",n1 + n2);
}
3.一个完整的函数分为三个部分 : 1. 函数的声明 2.函数的实现3.函数的调用(一般是主函数main中去调用)
// 创建一个类 分为2部分
// .h文件 为接口文件,头文件 , 用来写函数的声明的部分
// .m文件 为实现文件 , 写函数的实现部分
实例: 编写函数dayOfYear(year, mouth,day),使得函数返回由这三个参数确定的那⼀天是⼀年中的第⼏天。
声明:int dayOfYear(int year,int month,int day); // 写在.h文件里
实现:int dayOfYear(int year,int month,int day) // 写在.m文件里
{
// 用数组 保存12个月 每个月天数
int array[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 判断润年:能够被400整除 或者 能够被4整除但不能被100整数
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
array[1] = 29;
}
// 声明一个变量 存放天数和
int sum = 0;
// 循环求和
for (int i = 0; i < month - 1; i++) {
// 把每个月的天数加上
sum = sum + array[i];
}
// 把天加上
sum = sum + day;
// 返回
return sum;
}
调用:printf("%d " ,dayOfYear(2015,10,17)); // 一般写在main函数中调用
// 注意:如果要用哪个.h文件下的函数,就要在main函数那个文件下用import "xxx.h";导入
4. 变量的作用域: 局部变量,函数中定义的变量 , 它的作用域: 由该变量一下,至最近的大括号 之间 是该局部变量的作用域
全局变量,在main函数外面又不在其他函数中定义的变量叫全局变量
如果全局变量 和 局部变量 重名 那么是以局部变量为准
5.递归
// 需求 : 一个整形数的阶乘:n!
n = 1 或者 0 ;阶乘为1;
n > 1 阶乘 为 n * (n - 1 )!; 例如: 当 n = 5, 5 * (5 - 1)!
// 自己调用自己的函数:递归函数
// 切记 : 需要一个出口 或者 多个出口 , n == 1就是这道题的出口
int function(int n)
{
if(n == 1 || n == 0){
return 1;
}
int result = 0;
result = n * function(n - 1);
return result;
}
实例2;// 计算 s = (1*1)!+(2*2)! + (3*3)!
// 思路: 把复杂的公式 ,分析拆解
// 1.先平方 2. 阶乘 3.连加
int function1(int n)
{
// 声明一个结果
int sum = 0 ;
for(int i = 1; i <=n ; i++) {
sum = sum + function(i * i);
}
return sum;
}