計算器C程原代碼

計算器C程原代碼

計算器C程原代碼,用c程編寫一個程式可以從鍵盤輸入一個公式,回車後得到結果。

回車得

1
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include <conio.h>
char token【61】;
int n=0;
void error(void)
{
printf("ERROR!\n");
Exit(1);
}
void match(char expected)
{
if(token【n】==expected)
token【++n】=getchar();
else error();
}
double term(void);
double factor(void);
double exp(void)
{
double temp=term();
while((token【n】=="")||(token【n】=="-"))
switch(token【n】)
{
case'+':match('+');
temp+=term();
break;
case'-':match('-');
temp-=term();
break;
}
return temp;
}
double term(void)
{
double div;
double temp=factor();
while((token【n】=="*")||(token【n】=="/"))
switch(token【n】)
{
case'*':match('*');
temp*=factor();
break;
case'/':match('/');
div=factor();
if(div==0)
{
printf("The divisor is zero!\n");
exit(1);
}
temp/=div;
break;
}
return temp;
}
double factor(void)
{
double temp;
char number【61】;
int i=0;
if(token【n】=="(")
{
match('(');
temp=exp();
match(')');
}
else if(isdigit(token【n】)||token【n】==".")
{
while(isdigit(token【n】)||token【n】==".")
{
number【i++】=token【n++】;
token【n】=getchar();
}
number="\0";
temp=atof(number);
}
else error();
return temp;
}
main()
{
double result;
FILE *data=fopen("61590_4.dat","at");
if(data==NULL)
data=fopen("61590_4.dat","wt");
if(data==NULL)
return 0;
token【n】=getchar();
result=exp();
if(token【n】=="\n")
{
token【n】="\0";
printf("%s=%g\n",token,result);
fprintf(data,"%s=%g\n",token,result);
}
else error();
fclose(data);
getch();
}

相關搜尋

熱門詞條

聯絡我們