用C语言实现计算器功能
短信预约 -IT技能 免费直播动态提醒
本文实例为大家分享了用C语言实现计算器功能的具体代码,供大家参考,具体内容如下
代码如下:
#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:该注意的或容易出现问题的已经在代码区用注释标记了。
代码实现如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341