函数类别
函数定义有几种情况:
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;
}