5.4:说面下列例子的含义,如果存在问题,试着修改它。

(a) while (string::iterator iter !=s.end()) { /*.....*/}

(b) while (bool status =find(word) ) {  /*...*/ }

    if(!status) { /*.....*/ }

Ans:a)语句的含义是判断迭代器是否指向尾元素的下一个位置,如果不是,则执行循环体内容。但是存在问题,由于一开始就使用了迭代器,并没有进行初始化,编译器会报错。

修改后的程序:

        string::iterator iter=s.begin();

        while ( iter !=s.end()) { /*.....*/}

     b)语句的含义是通过find函数寻找word这个值,如果找到,返回一个bool类型status,其值为true,然后执行while的循环体;若没有找到返回false,跳出当前while循环,然后通过If语句判断,为真执行if的语句块。但是存在问题,在控制结构中定义的变量,其作用域在当前的控制结构中,若要在其他控制结构中使用,需要在外部定义变量。

修改后的程序:

        bool  status;

        while (bool status =find(word) ) {  /*...*/ }

        if(!status) { /*.....*/ }

 posted on 2018-08-10 14:17  linlh  阅读(162)  评论(0编辑  收藏  举报