2.26 自测练习答案
2.1 a)顺序、选择和重复。b)if/else。c)计数器控制或确定。d)标记(记号、标志或哑元)。
2.2 x = X + 1;
x += 1;
++X;
x++;
2.3 a) z= x++ + y;
b) if ( count > 10 )
cout << "Count is greater than 10" << endl;
c) total -= --x;
d) q %= divisor;
q = q % divisor;
2.4 a) int sum, x;
b) x = 1;
c) sum = 0;
d) sum += x;或sum = sum + x;
e) cout << "The sum is:" << sum << endl;
2.5 如下所示:
1 // Calculate the sum of the integers from 1 to 10
2 #include <iostream.h>
3
4 int main()
5 {
6 int sum,x;
7 x= 1;
8 sum = 0;
9 while(x <= 10) {
10 sum += x;
11 ++x;
12 }
13 cout << "The sum is:" << sum << endl;
14 return 0;
15}
2.6 a) product = 25, x = 6;
b) quotient = 0, x = 6;
2.7 a) cin >> x;
b) cin >> y;
e) i = 1;
d) power = 1;
e) power *= x; 或 power = power * x;
f) i++;
g) if (i <= y)
h) cout << power << endl;
2.8 如下所示:
1 // raise x to the y power
2 #include <iostream.h>
3 int main()
4 {
5 int x, y, i, power;
6
7 i= 1;
8 power = 1
9 cin >> x;
lO cin >> y;
11
12 while( i <=y ) {
13 power *= x ;
14 ++i;
15 }
16
17 cout << powe << endl;
18 return O;
19 }
2.9 a)不正确:while循环缺右花括号。
纠正:在++C;语句后面加上右花括号。
b)不正确:用流插入而不是流读取运算符。
纠正:将<<变为>>。
c)不正确:else后面的分号造成逻辑错误,第二个输出语句总是会执行。
纠正:将else后面的分号删除。
2.10 while结构中变量x的值永远不变。因此如果循环测试条件(z>=0)为true,则会生成无限循环。要防止生成无限循环,必须递减z,最终达到小于0。
2.11 a)不正确。default是可选的,如果不需要默认操作,则不需要default。
b)不正确。break语句用于退出switch结构。如果defalut为最后一个case,则不需要break语句。
c)不正确。使用&&运算符的两个关系表达式都为true时,整个表达式才能为true。
d)正确。
2.12 a) sum = 0
for ( count = 1; count <= 99; count += 2 )
sum += count;
b) cout << setiosflags(ios::fixed | ios::showpoint | ios::left)
<< setprecision(1) << setw (15) << 333.546372
<< setprecision(2) << setw (15) << 333.546372
<< setprecision(3) << setw (15) << 333.546372
<< endl;
输出如下:
333.5 333.55 333.546
c) cout << setiosflags(ios::fixed | ios::showpoint)
<< setprecision(2) << setw (10) << pow(2.5,3)
<< endl;
输出如下:
15.63
d) x = 1;
while (x <= 20) {
cout << x;
if (x % 5 == 0)
cout << endl;
else
cout << '\t';
x++
}
e) for (x = 1; x <= 20; x++) {
cout << x;
if (x % 5 == O)
cout << endl;
else
cout << '\t';
}
或
for (x = 1; x <= 20; x++)
if (x % 5 == O}
cout << x << endl;
else
cout << x << '\t';
2.13 a)不正确:while首部后面的分号会导致无限循环。
纠正:将分号换成"{"或删除";"和"}"。
b)不正确:用浮点数控制for重复结构。
纠正:用整数。并进行适当的计算以取得所要的值。
for(y=l;y!=10;y++)
cout << ( static cast<float>(y) / lO ) << endl;
c)不正确:第一个case的语句中缺少break语句。
纠正:第一个case语句中补上break语句。注意,如果程序员要让case 1语句每次执行时都执行case 2的语句,则这不是错误。
d)不正确:while重复条件中使用不正确的关系运算符。
纠正:用"<="而不用"<",或将10变为11。