xuwei97
2017-02-18 11:30一个简单的四则计算程序,怎么在用户未完整输入算式就按回车的时候在屏幕上显示错误信息?
刚学C语言,写了下面这个四则运算的代码。测试的时候发现如果我只输入一个数字或者一个数字加算术符号就按回车的话,会出bug。我想实现的是在用户这样做的时候打印出一行提示信息,然后重新开始整个程序。不知道怎么实现,求教。
#include <stdio.h>
int main(void)
{
double dig; //操作数
int judge = 0; //输入合理性计算
double result = 0; //初始计算结果
int sign; //运算符号
for (;;)
{
while ((judge = scanf("%lf",&dig)) == 0) //判断第一个输入的值为数字
{
printf("Please input correctly!\n");
fflush(stdin);
}
result = dig;
sign = getchar();
judge = scanf("%lf",&dig);
while (((sign == 42) || (sign == 43) || (sign == 45) || (sign == 47) ) && (judge == 1))
//当读取到加减乘除符号和数字时进行计算
{
if (sign == 43) //加法
result += dig;
else if (sign == 45) //减法
result -= dig;
else if (sign == 42) //乘法
result *= dig;
else if (sign == 47) //除法
result /= dig;
sign = getchar(); //获得下一个运算符号
if(sign == '\n') //若为回车则打印计算结果
printf("The result is %.2lf.\n", result);
else
judge = scanf("%lf",&dig); //否则读取下一个数字
}
if (((sign != 42) && (sign != 43) && (sign != 45) && (sign != 47) && (sign != '\n') )|| (judge == 0))
{
printf("Please input correctly!\n"); //如果输入运算符和数字以外的东西,提示并清除
fflush(stdin);
}
}
return 0;
}
- 点赞
- 回答
- 收藏
- 复制链接分享
2条回答
为你推荐
- 这段代码在Dev-C++和Visual Studio 2019中的运行结果不一样,这是怎么回事呢?
- c语言
- 1个回答
- C语言 一个简单的数学算式输出结果总是零
- c语言
- 2个回答
- C语言 加法算式 求大神给个代码!
- c语言
- 1个回答
- Java语言高分悬赏:借助2个堆栈,实现java语言输入表达式自动计算表达式的值
- 开发语言
- 2个回答
- 这个问题是什么原因?如何解决?
- c++
- 1个回答
换一换