5.18:说面下列循环的含义并改正其中的错误。

(a)do

    int v1 , v2;

    cout<<" Please enter two numbers to sum: ";

    if(cin>>v1>>v2)

      cout<<" Sum is : "<<v1+v2<<endl;

    while(cin);

(b)do {

    //...

   } while(int ival = get_response())

(c)do {

     int ival = get_response();

   } while (ival);

Ans:a)该程序的含义是定义两个变量,然后输入两个变量的值求其和,最后判断输入流当中是否有值,若有则继续,否则退出循环。C++规定do while语句在do之后如果有多条语句,需要将其使用花括号括起来形成一条复合语句(块),否则编译器会报错。

修改之后:

  do {

    int v1 , v2;

    cout<<" Please enter two numbers to sum: ";

    if(cin>>v1>>v2)

      cout<<" Sum is : "<<v1+v2<<endl;

    } while(cin);

   b)该程序的含义是,执行循环体中的内容,然后判断变量ival的值是否为0,若不为0,跳出循环;但是C++语言规定不能在do while语句的条件部分定义变量。

修改之后:

    int ival;

    do {

      //...

     } while(ival = get_response())

    c)该程序的含义与(b)一样,只不过值的获取是在循环体中。但是该程序定义的变量ival在循环体中定义,其作用域只在循环体当中,不能拿来作为while的条件。

修改之后:

    int ival;

    do {

         ival = get_response();

     } while (ival);

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