函数(二)

函数类别

函数定义有几种情况:

1、无返回值无参数
2、无返回值有参数
3、有返回值有参数
4、有返回值有多个类型的参数
5、有返回值有多个类型的参数
6、根据需求各种组合都行

  • 参数:个数 类型
  • 返回值类型

eg:

#include<stdio.h>
int buyRice(int a)
{
	printf("买%d斤米\n",a);
	a++;
	printf("jinShu:=%d\n",a);
}
int main ()
{	
	int a = 30;
	buyRice(30);//30称为实际参数
	printf("main :a=%d\n",a);
	system("pause");
	return 0;
}
内存空间
a.空间的生存期
	何时申请了该空间?
	当函数被调用的时候,才申请了该空间,才有了这个变量;同时这个空间的数据
被赋值成实际参数的值,函数调用把实际参数值拷贝一份给形式参数。
	何时释放该空间?
	函数执行结束后,该空间有内存管理单元自动回收

eg:加减乘除计算器

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


int add(int x,int y)
 {
	int z;
    z=x+y;
    return z;
 
 }
 int sub(int x,int y)
 {
	int z;
    z=x-y;
    return z;
 
 }
 int mul(int x,int y)
 {
	int z;
    z=x*y;
    return z;
 
 }
 float chuFa(int x,int y)
 {
	float z;
    z=(float)x+y;//不同类型数据运算时,比如两个整数相除,必须将除数或
    //被除数强制转换成小数,否则小数点后面的数据会被省略
    return z;
 
 }
 
void tips()
{
   printf("*************************************************\n");
   printf("****请选择一种算法:+ - x / *********************\n");
   printf("***************设计者:dou************************\n");
   printf("************************************************\n");
   printf("************************************************\n");
 }
void realCalc(int data1,int data2,char suanfa)
{
	switch(suanfa)
      {
		case '+':
        printf("两数相加,结果:%d\n",add(data1,data2));
        break;
		case '-':
         printf("两数相减,结果:%d\n",sub(data1,data2));
        break;
		case 'x':
        printf("两数相乘,结果:%d\n",mul(data1,data2));
        break;
		case '/':
        printf("两数相除,结果:%d\n",chuFa(data1,data2));
        break;
        default:
			break;
      }

void tipWhichCalc(char suanfa)
{
	switch(suanfa){
		case '+' :
        printf("你选择了加法\n");
        break;
		case '-' :
        printf("你选择了减法\n");
        break;
        case 'x' :
        printf("你选择了乘法\n");
        break;
        case '/' :
        printf("你选择了除法\n");
        default :
        printf("算法选择错误\n");
        break;
    }
}


}
void calc(char suanfa)
{
	int data1;
    int data2;
    tipWhichCalc(suanfa);
     printf("请输入第一个数据\n");
     scanf("%d",&data1);
     printf("请输入第二个数据\n");
     scanf("%d",&data2);
     realCalc(data1,data2,suanfa);
}


int main()
{
	int data1;
    int data2;
    float retchufa;
    char suanfa;	
    int mark =0;
 while(1){
    tips();
    if (mark != 0)
    getchar();//这里的作用是把输入data2以后的回车吸收掉,不想再第一次
    //进来的时候被调用。
    scanf("%c",&suanfa);//先输入+,然后再输回车
    getchar();//回车也是一种字符,getchar用来吸收回车
    calc(suanfa);
    }
    
	system("pause");
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值