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 )可以将字符变整形【记一下吧没准期末用到】,但是是一整个字符串,碰到非数字或者‘/0’停止,所以也很难实现。然后搜了一下,发现其实scanf 以及字符输入可以同一行,最后一个回车分别读进去就可以了。


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

#include
#include
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
#include
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;
}


期末加油!

你可能感兴趣的:(作业题)