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 }
  • 相关阅读:
    数据库简介
    计算机网络OSI七层协议
    信息论知识点(绪论)
    Wireshark抓取HTTP数据包
    配置FileZilla FTP服务器
    Redis集群搭建的几种方式
    Redis单个分片高可用&哨兵集群
    Redis哈希一致性&对应API操作
    MapReduce实现好友推荐
    window下使用IDEA远程调试伪分布式hadoop集群
  • 原文地址:https://www.cnblogs.com/LeoFeng/p/4316340.html
Copyright © 2011-2022 走看看