令人头痛的函数

一、什么是函数

函数是一个功能模块,它把实现某个功能的代码块包含起来,并且起一个函数名,供别人使用,如printf函数、system函数。是程序与进行当中包装起来的步骤

二、为什么要用函数调用

  1. 代码很好看
  2. 容易定位问题
  3. 可复用性
  4. 分工

三、如何定义一个函数

1.无形参无返回值

void function()		//void 代表无返回值,不需要return
{
	
}

2.无形参有返回值

int function()	
{
	
	return 0;
}

3.有形参有返回值

int function(int data1, int data2)	
{
	
	return 0;
}

函数的定义包含一下参数:

  1. 函数名—— function
  2. 形式参数——data1, data2
  3. 返回值——return 0;
  4. 函数体(代码块)——{}里面的内容

四、如何调用一个函数

1.函数名(实际参数)

function(1,2);

2.函数名()

function();

四、函数可以多级调用

void function2()
{

}

int function(int data1, int data2)
{
	function2();
    
	return 0;
}

四、一般函数定义的几种情况(先说部分)

1.无返回值,无参数

#include <stdio.h>
#include <stdlib.h>

//你妈妈叫你去买米,不关心买多少斤(参数),也不关心你买回来没(返回值)
void buyRice()
{
	printd("去买米......\n");
}

int main()
{
    buyRice();
    
	system("pause");
	return 0;
}

作用:打印一些东西

2.无返回值,有参数

#include <stdio.h>
#include <stdlib.h>

//你妈妈叫你去买米,告诉你买多少斤(参数),也不关心你买回来没(返回值)
void buyRice(int weight)	//weight是形式参数,意思有点类似变量定义,所以写法也类似变量的定义,如int a;
{
	printd("去买%d斤米......\n",weight);
    
}

int main()
{
	int a = 5;
    buyRice(10);	//如果调用函数带有参数,必须传参!!!
	buyRice(a);		//调用的时候传递的参数叫做实际参数,对格式没有要求,对数据的类型严格要求
                    
	system("pause");
	return 0;
}

3.有返回值,有参数

#include <stdio.h>
#include <stdlib.h>

//y = f(x)
//y = 2x+1

int f(int x)
{
	int y;
    printf("x = %d\n",x);
    y = 2*x + 1;
    return y;

}
int main()
{
	int x = 100;
    int y = 0;
    
    y = f(x);
    
    printf("y = 2x+1\n");
    printf("y = %d\n",y);
    
	system("pause");
	return 0;
}

4.有返回值,有多个同类型参数

#include <stdio.h>
#include <stdlib.h>

//z = f(x)
//z = x + y

int f(int x, int y)
{
	int z;
    printf("x = %d\n",x);
    printf("y = %d\n",y);
    z = x + y;
    return z;

}
int main()
{
	int x = 100;
    int y = 100;
    int z = 0;
    
    z = f(x,y);
 
    printf("z = x + y\n");
    printf("z = %d",z);
    
	system("pause");
	return 0;
}

五、使用函数制作可选择算法计算器

#include <stdio.h>
#include <stdlib.h>

void tishi()
{
	printf("**********************\n");
	printf("****请选择一种算法****\n");
    printf("*****设计者: LXY*****\n");
    printf("**********************\n");
    printf("**********************\n");

}

int jia(int x,int y)	//加法函数
{
	int z;
    z=x+y;
    return z;
}

int jian(int x,int y)	//减法函数
{
	int z;
    z=x-y;
    return z;
}

int cheng(int x,int y)	//乘法函数
{
	int z;
    z=x*y;
    return z;
}

double chu(int x,int y)	//除法函数
{
	double z;
    z=(double)x/y;
    return z;
}

void xzsf(char suanfa)	//提示算法选择函数
{
	switch(suanfa){
			case'+':
				printf("你选择了加法\n");
				
				break;
			 case'-':
				printf("你选择了减法\n");
				
				break;
			 case'*':
				printf("你选择了乘法\n");
				
				break;
			 case'/':
				printf("你选择了除法\n");
			
				break;
			 default:
				printf("你输入了错误的算法\n");
				break;
			}
}

void jisuan(int x,int y,char suanfa)	//计算结果打印函数
{
	 switch(suanfa){
				case'+':
					printf("两数相加结果为:%d\n",jia(x,y));
					break;
				 case'-':
					printf("两数相减结果为:%d\n",jian(x,y));
					break;
				 case'*':
					printf("两数相乘结果为:%d\n",cheng(x,y));
					break;
				 case'/':
					printf("两数相除结果为:%f\n",chu(x,y));
					break; 
     }
 }
int d1(char suanfa)	//键盘输入2个数
{
	   xzsf(suanfa);
       int x,y;    
       printf("请输入第一个数:\n");
	   scanf("%d",&x);
	   printf("请输入第一个数:\n");
	   scanf("%d",&y);
       
     jisuan(x,y,suanfa); 
}

int main()
{
		
    int x,y,z;
    char suanfa;
    int mark=0;
   
    while(1){
		tishi();
        if(mark != 0)
			getchar();	//吸收回车字符
        mark = 1;
        scanf("%c",&suanfa);
        getchar();	//吸收回车字符
        d1(suanfa);
        
    }
    
	system("pause");
	return 0;
}

六、补充

1.函数可以多级调用

2.形式参数

  1. 形式参数也是一个局部变量,作用域仅限于该函数

  2. 形式参数,也是一个变量,局部变量,有自己的内存空间

    	空间的生存期(出生和死亡)
    	①何时申请了该空间
    			a.当函数被调用的时候,才申请了该内存空间
           		b.同时,这个空间内的数据被赋值成实际参数的值,函数调用把实际参数的值拷贝一份给形式参数
    	②何时释放了该空间
    			函数执行结束后,该内存空间由内存管理单元自动回收(释放)
    

3.看懂一个函数,才懂得怎么使用函数:

  1. 参数怎么传:参数的类型,参数的个数
  2. 参数的返回值 :返回值的类型
  3. 功能:函数名来体现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值