如何在C语言程序中添加这个功能(输入Y\N继续或结束程序计算)现在写的程序计算后随便按下键盘会结束程序

#include<stdio.h>#include<ctype.h>#include<stdlib.h>chartoken[61];intn=0;voiderror(vo... #include<stdio.h>
#include<ctype.h>
#include<stdlib.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[i]='\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);
return 0;
}
展开
 我来答
jayhou1986
2010-11-30 · TA获得超过1511个赞
知道小有建树答主
回答量:586
采纳率:81%
帮助的人:414万
展开全部
我将main函数做了一些改动,加了一个char a用于接收用户输入的y或n,如果用户输入y,则清屏,然后用户可以开始进行算式输入,如果输入n则程序退出,如果输入其他字符无效。在用getch()函数时要添加一个头文件#include <conio.h>,之所以我用getch,是因为getch输入字符y或n后不用敲回车确定就可以,当然如果你想让用户输入y或n后再用回车确定的话,就把getch改成getchar就行了
void main()
{
double result;
char a;
FILE *data=fopen("61590_4.dat","at");
if(data==NULL)
data=fopen("61590_4.dat","wt");
if(data==NULL)
return;
NEXT:
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();
printf("按Y继续,按N结束\n");
while(true)
{
a = getch();
if (a == 'y')
{
system("cls");
goto NEXT;
}
else if (a == 'n')
return;
}
fclose(data);
}
蔡白晁睿思
2019-09-11 · TA获得超过3857个赞
知道大有可为答主
回答量:3083
采纳率:33%
帮助的人:183万
展开全部
你好!
在大循环外加一个标识变量
用do-while(flag)
flag为标准变量
用来判断是否继续
希望对你有所帮助,望采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
后心诺qg
2010-11-30 · 超过67用户采纳过TA的回答
知道答主
回答量:256
采纳率:0%
帮助的人:167万
展开全部
在大循环外加一个标识变量 用do-while(flag) flag为标准变量 用来判断是否继续
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式