加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中的计算器程序

发布时间:2020-12-16 09:48:58 所属栏目:百科 来源:网络整理
导读:我想用C写一个计算器程序. 输入必须完全采用以下形式: a oper b 其中a,b是double和oper类型的数字是这些字符,–,*,/. 码: int main(){ char oper; double a,b; printf("What do you want to calculate?n"); if (scanf("%lf %1[-+/*] %lf",a,oper,b) != 3)
我想用C写一个计算器程序.

输入必须完全采用以下形式:

a oper b

其中a,b是double和oper类型的数字是这些字符,–,*,/.

码:

int main()
{
   char oper;
   double a,b;

   printf("What do you want to calculate?n");
   if (scanf("%lf %1[-+/*] %lf",&a,&oper,&b) != 3)
        printf("Error. Invalid input.n");
    else {

   switch(oper)
   {
    case '+':
        printf("%f+%f=%.2f",a,b,a+b);
        break;
    case '-':
        printf("%f-%f=%.2f",a-b);
        break;
    case '*':
        printf("%f*%f=%.2f",a*b);
        break;
    case '/':
        if(b != 0)
        {
                    printf("%f/%f=%.2f",a/b);
            break;
        }
        else
        {
            printf("Error! You can not divide by 0.");
            break;
        }
    default:
        printf("Error! Invalid operator.");
        break;
   }}
   return 0;
}

问题:

当用户输入例如此输入时:

123

该计划将冻结.

同时当用户输入例如这些输入时:

123 5
123 ab
Hello

我们的程序将打印

ERROR. Invalid input.

我真的需要你的帮助.如果我们输入此输入,请你修改我的代码,例如:

123

我们的程序将打印

ERROR. Invalid input.

Thaks

解决方法

从fgets开始:

char buffer[256];
printf("What do you want to calculate?n");
fgets(buffer,256,stdin);
if (sscanf(buffer,"%lf %1[-+/*] %lf",&b) != 3)
    printf("Error. Invalid input.n");
// .. rest of the code

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读