这道关于计算器C语言题我思路哪里错了,如何修正?为什么算出来不对

 我来答
紫薇参星
科技发烧友

2019-03-12 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3450万
展开全部

你的无优先级计算器主要是没有考虑对第一个数和最后一个数的处理

我帮你改完了,你看看吧

#include<stdio.h>

#include<string.h>

int main()

{

 int i,n=0,f[41];

 char a[41],c;

 double d=0;

 gets(a);

 for(i=0;i<strlen(a);i++)

 {

  if('0'<=a[i]&&a[i]<='9')

  {

   f[n]=f[n]*10+(int)(a[i]-'0');

  }else{

   

   if(d==0){

    d=f[n];

    c=a[i];

   }else{

    switch(c)

    {

     case '+':d=d+f[n];break;

     case '-':d=d-f[n];break;

     case '*':d=d*f[n];break;

     case '/':d=d/f[n];break;

    }

    c=a[i];

   }

   n++;

  }

 }

 switch(c)

 {

  case '+':d=d+f[n];break;

  case '-':d=d-f[n];break;

  case '*':d=d*f[n];break;

  case '/':d=d/f[n];break;

 }

 printf("%.2f\n",d);

 return 0;

}

富港检测技术(东莞)有限公司_
2024-06-06 广告
ISTA3L是一个基于研究、数据驱动的测试协议,它模拟了由零售公司完成的产品订单被直接运送给消费者时所经历的危险,它允许用户评估包装产品的能力,以承受运输和处理包装产品时所经历的供应链危险,从接收到任何电子商务零售商履行操作,直到最终消费者... 点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
帐号已注销
2019-03-11
知道答主
回答量:10
采纳率:0%
帮助的人:1.9万
展开全部
for循环下面的else处理有问题,else这边取下面的一个熟悉的时候没有做i➕➕的处理,导致for下面的if逻辑对这个数字又做了一次处理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式