| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1676 人关注过本帖
标题:这种小东西怎么写?
只看楼主 加入收藏
低调低调
Rank: 3Rank: 3
来 自:四川省成都市
等 级:论坛游侠
威 望:1
帖 子:66
专家分:103
注 册:2016-6-23
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
这种小东西怎么写?
大家好,我是一个刚接触语言的菜鸟,现在在写一个用终端跑的计算器,但是只能写出一个一级计算用的计算器,程序代码如下:
#include <stdio.h>
int main(int argc, char const *argv[])
{
   
    int x,y;
    char z;
    printf("请输入需要计算的一级算术:\n");
    scanf ("%d %c %d",&x ,&z, &y);
    if (z == '+'  )
    {
        int a = x + y;
        printf("您计算的结果为:%d\n", a);
    }else if (z == '-')
    {
        int _a = x - y;
        printf("您计算的结果为:%d\n", _a);
    }else if (z == '*')
    {
        int a2 = x * y;
        printf("您计算的结果为:%d\n", a2);
    }else if (z == '/')
    {
        float _a2 = x / (float)y;
        printf("您计算的结果为:%.4f\n", _a2);

    }else
    {
        printf("请您输入常规的算术一级运算:\n");
    }

    return 0;
}

现在想学习写二级甚至多级运算,就像100+100*3+200/4这样的算术运算,虽然知道怎么写,但是在执行的时候没办法考虑到运算符的优先级,只能依次计算,现在想求助各位前辈,问问怎么写这个程序。望请各位前辈指点!
搜索更多相关主题的帖子: 计算器 include 
2016-06-24 11:25
time1609
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:59
专家分:118
注 册:2016-5-10
收藏
得分:3 
要不先把全部输入作为字符串,然后对字符串进行操作?
2016-06-24 11:30
低调低调
Rank: 3Rank: 3
来 自:四川省成都市
等 级:论坛游侠
威 望:1
帖 子:66
专家分:103
注 册:2016-6-23
收藏
得分:0 
回复 2楼 time1609
用数组的形式进行操作吗?好像还是一样的
2016-06-24 12:24
格格不入fl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:56
专家分:192
注 册:2016-3-23
收藏
得分:3 
程序代码:
#include <stdio.h>
#include<string.h>
#include<math.h>

 void main()

 {
     
     int n,i,f,g=0,k=0,p=0,o=0,z=0;float b[100],jg;
     char a[100],c[100];
     gets(a);
     n=strlen(a);
     for(i=0;i<n;i++)
     {  if(a[i]<=47)
        {
        c[z++]=a[i];
        f=i-1;
        f=f-g;
        g=i+1;
        while(f>-1)
        {
        jg+=(a[i-(++o)]-48)*pow(10,p++);
        f--;
        }
        b[k]=jg;
        k++;
        jg=0;
        p=0;
        o=0;
        }
        
        else if(i==n-1)
        {
                
        f=i-g;
    
        while(f>-1)
        {
        jg+=(a[i-(o++)]-48)*pow(10,p++);
        f--;
        }
        b[k]=jg;
        }
     }
     jg=0;
     o=k;
     c[z]='\0';
     
     
     for(i=0;i<z;i++)
    {
      if(c[i]=='*')
     {
      b[i+1]=b[i]*b[i+1];
      b[i]=0;
     }
     else if(c[i]=='/')
     {
      b[i+1]=b[i]/b[i+1];
      b[i]=0;
     }
  }
  
      for(i=0;i<z;i++)
      { if(b[0]==0){
          while(b[i]==0)
          i++;
      }
          else if(b[i]==0)c[i]=c[i-1];
          
          if(c[i]=='-')
          {
          b[i+1]=b[i]-b[i+1];
          b[i]=0;
          }
      }
      
      for(i=0;i<=z;i++)
      jg+=b[i];
      
      printf("%f",jg);
    

 }


[此贴子已经被作者于2016-6-24 23:45编辑过]

2016-06-24 12:33
低调低调
Rank: 3Rank: 3
来 自:四川省成都市
等 级:论坛游侠
威 望:1
帖 子:66
专家分:103
注 册:2016-6-23
收藏
得分:0 
回复 5楼 格格不入fl
好的  我先试试  谢谢 前辈
2016-06-24 12:55
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:3 
模拟计算器看似是个小东西,但要做好了并不容易,涉及很多知识,其实楼主应该先把最简单的做出来,能够实现两个数的四则运算,然后再扩展涉及优先级的表达式计算及其他功能,这样循序渐进比较好。
2016-06-24 19:36
快速回复:这种小东西怎么写?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024306 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved