#include <stdio.h>
#include <stdlib.h>
void tips()//定义tips
{
printf("**********************\n");//输出
printf("**小浩版计算器****\n");//输出
void tipswhichcalc(char suanfa)//声明选择是是什么算法,并定义算法
{
switch(suanfa)算法传参
{
case '+': //如果是加法
printf("你计算的是加法\n");//输出加法
break;//退出
case '-': //如果是减法
printf("你计算的是减法\n");//输出减法
break;//退出
case '*': //如果是乘法
printf("你计算的是乘法\n");//输出乘法
break;//退出
case '/': //如果是除法
printf("你计算的是除法\n");//输出除法
break;//退出
default://除非
printf("你选择的算法超出计算器能力\n");//输出
break;//退出
}
}
int jiafa(int x,int y)//声明加法
{
int z;//定义整形变量z
z = x+y;//z=x+y
return z;//返回z
}
int jianfa(int x,int y)//声明减法
{
int z;
z = x-y;
return z;
}
int chengfa(int x,int y)//声明乘法
{
int z;
z = x*y;
return z;
}
int chufa(int x,int y)//声明除法
{
int z;
z = x/y;
return z;
}
void realcalc (int data1,int data2,char suanfa)//声明 realcalc
{
switch(suanfa)//循环语句,根据printf传参给suanfa
{
case '+':
printf("你计算的加法结果是%d\n",jiafa(data1,data2));//调用加法
break;
case '-':
printf("你计算的减法结果是%d\n",jianfa(data1,data2));//调用减法
break;
case '*':
printf("你计算的乘法结果是%d\n",chengfa(data1,data2));//调用乘法
break;
case '/':
printf("你计算的除法结果是%d\n",chufa(data1,data2));//调用除法
break;
}
}
void calc(char suanfa)//声明calc
{
int data1;
int data2;
tipswhichcalc(suanfa);//调用tipswhichcalc里传回suanfa的参数
printf("请输入第一个数\n");//输出第一个数
scanf("%d",&data1);//输入数给data1
printf("请输入第二个数\n");//输出第二个数
scanf("%d",&data2);//输出数给data2
realcalc(data1,data2,suanfa);//调用realcalc,并定义形参
}
int main()
{
int data1;
int data2;
// int ret;
// float retchufa;
char suanfa;
int mark = 0;
while(1)//循环,不用每次执行
{
tips();//调用小浩版计算器
if(mark !=0)
getchar();//这里的作用是把输data2以后的回车吸收掉,不想第一次进来的时候被调用,所以通过Mark来控制。
mark =1;
scanf("%c",&suanfa);//先输入了+,再输入了回车。
getchar();//回车符也是一种字符,getchar函数用来获取一个字符,在这里的作用是把回车吸收掉。
calc(suanfa);//调用calc
}
system("pause");//使界面一直显示
return 0;
}
//其中有多次调用为精髓,形参后再形参再计算传参
如有不足之处请批评指正。