练习7-5

作者: Hy_Slin | 来源:发表于2018-02-11 14:07 被阅读0次

对于这个练习虽然只是之前的改进版本,但是有很多地方都需要仔细想一下.

首先那个static的数组声明,通过static的声明,变量的内容是永久保存的,也就是说就算退出函数变量的值依然不变.并且他也有对其他函数隐藏的作用.

然后是将lastc数组的值赋值给变量c.书上也说了可以用直接用赋值表达式.所以没别的用意.但是有一点需要说明,就是不能保证是第一次调用getop函数,如果之前调用过那么lastc会保存最后读取的字符.所以这里通过lastc对变量c赋值是有必要的,如果是第一次调用当然只是将那个空白符给c了.

然后清空这个应该是算是缓冲区的lastc(因为已经将内容给c了).

然后判断c是不是空格或者制表符.(当然只是判断单个字符)并且赋值给数组s.
然后调用sacnf函数读取输入判断是不是到了文件末尾或者出错.
然后再次通过while判断c,直到遇到非空白符后.停止循环..
书上说scanf遇到EOF并不会改变变量c的内容.应该是c还是遇到EOF之前的那个字符的意思.所以后面又填了一个c = EOF.(应该是这样.)

然后暂时将数组s封闭.

如果这个字符不是数字或者小数点.
那么将这个字符返回到调用函数那里,不做收集.

程序走到这里证明之前的判断式不是数字或小数点为假,那么表明这里不是数字就是小数点,所以用先执行一次的do.while循环就可以.

变量i被初始化为0,所以之后的++i就是下标1,会把之前的那个空字符'\0'覆盖.

如果是数字(这个判断式依据的是保存在s[0]中的字符,因为在前面判断不是空白符之后就没有再读取过.).

继续用scanf函数读取字符并将结果保存在变量rc中.
然后保存在数组s中之后判断该字符是不是数字.
如果不是则终止循环.

判断导致终止循环的这个字符是不是小数点.如果是,执行循环体.
继续读取.

如果不是小数点,则将数组s中的这个字符覆盖.

然后判断是否读取到末尾.
如果没到末尾.将导致终止循环的那个字符保存在lastc中以备下次调用时继续使用.

相关文章

  • 练习7-5

    对于这个练习虽然只是之前的改进版本,但是有很多地方都需要仔细想一下. 首先那个static的数组声明,通过stat...

  • [082]python第七章習題(2)

    題目7-5 題目7-8

  • 万思乐学V-learn小西妈双语工程1704期128号Lucas

    ?音频 ORT(7-5)The Willow Pattern Plot ?视频 Movie《Despicable ...

  • 7-5

    70.8kg晨跑十公里,出现这两天最低值,一小时十分钟。 早饭:一个饼(外酥里嫩的手抓饼),一杯腰果奶。 今天午饭...

  • 7-5

    目前这市场不适合短线,只能等机会预埋,做左侧交易

  • 7-5

    不应该和妈妈吵架的,还说了一些很伤人的话。 即使生病也并不意味着获得了好逸恶劳,伤害他人的特权。 要好好地,努力地生活。

  • 7-5

    生活总是很美好,小伙伴也都很厉害,每个人都有不一样的长处,学习到不一样的地方汇合起来,那就牛逼哄哄了。所以在这过程...

  • 7-5

    感觉今天很好,再接再厉

  • 【MAC 上学习 C++】Day 63-3. 7-5 表格输出

    7-5 表格输出 (5 分) 1. 题目摘自 https://pintia.cn/problem-sets/14/...

  • 100000570 - 《算法笔记》2.6小节——C/C++快速

    100000570 - 《算法笔记》2.6小节——C/C++快速入门->函数 问题 A: 习题7-5 字符串逆序存...

网友评论

      本文标题:练习7-5

      本文链接:https://www.haomeiwen.com/subject/gozzrxtx.html