練習5.18
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);
練習5.18