• Openjudge-NOI题库-简单算术表达式求值


    题目描述 Description

    两位正整数的简单算术运算(只考虑整数运算),算术运算为:

    +,加法运算;
    -,减法运算;
    *,乘法运算;
    /,整除运算;
    %,取余运算。

    算术表达式的格式为(运算符前后可能有空格):
    运算数 运算符 运算数

    请输出相应的结果。
    输入输出格式 Input/output
    输入:
    一行算术表达式。
    输出:
    整型算数运算的结果(结果值不一定为2位数,可能多于2位或少于2位)。
    输入输出样例 Sample input/output
    样例测试点#1
    输入样例:
    32+64
    输出样例:
    96
    思路:可以先用一个字符串存入这个表达式,分别从前往后,从后往前找数字,从前往后遍历这个数组,在后面一个字符不为空格的情况下,变为数字,从后往前遍历这个数组,在前面一个字符不为空格情况下,变为数字,然后再扫描一遍这个数组看看是什么运算符号,最后判断运算符号输出结果即可。
    代码如下:
     1 #include <stdio.h>
     2 #include <string.h>
     3 int main()
     4 {
     5     int n,i;
     6     char a[200];
     7     int f=0,l=0;
     8     gets(a);
     9     for(i=0;i<strlen(a);i++)//首个两位数 
    10     {
    11         if(a[i]>='0'&&a[i]<='9')//如果是数字 
    12         {
    13             if(a[i+1]>='0'&&a[i+1]<='9')//如果后面那个也是数字 
    14             {
    15                 f=(f+a[i]-48)*10;//变为数字往前进一位 
    16             }
    17             else//否则是空格什么的直接存为数字 
    18             {
    19                 f=f+a[i]-48;
    20                 break;
    21             }
    22         }
    23     } 
    24     for(i=strlen(a);i>0;i--)//第二个两位数 
    25     {
    26         if(a[i]>='0'&&a[i]<='9')//如果是数字
    27         {
    28             if(a[i-1]>='0'&&a[i-1]<='9')//如果前面那个也是数字 
    29             {
    30                 l=l+a[i]-48;
    31             }
    32             else//否则是空格什么的直接存为数字 
    33             {
    34                 l=l+(a[i]-48)*10;//变为数字往前进一位 
    35                 break;
    36             }                                             /*  35+14  */
    37         } 
    38     }
    39     for(i=0;i<strlen(a);i++)
    40     {
    41         if(a[i]=='+') printf("%d
    ",f+l);
    42         else if(a[i]=='-') printf("%d
    ",f-l);
    43         else if(a[i]=='*') printf("%d
    ",f*l);
    44         else if(a[i]=='/') printf("%d
    ",f/l);
    45         else if(a[i]=='%') printf("%d
    ",f%l);
    46     } 
    47     return 0;
    48 }
  • 相关阅读:
    蛋糕多少钱?
    【FJOI2015】金币换位问题
    撞车
    【BZOJ 1097】旅游景点atr
    codeforces 434D
    codeforces 480D
    bzoj网络流
    bzoj2039
    bzoj1927
    bzoj1070
  • 原文地址:https://www.cnblogs.com/geek-007/p/5659620.html
Copyright © 2020-2023  润新知