Problem : 模拟简单计算器

Problem : 模拟简单计算器

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 4325  Solved: 1524

Description

程序模拟简单运算器的工作:输入一个算式(没有空格),遇到‘=’号说明输入结束,输出结果。假设计算器只能进行加、减、乘、除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。例如,输入“1+2*10-10/2"后结果为10。

Input

输入一个以等号结束的四则运算式(不含括号)

Output

输出计算结果

Sample Input

1+2*10-10/2=
1+3*5/2-7=

Sample Output

10
3

HINT


可以说我开始做题目是想复杂了。想到应该是一串打入,但是一串打入需要字符串数组,那么涉及字符串中变数字,atoi函数(#include <stdlib.h>)可以将字符变整形【记一下吧没准期末用到】,但是是一整个字符串,碰到非数字或者‘/0’停止,所以也很难实现。然后搜了一下,发现其实scanf 以及字符输入可以同一行,最后一个回车分别读进去就可以了。


在写代码的过程中,出现了问题(问题代码):

#include<stdio.h>
#include<string.h>
int main(void)
{
    int sum,a,b;
    char c;
    while(scanf("%d",&a)!=EOF)
    {
       sum=a;
       while(scanf("%c",c)!=EOF)         // 这组代码是没有输出的,个人猜测是两个scanf连着的问题。虽然一个是int一个是char。

 


       {
            scanf("%d",&b);
            if(c=='+')
            sum=sum+b;
            else if(c=='-')
            sum=sum-b;
            else if(c=='*')
            sum=sum*b;   
            else if(c=='/')
            sum=sum/b;
            else if(c=='=')
         break;        
         }
         printf("%d\n",sum);    
    }
    return 0;
}
 


修改的话换一种输入字符,gets可以,getchar对单个也可以,反正这题是单个。


AC代码:

#include<stdio.h>
#include<string.h>
int main(void)
{
    int sum,a,b;
    char c;
    while(scanf("%d",&a)!=EOF)
    {
       sum=a;
       while((c=getchar())!='=')
       {
            scanf("%d",&b);
            if(c=='+')
            sum=sum+b;
            else if(c=='-')
            sum=sum-b;
            else if(c=='*')
            sum=sum*b;
            else if(c=='/')
            sum=sum/b;
         }
         printf("%d\n",sum);    
    }
    return 0;
}


期末加油!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值