问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于c语言计算器的问题

发布网友 发布时间:2022-04-24 01:57

我来回答

1个回答

热心网友 时间:2023-10-20 09:15

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
#include<math.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 power(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=power();
while((token[n]=='*')||(token[n]=='/'))
switch(token[n])
{
case'*':
match('*');
temp*=power();
break;
case'/':
match('/');
div=power();
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[i]='\0';
temp=atof(number);
}
return temp;
}

double power(void) //添加乘方功能
{
double temp = factor();
if(token[n] == '^')
{
match('^');
temp = pow(temp, power());
}
return temp;
}

int main()
{
double result;

while(true)
{
FILE *data=fopen("61590_4.dat","at");
if(data==NULL)
data=fopen("61590_4.dat","wt");
if(data==NULL)
return 0;
printf("请输入四则混合运算\n");
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);
n=0;
}

return 0;
getch();
}追问大神,能不能帮我在每次运算后添加“是否继续”,还有为什么程序不会报错,谢谢

追答int main()
{
double result;
printf("请输入四则混合运算\n");
while(true)
{
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);
n=0;
printf("继续输入请输入Y\n");
char i;
scanf("%c", &i);
if(i != 'Y')
break;
scanf("%c", &i);
}
你是说哪里不会报错

热心网友 时间:2023-10-20 09:15

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
#include<math.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 power(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=power();
while((token[n]=='*')||(token[n]=='/'))
switch(token[n])
{
case'*':
match('*');
temp*=power();
break;
case'/':
match('/');
div=power();
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[i]='\0';
temp=atof(number);
}
return temp;
}

double power(void) //添加乘方功能
{
double temp = factor();
if(token[n] == '^')
{
match('^');
temp = pow(temp, power());
}
return temp;
}

int main()
{
double result;

while(true)
{
FILE *data=fopen("61590_4.dat","at");
if(data==NULL)
data=fopen("61590_4.dat","wt");
if(data==NULL)
return 0;
printf("请输入四则混合运算\n");
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);
n=0;
}

return 0;
getch();
}追问大神,能不能帮我在每次运算后添加“是否继续”,还有为什么程序不会报错,谢谢

追答int main()
{
double result;
printf("请输入四则混合运算\n");
while(true)
{
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);
n=0;
printf("继续输入请输入Y\n");
char i;
scanf("%c", &i);
if(i != 'Y')
break;
scanf("%c", &i);
}
你是说哪里不会报错

热心网友 时间:2023-10-20 09:15

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
#include<math.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 power(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=power();
while((token[n]=='*')||(token[n]=='/'))
switch(token[n])
{
case'*':
match('*');
temp*=power();
break;
case'/':
match('/');
div=power();
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[i]='\0';
temp=atof(number);
}
return temp;
}

double power(void) //添加乘方功能
{
double temp = factor();
if(token[n] == '^')
{
match('^');
temp = pow(temp, power());
}
return temp;
}

int main()
{
double result;

while(true)
{
FILE *data=fopen("61590_4.dat","at");
if(data==NULL)
data=fopen("61590_4.dat","wt");
if(data==NULL)
return 0;
printf("请输入四则混合运算\n");
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);
n=0;
}

return 0;
getch();
}追问大神,能不能帮我在每次运算后添加“是否继续”,还有为什么程序不会报错,谢谢

追答int main()
{
double result;
printf("请输入四则混合运算\n");
while(true)
{
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);
n=0;
printf("继续输入请输入Y\n");
char i;
scanf("%c", &i);
if(i != 'Y')
break;
scanf("%c", &i);
}
你是说哪里不会报错

热心网友 时间:2023-10-20 09:15

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
#include<math.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 power(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=power();
while((token[n]=='*')||(token[n]=='/'))
switch(token[n])
{
case'*':
match('*');
temp*=power();
break;
case'/':
match('/');
div=power();
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[i]='\0';
temp=atof(number);
}
return temp;
}

double power(void) //添加乘方功能
{
double temp = factor();
if(token[n] == '^')
{
match('^');
temp = pow(temp, power());
}
return temp;
}

int main()
{
double result;

while(true)
{
FILE *data=fopen("61590_4.dat","at");
if(data==NULL)
data=fopen("61590_4.dat","wt");
if(data==NULL)
return 0;
printf("请输入四则混合运算\n");
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);
n=0;
}

return 0;
getch();
}追问大神,能不能帮我在每次运算后添加“是否继续”,还有为什么程序不会报错,谢谢

追答int main()
{
double result;
printf("请输入四则混合运算\n");
while(true)
{
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);
n=0;
printf("继续输入请输入Y\n");
char i;
scanf("%c", &i);
if(i != 'Y')
break;
scanf("%c", &i);
}
你是说哪里不会报错

热心网友 时间:2023-10-20 09:15

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
#include<math.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 power(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=power();
while((token[n]=='*')||(token[n]=='/'))
switch(token[n])
{
case'*':
match('*');
temp*=power();
break;
case'/':
match('/');
div=power();
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[i]='\0';
temp=atof(number);
}
return temp;
}

double power(void) //添加乘方功能
{
double temp = factor();
if(token[n] == '^')
{
match('^');
temp = pow(temp, power());
}
return temp;
}

int main()
{
double result;

while(true)
{
FILE *data=fopen("61590_4.dat","at");
if(data==NULL)
data=fopen("61590_4.dat","wt");
if(data==NULL)
return 0;
printf("请输入四则混合运算\n");
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);
n=0;
}

return 0;
getch();
}追问大神,能不能帮我在每次运算后添加“是否继续”,还有为什么程序不会报错,谢谢

追答int main()
{
double result;
printf("请输入四则混合运算\n");
while(true)
{
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);
n=0;
printf("继续输入请输入Y\n");
char i;
scanf("%c", &i);
if(i != 'Y')
break;
scanf("%c", &i);
}
你是说哪里不会报错

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何理解“时间就是空间,空间就是时间”? 办公室副主任竞聘演讲稿范文 学校办公室主任竞聘演讲稿范文 最新办公室主任竞聘演讲稿 办公室主任竞聘演讲稿优秀范文 ...堆墨现象,墨线 接地和粘度都正常,请问应如何解决 ...都正常了开始喷印结果喷一条墨线好恐怖怎么解决呀各位老师 威力喷码机 求一份学生会演讲词 大学学生会个人优秀演讲稿 搜幼师实习论文、三千字! 卤味豆腐干如何做 关于产检怎么用生育保险问题 生育保险有几种用那种报销合适 女性生育保险怎么用 生育险在医院怎么使用 五险里的生育保险怎么使用 生孩子的时候生育保险怎么用 生育保险怎么用?单位给交了生育保险,以后生孩子时怎么用 生育保险怎么用?单位给交了生育保险,以后生孩子时怎么用? 生育保险是怎么报销才划算 无主之地2 鸟boss怎么躲俯冲 无主之地2蜂巢掉落点 无主之地2疯子op8山顶竞技场怎么过 伤感一些的歌曲,像 有一种爱叫做放手 呢样的 谢谢诶。。。 无主之地2怎么打海波里斯?求攻略经验!谢谢 《有一种爱叫做放手》这首歌很好听,如果两个人都彼此爱着对方,却又不能在一起,你真的会选择放手吗? 《无主之地2》的BOSS--“大海虫”怎么打?就是那个不断召唤小虫,吐紫渣的那个虫子~~~ 有一种爱叫做放手歌词 无主之地2那个老鹰怎么打啊。。。好厉害啊5种属性。 我的任务管理器打开后为什么只出现用户信息 幼师心得论文 rstandard意思 如何做一名合格的幼儿教师 论文 卤水煮豆干的做法,卤水煮豆干怎么做好吃,卤水 病毒是怎么让杀毒软件无法启动的? 五香卤豆干的做法步骤图,五香卤豆干怎么做 好多电脑专业术语(指英文的),特别是一些英文大写字母缩写,在哪里有专门... 如何做一名优秀的幼儿园教师论文 如何做一名幼儿教师论文 求计算机休眠代码 求幼师论文3000字不低于10篇文献 2.4g和5g要不要合并?对生活有什么影响么? 求一篇3000字左右的幼师毕业论文 ~~!急求~~! 数码宝贝 装甲进化 罗马音 我为什么要做幼儿教师500字左右的论文 Polo plus得到过什么奖项? 词法扫描器 c c++ 根据幼教专业,写一篇关于理想的论文!1500字! 《RS江湖》Runescape怎么玩如何赚钱?