xuwei97 2017-02-18 11:30 采纳率: 0%
浏览 1255

一个简单的四则计算程序,怎么在用户未完整输入算式就按回车的时候在屏幕上显示错误信息?

刚学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条回答 默认 最新

  • 当作看不见 2017-02-18 11:34
    关注

    把你的程序 封装成一个函数就可以了。
    也许你还没有发现 ,这个功能你已经实现了,你是在最后按回车的时候,检测,现在改为按任意值的时候都检测,出错就报错重来,否则就是不输出结果,就达到了你要的效果,自然和你原来的代码有一点细微的不同,那就是输入符号的时候检测与原来有所不同

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办