getchar()函数 & 表达式求值

1.getchar()函数

  getchar()函数经常应用于c中,由于接收用户输入的内容,getchar 函数是以行为单位存取的( 并不是单个字符 )

  while(   ( c = getchar() )  != EOF        ) {

       putchar( c ) ;

   }

  上边代码运行结果,并不是一个字符字符的输出,而是一次性一起输出.

  在一般情况下 getchar 返回的是一个字符,但是也可能是负值 即 返回 EOF ( 在 windows中 EOF = ctrl + z , 在linux中 EOF = ctrl + d )

2.表达式标识法于求值 ( 只限 二元运算 )

  4 + 2 * 3 - 10 / 5   这是一个表达式

  表达式有三种表示法 ( 前缀 , 中缀 , 后缀 , 正好对应树的先序 , 中序 , 后序 遍历 )

  表达式求值使用的是 后缀式

  设 Exp = s1 + op + s2

  前缀  : op + s1 + s2

  中缀 :s1 + op + s2  丢失括号信息。有问题

  后缀  : s1 + s2 + op

  例如  :Exp = a * b + ( c - d / e ) * f

  前缀  :+* a b  * - c / d e f                //逐层分解 , 最开始 a*b 作为第 1 操作数 s1 , ( c - d / e) * f 作为第 2 操作数

  中缀  : a * b + c - d / e * f                 //逐层分解,但是运算结果会发生改变,丢掉了括号信息

  后缀 :a b * c d e / -  f * +               //逐层分拣,使用这种求值

  结论 : 操作数之间的相对次序不变。

               运算符的相对次序发生改变( 中缀不变 ) 中缀丢失了 括号信息。

               前缀 ,连续出现的两个操作符和它们之前紧靠的运算附组成最小表达式 ( 从左到右扫描 )

               后缀, 先找运算符,和这个运算符之前紧靠的两个操作数组成最小表达式 ( 从左到右扫描 )

  3. 求后缀式 ( 逆波兰式 )

      建立操作符栈和运算符栈 , 运算符栈 , 栈底为 ' # ' , 碰到 ( )  , ( 左括号直接进运算符栈 , ) 等待 左 ( 出栈 )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值