⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 习题4.1].txt

📁 c++ primer 答案(第4版) 自己整理的 只有1-5章
💻 TXT
📖 第 1 页 / 共 5 页
字号:
<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:5.6pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题3.2 </p>

</div>

<p class=XT>什么是默认构造函数?</p>

<p class=aff4>【解答】</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式,就会使用默认构造函数。</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>如果用户定义的类中没有显式定义任何构造函数,编译器就会自动为该类生成默认构造函数,称为合成的默认构造函数(synthesized default constructor)。</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'>习题3.3 </p>

</div>

<p class=XT>列举出三种初始化string对象的方法。</p>

<p class=aff4>【解答】</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>(1) 不带初始化式,使用默认构造函数初始化string对象。</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>(2) 使用一个已存在的string对象作为初始化式,将新创建的string对象初始化为已存在对象的副本。</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>(3) 使用字符串字面值作为初始化式,将新创建的string对象初始化为字符串字面值的副本。</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'>习题3.4 </p>

</div>

<p class=XT>s和s2的值分别是什么?</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>string s;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>int main() {</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>string s2;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>}</p>



<p class=aff4>【解答】</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>s和s2的值均为空字符串。</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'>习题3.5 </p>

</div>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>编写程序实现从标准输入每次读入一行文本。然后改写程序,每次读入一个单词。</p>

<p class=aff4>【解答】</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>//从标准输入每次读入一行文本</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>#include &lt;iostream&gt;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>#include &lt;string&gt;</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>using namespace std;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>int main()</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>{</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; string line;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; // 一次读入一行,直至遇见文件结束符</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; while (getline(cin, line))</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout
&lt;&lt; line &lt;&lt; endl; &nbsp;&nbsp;&nbsp;// 输出相应行以进行验证</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; return 0;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>}</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'>//从标准输入每次读入一个单词</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>#include &lt;iostream&gt;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>#include &lt;string&gt;</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>using namespace std;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>int main()</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>{</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; string word;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; // 一次读入一个单词,直至遇见文件结束符</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; while (cin &gt;&gt; word)</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout
&lt;&lt; word &lt;&lt; endl; // 输出相应单词以进行验证</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; return 0;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>}</p>



<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>注意,一般而言,应该尽量避免使用using指示而使用using声明(参见17.2.4节),因为如果应用程序中使用了多个库,使用using指示引入这些库中定义的名字空间,容易导致名字冲突。但本书中的程序都只使用了标准库,没有使用其他库。使用using指示引入名字空间std中定义的所有名字不会发生名字冲突。因此为了使得代码更为简洁以节省篇幅,本书的许多代码中都使用了using指示using namespace std;来引入名字空间std。另外,本题中并未要求输出,加入输出是为了更清楚地表示读入的结果。本书后面部分有些地方与此类似处理,不再赘述。</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'>习题3.6 </p>

</div>

<p class=XT>解释string类型的输入操作符和getline函数分别如何处理空白字符。</p>

<p class=aff4>【解答】</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>string类型的输入操作符对空白字符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直至再次遇到空白字符,读取终止(该空白字符仍留在输入流中)。</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>getline函数对空白字符的处理:不忽略行开头的空白字符,读取字符直至遇到换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在string对象中)。</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'>习题3.7 </p>

</div>

<p class=XT>编一个程序读入两个string对象,测试它们是否相等。若不相等,则指出两个中哪个较大。接着,改写程序测试它们的长度是否相等,若不相等,则指出两个中哪个较长。</p>

<p class=aff4>【解答】</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>测试两个string对象是否相等的程序:</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>#include &lt;iostream&gt;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>#include &lt;string&gt;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>using namespace std;</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>int main()</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>{</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; string s1, s2;</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; // 读入两个string对象</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; cout &lt;&lt; &quot;Enter two
strings:&quot; &lt;&lt; endl;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; cin &gt;&gt; s1 &gt;&gt; s2;</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; // 测试两个string对象是否相等</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; if (s1 == s2)</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout
&lt;&lt; &quot;They are equal.&quot; &lt;&lt; endl;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; else if (s1 &gt; s2)</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout
&lt;&lt; &quot;\&quot;&quot; &lt;&lt; s1 &lt;&lt; &quot;\&quot; is bigger
than&quot;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt;
&quot; \&quot;&quot; &lt;&lt; s2 &lt;&lt; &quot;\&quot;&quot; &lt;&lt; endl;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; else</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout
&lt;&lt; &quot;\&quot;&quot; &lt;&lt; s2 &lt;&lt; &quot;\&quot; is bigger
than&quot;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;&lt;
&quot; \&quot;&quot; &lt;&lt; s1 &lt;&lt; &quot;\&quot;&quot; &lt;&lt; endl;</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; return 0;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>}</p>



<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>测试两个string对象的长度是否相等的程序:</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -