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

来源:互联网 发布:java 图片合成框架 编辑:程序博客网 时间:2024/05/22 06:55
//引入文件:
//#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 后面的数据返回给主调函数。、
   
//什么是主调函数:那个函数调用那本函数,谁就是主调函数。
   
return34;
}
//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,constchar * 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));
   
return0;
}


//练习:穿件一对文件: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
原创粉丝点击