day06 函数 形参实参 函数的嵌套调用

// 引入文件:
//#import " 当前工程下的索引文件 " ,相当于拷贝一份。
//#import < 到指定路径下的索引文件 > ,相当于系统文件。
#import "Operator.h"
#pragma mark-
函数
// 定义一个函数。(在 main 函数之外)
// 完整的函数包括三部分:函数声明,函数实现,函数调用
// 函数声明
/*
 
1 )函数定义出现在主调用之前,可以省略函数声明。(但是一般不要省略)
 
 
2 )函数定义在主调函数之后,需要提前声明函数。
 
 */

// 函数的分类:
//1. 库函数
//printf();
//scanf();
//strcpy();
// 2. 自定义函数
/*
 (1)
无参无返回值。
 
2 )无参有返回值。
 */


// 函数的声明
void printHello( void );
// 函数的实现
void printHello( void ){
   
printf ( "hello,nimei" );
}
// 2 )无参有返回值。
// 返回值为 int 的函数
// 函数声明:
int getCount()
{
   
//return 后面的数据返回给主调函数。、
   
// 什么是主调函数:那个函数调用那本函数,谁就是主调函数。
   
return 34 ;
}
// 3 )有参数,无返回值类型的函数
// 函数声明内形参可以与函数实现的形参名不同
void printSumValue( int a, int b);
void printSumValue( int value1, int value2)
{
   
// 参数如何写:类型 + 参数名(形式参数,称为形参)
   
// 如果是多个参数,用逗号分隔(需要注意:每个形参前面需要声明参数类型)
   
printf ( " 两个数的和为 :%d\n" ,value1+value2);
}
// 4 )有参数 , 有返回值函数
int sumValue( int a, int b);

int sumValue( int a, int b)
{
   
return   a+b;
}

// 练习: 1. 编写函数 void sayHi(vodi); 应用 for 循环,打印 3 遍我要减肥
//void sayHi(void);
//void sayHi(void)
//{
//    for (int i=0; i<3;i++) {
//        printf(" 我要减肥 \n");
//    }
//}


//2. 编写函数,应用 for 循环,打印 n 我要减肥 n 的值有键盘输入。
//void printfHi(int n);
//void printfHi(int n)
//{
//    for (int i=0; i<n; i++) {
//          printf(" 我要减肥 \n");
//    }
//}


//3. 编写函数,计算 1-n 的和,并将计算结果通过返回值返回, n 的值有键盘输入
//int sumData(int N);
//int sumData(int N)
//{
//    int sum=0;// 存储累加结果
// 循环累加结果:
//    for (int i=1; i<=N; i++) {
//        sum +=i;
//    }
//    return  sum;
//}

//4. 编写函数,返回三个整数的中间值
int minvar( int a, int b, int c);

int minvar( int a, int b, int c)
{
   
int min,max;
    max=a > b?(a>c? a:c):(b>c?b:c);
    min=a < b?(a<c? a:c):(b<c?b:c);
   
return   a+b+c-max-min;
}
#pragma mark- 形参实参
// 形参:出现在函数定义中,以假名字来表示函数调用时需要提供的值,作用范围为整个函数范围。
// 实参:(实际参数)
// 出现在函数调用中的表达式。
// 注意:函数调用中,形参会拷贝实参的内容,传递参数事给函数传递信息的一种方法。
#pragma mark- 函数的嵌套调用

/*
 c
语言中不允许函数嵌套定义,但是允许函数嵌套调用。
 
函数嵌套定义:在一个函数定义内在去定义一个函数。
 
函数嵌套调用:在一个函数内去调用另一个函数。
 */

int main( int argc, const char * argv[]) {
  
// 函数调用:
//    printHello();
   
// 调用无参无返回值函数
   
// 不需要写返回值类型,直接写函数名及小括号,就算没有参数,括号也不能省略。
   
   
   
// 函数调用( 2
   
// 调用有返回值,无参数的函数
   
// 不需要写返回值类型,直接写函数名
   
// 可以定义一个返回值类型匹配的变量名来保存函数的反馈结果
//    int count=getCount();
//    printf(" 人数是 :%d\n",count);
//    printf(" 人数是 :%d\n",getCount());
   
   
   
// 调用函数( 3
   
// 调用的时候出入的数据称为实参
   
// 实参可以常量或者常量表达式
   
// 也可以写变量
   
//int a=3
   
// int b=5;
   
// printSumValue(a, b);
   
// 以上三句等效于以下一句代码
//      printSumValue(3, 5);
   
// 调用函数 (4)
   
// 可以直接赋值常量
   
// 也可以写变量
//    int sum=sumValue(6, 8);
//    printf("sum=%d\n",sum);
//    printf("sum=%d\n",sumValue(6, 8));
   
   
// 函数的定义结构
   
// 返回值类型 函数名(参数列表) {
   
// 函数体
//    return  返回具体数值 ( 若没有返回值,就不用写了 )
//}
  
  
// 1.
   
//sayHi();
   
// 2.
   
//int count=0;
//    printf("please input count:");
//    scanf("%d",&count);
//    printfHi(count);
   
   
//3.
//    int n=0;
//    printf("please input n:");
//    scanf("%d",&n);
//    printf("sum=%d",sumData(n));
   
   
//4.
//    int a,b,c;
//    printf("plese input a,b,b:");
//    scanf("%d%d%d",&a,&b,&c);
//    printf(" 中间值: %d",minvar(a,b,c));
   
//        printf("%d\n",sumVar(6,9));
//        printf("%d\n",subVar(6,9));
//        printf("%d\n",mulVar(6,9));
//        printf("%.2f\n",devVar(14.2,0.9));
   
   
printf ( " 最大值: %d\n" , getMaxOfTwo ( 7 , 8 ));
   
printf ( " 最大值: %d\n" , getMaxOfThree ( 7 , 8 , 9 ));
   
printf ( " 最大值: %d\n" , getMaxOfFour ( 7 , 8 , 9 , 10 ));
   
printf ( " 最大值: %d\n" , getMaxOfFive ( 7 , 8 , 9 , 10 , 11 ));
   
return 0 ;
}


//练习:穿件一对文件:Operator.h Operator.m实现4个函数,分别求两个整数的加减乘除。
int sumVar(int a,int b);
int subVar(int a,int b);
int mulVar(int a,int b);
float devVar(float a,float b);

//练习:1.2个数的最大值。
int  getMaxOfTwo(int a,int b);
//练习:2.3个数的最大值。
int  getMaxOfThree(int a,int b,int c);
//练习:3.4个数的最大值。
int  getMaxOfFour(int a,int b,int c,int d);
//练习:4.5个数的最大值。
int   getMaxOfFive( int a, int b, int c, int d, int e);


int sumVar(int a,int b)
{
   
return  a+b;
}
int subVar(int a,int b)
{
   
return  a-b;
}
int mulVar(int a,int b)
{
   
return  a*b;
}
float devVar(float a,float b)
{
   
//检测参数有效性
   
//假设计算范围为整数,以-1作为错误代码
   
if(b==0)
       
return -1;
   
return a/b;
}


int  getMaxOfTwo(int a,int b)
{
   
return a>b?a:b;
}

int  getMaxOfThree(int a,int b,int c)
{
//    int max=getMaxOfTwo(a, b);
//    max=getMaxOfTwo(max, c);
   
int max=getMaxOfTwo(getMaxOfTwo(a, b), c);
   
return max;
}

int  getMaxOfFour(int a,int b,int c,int d)
{
   
int max=getMaxOfTwo(getMaxOfThree(a, b,c),d);
   
return max;
}

int  getMaxOfFive(int a,int b,int c,int d,int e)
{
   
int max=getMaxOfTwo(getMaxOfFour(a, b, c, d),e);
   
return max;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值