代码如下:
#include<stdio.h> //C语言编写计算器程序 ^_^
void Counter1(int a,int b,char op); //函数声明!
void Counter2(double c,double d,char op);
void Show_Sum1(int a,char op,int b,int sum);
void Show_Sum2(double c,double d,char op,double sum);
int Add(int a,int b);
int Sub(int a,int b);
int Mul(int a,int b);
double Div(double a,double b);
int main(){
int a=0,b=0;//初始化
double c=0.0,d=0.0;
char op='#';
char ch='#';
int choi=0;
do{
printf("请输入数据:(想使用加法减法乘法功能输入1,使用除法功能输入2)\n");
scanf("%d",&choi);
if(choi==1){
printf("输入数据的格式:数值 运算符 数值\n");
scanf("%d %c %d",&a,&op,&b);//别忘记取地址运算符!!
fflush(stdin);//用来清理缓存区!(执行输入以'\n'代表输入结束,'\n'会留在缓存区,故应先清空缓存区以防ch接收到该字符而结束循环!)
Counter1(a,b,op);
}
else if(choi==2){
printf("输入数据的格式:数值 运算符 数值\n");
scanf("%lf %c %lf",&c,&op,&d);//别忘记取地址运算符!!
fflush(stdin);//用来清理缓存区!(执行输入以'\n'代表输入结束,'\n'会留在缓存区,故应先清空缓存区以防ch接收到该字符而结束循环!)
Counter2(c,d,op);
}
printf("是否继续?(Y/N):\n");
ch=getchar();//输入字符Y(y)或N(n)
}while(ch=='Y'||ch=='y');
return 0;
}
void Counter1(int a,int b,char op){
int sum=0;
int optag=true;//以防分母为零(出现错误)或输入错误字符仍调用Show_Sum()函数进行输出。
switch(op){
case '+':sum=Add(a,b);break;
case '-':sum=Sub(a,b);break;
case '*':sum=Mul(a,b);break;
default:{
printf("运算符错误!\n");
optag=false;
break;
}
}
if(optag) Show_Sum1(a,op,b,sum);
}
void Counter2(double c,double d,char op){
double sum=0.0;
int optag=true;//以防分母为零(出现错误)或输入错误字符仍调用Show_Sum()函数进行输出。
switch(op){
case '/':{
if(d==0){
optag=false;
printf("被除数为零,发生错误!\n");
}
else sum=Div(c,d);
break;
}
default:{
printf("运算符错误!\n");
optag=false;
break;
}
}
if(optag) Show_Sum2(c,d,op,sum);
}
void Show_Sum1(int a,char op,int b,int sum){
printf("%d %c %d=%d",a,op,b,sum);//输出计算结果
}
void Show_Sum2(double c,double d,char op,double sum){
printf("%.4f %c %.4f=%.4f",c,op,d,sum);
}
int Add(int a,int b){
return a+b; //加
}
int Sub(int a,int b){
return a-b; //减
}
int Mul(int a,int b){
return a*b; //乘
}
double Div(double a,double b){
return a/b; //除
}
ps:该注意的或容易出现问题的已经在代码区用注释标记了。
代码实现如下:
?如有不足请大佬们指出!会继续加油的!^_^
?
|