新手求助,请大家看看是什么问题!
刚刚学习C语言一个月,是用谭浩强视频都程自学的.学到循环控制了.为了巩固一下所学的,就自己写了几句,但是有问题,有时会死循环.TC写的.所写的程序大致目的是:输入一个算式(+,_,*,/)和算式的结果,计算机判结果对错。一个算式连错三次计算机给结果,并记录错与对的题数和每题的平均错次数。下面把程序贴出来分析一下,当我输入错误,成2+5++*,也就是后面多回两个符号就成了死循环了。
#include "stdio.h"
main()
{
float a,b,c,d;
int e=0,f=0,g=0,n=0;
char x,y; /*定义运算符号*/
begin:
printf("input count, example: 0+0=0 \n"); /*显示输入提示*/
scanf("%f%c%f%c%f",&a,&x,&b,&y,&c); /*输入算式,格式为0.0+0.0=0.0*/
if(y=='='&&(x=='+'||x=='-'||x=='*'||x=='/')) /*判断运算符是否正确*/
{
go: switch(x)
{
case '+': d=a+b; break;
case '-': d=a-b; break;
case '*': d=a*b; break;
case '/': d=a/b; break;
}
if(d==c) /*判断计算结果*/
{
e++; f=0; /*正确结果计数;错误结果小于三次时计算正确,错误次数置0*/
printf("right %d number! \n input 'e' key to exit! any key continue! \n",e); /*显示计算正确次数,并提示输入e退出或继续*/
getchar(); /*选择是否继续*/
if(getchar()!='e') goto begin; /*用户输入不为e时返回开始,否则退出程序*/
}
else
{
f++; n++; /*本题计算错误计数与全部题计算错误计数*/
printf("error %d !redo:\n%f%c%f=",f,a,x,b); /*显示本题错误次数与算式*/
scanf("%f",&c); /*重新输入计算结果*/
if(f==3) /*如果本题计算出现3次错误*/
{
printf("fool!\n%f%c%f=%f\n redo the count:\n",a,x,b,d); /*显示正确结果,并提示再做题*/
g++; f=0; /*累计错误数,并把本题错误次数置0*/
goto begin; /*本题结束,返回到开始*/
}
goto go; /*本题错误小于三次时,返回到判断计算结果*/
}
}
else
{
printf(" the sign is error!\n"); goto begin; /*运算符错误返回开始*/
}
printf("right %d.error %d,each count done wrong %d times!\n",e,g,n/(e+g));/*退出程序时显示对和错的题数,并显示平均每题错误次数*/
system("pause");
}