一、定义:
有特定功能的代码片段的集合体,我们成为 函数。
二、返回值:
1、函数的返回值称为 函数的值,只能通过 return 语句返回给主调函数;
2、一个函数只能有一个返回值;
3、函数即使没有返回值也可以使用 return 来结束函数的执行,回到 主调函数;
4、return 后面的语句 不再执行。
三、形参、实参
1、形参
出现在函数的定义中,以 假名字 来表示函数调用时需要提供的值。
2、
出现在函数调用中的表达式。
注意:函数调用时,形参会拷贝实参的内容,传递参数是给函数传送信息的一种方式。
四、函数声明
严格的函数通常包括三部分: 函数声明、函数定义、以及函数调⽤用
五、函数的递归调用
1、//对于函数的递归调用一定要做好分析,推导出递归表达式,n * multipleFun(n - 1),同时为了防止循环调用自身导致程序陷入死循环,一定要找准调用结束的条件,比如求阶乘就是条件为 1 时停止循环调用
2、 所谓递归调用函数实现内部循环调用自身,直到条件不满足为止。
六、例代码:
输入一个年月日,计算出是这一年中的 第几天?
#import <Foundation/Foundation.h>
int sumValue( int n );
int dayOfYear( int year, int month, int day );
int main(int argc, const char * argv[])
{
// int n = 0;
// printf( "请输入一个数:");
// scanf( "%d", &n );
// printf( "1 ~ %d 的和是 %d\n", n, sumValue( n ) );
//
printf( "请输入年月日信息:" );
int year = 0, month = 0, day = 0;
scanf( "%d/%d/%d", &year, &month, &day );
printf( "%d年%d月%d日是这一年中的第 %d 天。\n",
year, month, day, dayOfYear( year, month, day ) );
return 0;
}
int sumValue( int n )
{
int sum;
for( int i = 1; i <= n; i++ )
sum += i;
return sum;
}
int dayOfYear( int year, int month, int day )
{
int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30 , 31, 30, 31};
// 如果输入的月份大于12,或者日期大于31则表示输入错误,直接结束输入,返回0天;
if( month > 12 || day > 31 )
{
return 0;
}
if( year % 400 == 0 || ( year % 4 == 0 && year % 100 !=0 ) )
{
days[1] = 29;
//如果是闰年,则将2月的值改为29天,否则不做任何操作,则为默认的28天
}
//定义一个整形变量先保存日期,再通过for循环连续加上当前给定月之前的所有完整月的天数,最后将结果返回
int daysOfYear = day;
for( int i = 0; i < month - 1; i++ )
{
daysOfYear += days[i];
}
return daysOfYear;
}