zoukankan      html  css  js  c++  java
  • 前缀表达式

     1 #include<stdio.h>
     2 
     3 //函数声明 
     4 int Add(int x,int y); //
     5 int Subtract(int x,int y); //
     6 int Multiply(int x,int y);//
     7 int Divide(int x,int y); // 8 
     9 //主函数 
    10 int main()
    11 {
    12     int i=0,j=0;
    13     char pre_expr[8]; //用于存放前缀表达式字符串 
    14     int x=0,y=0,result; //x,y: 用于记录运算对象1,2;result:用于记录运算结果 
    15     int space_num=0; //用于在遍历前缀表达式的过程中记录找到的空格的个数 
    16     
    17     //输入前缀表达式字符串 
    18     gets(pre_expr);
    19     
    20     //获得运算对象x和y 
    21     while(pre_expr[++i]!=0) //遍历前缀表达式 
    22     {
    23         if(pre_expr[i]==' ') //找到空格 
    24         {
    25 
    26             ++space_num; //记录当前找到的空格的个数 
    27             if(space_num==1) //如果当前找到的空格的个数等于1 
    28             {
    29                 j=i++; //j指向当前找到的空格;i指向该空格后的第一个数字字符 
    30                 while(pre_expr[++j]!=' '); //寻找下一个空格的位置 
    31                 if((j-i)==1) //两空格之间有1个数字字符 
    32                     x+=pre_expr[i]-'0';
    33                 else if((j-i)==2) //两空格之间有2个数字字符 
    34                     x+=(pre_expr[i]-'0')*10+(pre_expr[i+1]-'0');
    35             }
    36             else if(space_num==2) //如果当前找到的空格的个数等于2 
    37             {
    38                 j=i++; //j指向当前找到的空格;i指向该空格后的第一个数字字符 
    39                 while(pre_expr[++j]!=0); //寻找下一个空格的位置 
    40                 if((j-i)==1) //两空格之间有1个数字字符 
    41                     y+=pre_expr[i]-'0';
    42                 else if((j-i)==2) //两空格之间有2个数字字符 
    43                     y+=(pre_expr[i]-'0')*10+(pre_expr[i+1]-'0');
    44             }
    45         }
    46     }
    47     
    48     //根据运算符对运算对象做相应运算 
    49     if(pre_expr[0]=='+')
    50         result=Add(x,y);
    51     else if(pre_expr[0]=='-')
    52         result=Subtract(x,y);
    53     else if(pre_expr[0]=='*')
    54         result=Multiply(x,y);
    55     else if(pre_expr[0]=='/')
    56         result=Divide(x,y);
    57     
    58     //输出运算结果 
    59     printf("%d\n",result);
    60     
    61     return 0;
    62 }
    63 
    64 //
    65 int Add(int x,int y)
    66 {
    67     return x+y;
    68 }
    69 
    70 //
    71 int Subtract(int x,int y)
    72 {
    73     return x-y;
    74 }
    75 
    76 //
    77 int Multiply(int x,int y)
    78 {
    79     return x*y;
    80 }
    81 
    82 //
    83 int Divide(int x,int y)
    84 {
    85     return x/y;
    86 }
  • 相关阅读:
    1022. 从根到叶的二进制数之和
    剑指 Offer 54. 二叉搜索树的第k大节点
    枚举--百练2811--熄灯问题
    UVA 572 BFS 图论入门
    百练1088 DP+DFS 迷宫问题
    poj 1661 动态规划 拯救老鼠
    入坑动态规划!POJ 1458字符串最大公共子序列
    文件后缀批处理
    奇妙的算法--UVA 679(二叉树的编号)
    栈_uva514
  • 原文地址:https://www.cnblogs.com/LeoFeng/p/4316340.html
Copyright © 2011-2022 走看看