#import <Foundation/Foundation.h>
/**
* 函数定义: 返回值类型 函数名(形参列表) {函数体(函数的实现内容)}
*/
//函数定义第一种形式: 无参数,无返回值.
//即使没有参数,小括号也必不可少.(warning)
void buyMilk()
{
printf("Nothing\n");
}
//函数名的命名规范:由多个英文单词组成,除了第一个单词的首字母小写,其余单词的首字母大写.
void iOS()
{
printf("I love iOS\n");
}
//函数定义第二种形式: 有返回值,无参数.
float salary()
{
return 1.0; //return 将该函数的值返回给主调函数.
//千万不要把代码放到return下面,会执行不到.
printf("very good\n");
}
//函数定义第三种形式: 无返回值,有参数.
void buyMilk2(float money)
{
if (money < 10) {
printf("not enough\n");
} else {
printf("enough\n");
}
}
//函数定义第四种形式: 有返回值,有参数.
//求两个数的最大值.
int maxValueTwo(int a, int b) //即使数据类型相同也必须单独定义.
{
// int temp = 0;
if (a > b) {
temp = a;
} else {
temp = b;
}
// temp = a > b ? a : b;
// return temp;
return a > b ? a : b;
}
//求两个数的最小值.
int minValueTwo(int a, int b)
{
return a < b ? a : b;
}
3个数最大值
//int maxValueThree(int a, int b, int c)
//{
// //先求b c最大,再求a与b c最大的最大
int temp = a;
if (temp < b) {
temp = b;
}
if (temp < c) {
temp = c;
}
return temp;
return a > b ? a > c ? a : c : b > c ? b : c;
return a > maxValueTwo(b, c) ? a : maxValueTwo(b, c);
// return maxValueTwo(a, maxValueTwo(b, c));
//}
3个数最小值
//int minValueThree(int a, int b, int c)
//{
// //先求b c最小,再求a与b c最小的最小
return a < b ? a < c ? a : c : b < c ? b : c;
return a < minValueTwo(b, c) ? a : minValueTwo(b, c);
// return minValueTwo(a, minValueTwo(b, c));
//}
3个数中间值
//int midValueThree(int a, int b, int c)
//{
// int temp = 0;
// temp = a + b + c - maxValueThree(a, b, c) - minValueThree(a, b, c);
// return temp;
//}
//函数相当于公司的部门,每一个部门完成特定的功能.部门与部门之间的并列关系决定了函数与函数之间也是并列关系.
//函数的功能: 实现代码的模块化管理.把复杂的逻辑进行拆分,而主函数只起到宏观调控的作用即可.
//main 函数(主函数) 应用程序执行的入口.
//3个数最大
int maxValue3(int a, int b, int c)
{
// int max = 0; //存储最大值
// //1.先求a与b的最大值max
// max = maxValueTwo(a, b);
// //2.再求max与c的最大值
// max = maxValueTwo(max, c);
// return max;
return maxValueTwo(maxValueTwo(a, b), c);
}
//3个数最小
int minValue3(int a, int b, int c)
{
return minValueTwo(minValueTwo(a, b), c);
}
//3个数中间值
int midValue3(int a, int b, int c)
{
return a + b + c - maxValue3(a, b, c) - minValue3(a, b, c);
}
//函数与函数之间可以嵌套调用(也就是在一个函数内部可以调用另外一个函数),但是不能嵌套定义(不能在一个函数内部定义另外一个函数).
int sumValue(int x, int y)
{
/**
* Function defination is not allowed here
reason: 函数内部又定义了一个新的函数,嵌套定义.
solution: 函数之间是并列关系,把内部定义在外部.
Control reaches end of non-void function
reason: 函数返回值为空,函数内部没有通过return返回数据.
solution: 通过return返回对于数据.
*/
return x + y;
}
int divValue(int x, int y)
{
return x - y;
}
//求四个数的最大值
int maxValueFour(int a, int b, int c, int d)
{
// return maxValueTwo(maxValueTwo(a, b), maxValueTwo(c, d));
// return maxValueTwo(a, maxValue3(b, c, d));
return maxValue3(maxValueTwo(a, b), c, d);
}
//求五个数的最大值
int maxValueFive(int a, int b, int c, int d, int e)
{
return maxValue3(maxValue3(a, b, c), d, e);
}
int main(int argc, const char * argv[])
{
//函数调用(让函数干活) 函数名 + 实参列表
buyMilk();
iOS();
float money = salary();
printf("money = %.2f\n", money);
buyMilk2(10);
buyMilk2(6);
maxValueTwo(30, 20);
// int max = maxValueTwo(30, 20);
// printf("max = %d\n", max);
// int min = minValueTwo(50, 47);
// printf("min = %d\n", min);
// maxValueThree(20, 53, 74);
// int max = maxValueThree(20, 53, 74);
// printf("max = %d\n", max);
// minValueThree(20, 53, 74);
// int min = minValueThree(20, 53, 74);
// printf("min = %d\n", min);
// midValueThree(20, 53, 74);
// int mid = midValueThree(20, 53, 74);
// printf("mid = %d\n", mid);
maxValueFive(2, 4, 1, 3, 8);
int maxFive = maxValueFive(2, 4, 1, 3, 8);
printf("maxFive = %d\n", maxFive);
//形参:形式上的参数.在函数定义时给定的参数叫做形参.一个一个的变量,存储数据在函数调用之前未知.
//实参:函数调用时给定的参数叫做实参,是一个唯一确定的数据.
//实参向形参传递的过程是一个拷贝的过程.
return 0;
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Homework