用C語(yǔ)言實(shí)現(xiàn)計(jì)算器功能
本文實(shí)例為大家分享了用C語(yǔ)言實(shí)現(xiàn)計(jì)算器功能的具體代碼,供大家參考,具體內(nèi)容如下
代碼如下:
#include<stdio.h> //C語(yǔ)言編寫(xiě)計(jì)算器程序 ^_^
void Counter1(int a,int b,char op); //函數(shù)聲明!
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("請(qǐng)輸入數(shù)據(jù):(想使用加法減法乘法功能輸入1,使用除法功能輸入2)\n");
scanf("%d",&choi);
if(choi==1){
printf("輸入數(shù)據(jù)的格式:數(shù)值 運(yùn)算符 數(shù)值\n");
scanf("%d %c %d",&a,&op,&b);//別忘記取地址運(yùn)算符??!
fflush(stdin);//用來(lái)清理緩存區(qū)!(執(zhí)行輸入以'\n'代表輸入結(jié)束,'\n'會(huì)留在緩存區(qū),故應(yīng)先清空緩存區(qū)以防ch接收到該字符而結(jié)束循環(huán)!)
Counter1(a,b,op);
}
else if(choi==2){
printf("輸入數(shù)據(jù)的格式:數(shù)值 運(yùn)算符 數(shù)值\n");
scanf("%lf %c %lf",&c,&op,&d);//別忘記取地址運(yùn)算符!!
fflush(stdin);//用來(lái)清理緩存區(qū)!(執(zhí)行輸入以'\n'代表輸入結(jié)束,'\n'會(huì)留在緩存區(qū),故應(yīng)先清空緩存區(qū)以防ch接收到該字符而結(jié)束循環(huán)!)
Counter2(c,d,op);
}
printf("是否繼續(xù)?(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;//以防分母為零(出現(xiàn)錯(cuò)誤)或輸入錯(cuò)誤字符仍調(diào)用Show_Sum()函數(shù)進(jìn)行輸出。
switch(op){
case '+':sum=Add(a,b);break;
case '-':sum=Sub(a,b);break;
case '*':sum=Mul(a,b);break;
default:{
printf("運(yùn)算符錯(cuò)誤!\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;//以防分母為零(出現(xiàn)錯(cuò)誤)或輸入錯(cuò)誤字符仍調(diào)用Show_Sum()函數(shù)進(jìn)行輸出。
switch(op){
case '/':{
if(d==0){
optag=false;
printf("被除數(shù)為零,發(fā)生錯(cuò)誤!\n");
}
else sum=Div(c,d);
break;
}
default:{
printf("運(yùn)算符錯(cuò)誤!\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);//輸出計(jì)算結(jié)果
}
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:該注意的或容易出現(xiàn)問(wèn)題的已經(jīng)在代碼區(qū)用注釋標(biāo)記了。
代碼實(shí)現(xiàn)如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言進(jìn)階輸入輸出重定向與fopen函數(shù)使用示例詳解
這篇文章主要為大家介紹了C語(yǔ)言進(jìn)階輸入輸出重定向與fopen函數(shù)的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02
c++ STL set_difference set_intersection set_union 操作
這篇文章主要介紹了c++ STL set_difference set_intersection set_union 操作,需要的朋友可以參考下2017-03-03
C語(yǔ)言不用鏈表完成學(xué)生管理系統(tǒng)(完整代碼)
這篇文章主要介紹了C語(yǔ)言不用鏈表完成學(xué)生管理系統(tǒng)(完整代碼),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
一篇文章詳解Qt中如何訪問(wèn)數(shù)據(jù)庫(kù)
Qt是一個(gè)廣泛使用的跨平臺(tái)應(yīng)用程序框架,它提供了許多功能,包括數(shù)據(jù)庫(kù)訪問(wèn),這篇文章主要給大家介紹了關(guān)于Qt中如何訪問(wèn)數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
華為云開(kāi)發(fā)工具CodeArts IDE for C/C++開(kāi)發(fā)使用指南
CodeArts IDE是一個(gè)集成開(kāi)發(fā)環(huán)境(IDE),它提供了開(kāi)發(fā)語(yǔ)言和調(diào)試服務(wù),本文主要介紹了華為云開(kāi)發(fā)工具CodeArts IDE for C/C++ 開(kāi)發(fā)使用指南,感興趣的可以了解一下2023-08-08

