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);