📄 习题5.1.html
字号:
<p class=XT>计算下列表达式的值,并指出哪些结果值依赖于机器?</p>
<p class=MsoEndnoteText style='line-height:9.0pt;layout-grid-mode:both;
punctuation-trim:none;text-autospace:none'>-30 * 3 + 21 / 5</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>-30 + 3 * 21 / 5</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'> 30 / 3 * 21 % 5</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>-30 / 3 * 21 % 4</p>
<p class=aff4>【解答】</p>
<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>各表达式的值分别为-86、-18、0、-2。其中,最后一个表达式的结果值依赖于机器,因为该表达式中除操作只有一个操作数为负数。</p>
<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>
<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题5.3 </p>
</div>
<p class=XT>编写一个表达式判断一个int型数值是偶数还是奇数。</p>
<p class=aff4>【解答】</p>
<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>如下表达式可以判断一个int型数值(假设为ival)是偶数还是奇数:</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>ival % 2 == 0</p>
<p class=MsoNormal align=left style='text-align:left;text-indent:0cm;
text-autospace:none'> 若ival是偶数,则该表达式的值为真(true),否则为假(false)。</p>
<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>
<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题5.4 </p>
</div>
<p class=XT>定义术语“溢出”的含义,并给出导致溢出的三个表达式。</p>
<p class=aff4>【解答】</p>
<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>溢出:表达式的求值结果超出了其类型的表示范围。</p>
<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>如下表达式会导致溢出(假设int类型为16位):</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>1000 * 1000 </p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>32766 + 5 </p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>3276 * 20</p>
<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>在这些表达式中,各操作数均为int类型,因此这些表达式的类型也是int,但它们的计算结果均超出了16位int型的表示范围(-32768~32767),导致溢出。</p>
<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>
<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题5.5 </p>
</div>
<p class=XT>解释逻辑与操作符、逻辑或操作符以及相等操作符的操作数在什么时候计算。</p>
<p class=aff4>【解答】</p>
<p class=MsoNormal style='text-autospace:none'>逻辑与、逻辑或操作符采用称为“短路求值”(short-circuit
evaluation)的求值策略,即先计算左操作数,再计算右操作数,且只有当仅靠左操作数的值无法确定该逻辑运算的结果时,才会计算右操作数。</p>
<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>相等操作符的左右操作数均需进行计算。</p>
<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>
<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题5.6 </p>
</div>
<p class=XT>解释下列while循环条件的行为:</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>char *cp = "Hello World" ;</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>while ( cp && *cp )</p>
<p class=aff4>【解答】</p>
<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>该while循环的条件为:当指针cp为非空指针并且cp所指向的字符不为空字符null('\0')时执行循环体。即该循环可以对字符串"Hello World"中的字符进行逐个处理。</p>
<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>
<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题5.7 </p>
</div>
<p class=XT>编写while循环条件从标准输入设备读入整型(int)数据,当读入值为42时循环结束。</p>
<p class=aff4>【解答】</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>int val;</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>cin >> val;</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>while (val != 42)</p>
<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>或者,while循环条件也可以写成</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>while (cin >> ival && ival != 42)</p>
<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>
<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题5.8 </p>
</div>
<p class=XT>编写表达式判断4个值a、b、c和d是否满足a大于b、b大于c而且c大于d的条件。</p>
<p class=aff4>【解答】</p>
<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>表达式如下:</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>a > b && b > c && c > d</p>
<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>
<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm'>习题5.9 </p>
</div>
<p class=XT>假设有下面两个定义:</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>unsigned long ul1 =3, ul2 = 7;</p>
<p class=XT>下列表达式的结果是什么?</p>
<p class=MsoNormal align=left style='text-align:left;layout-grid-mode:char;
punctuation-trim:none;text-autospace:none'>(a)
ul1 & ul2 (b) ul1 && ul2</p>
<p class=MsoNormal align=left style='text-align:left;layout-grid-mode:char;
punctuation-trim:none;text-autospace:none'>(c)
ul1 | ul2 (d) ul1 <sub>||</sub> ul2</p>
<p class=aff4>【解答】</p>
<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>各表达式的结果分别为3、true、7、true。</p>
<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>
<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题5.10 </p>
</div>
<p class=XT>重写bitset表达式:使用下标操作符对测验结果进行置位(置1)和复位(置0)。</p>
<p class=aff4>【解答】</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>bitset<30> bitset_quiz1;</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>bitset_quiz1[27] = 1;</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>bitset_quiz1[27] = 0;</p>
<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>
<p class=aff2 style='margin-top:2.2pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题5.11 </p>
</div>
<p class=XT>请问每次赋值操作完成后,i和d的值分别是多少?</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>int i; double d;</p>
<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>d = i = 3.5;</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -