#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; } //其中有多次调用为精髓,形参后再形参再计算传参
如有不足之处请批评指正。