|
9 | 9 | <link href="../../" rel="prev"/>
|
10 | 10 | <link href="../../topic/pointers/" rel="next"/>
|
11 | 11 | <link href="../../../graph/ckc.png" rel="icon"/>
|
12 |
| -<meta content="mkdocs-1.5.3, mkdocs-material-9.5.0" name="generator"/> |
| 12 | +<meta content="mkdocs-1.5.3, mkdocs-material-9.5.1" name="generator"/> |
13 | 13 | <title>2023-2024 - 浙江大学竺可桢学院辅学计划站点</title>
|
14 | 14 | <link href="../../../assets/stylesheets/main.45e1311d.min.css" rel="stylesheet"/>
|
15 | 15 | <link href="../../../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
|
|
420 | 420 | <nav aria-label="December" class="md-nav">
|
421 | 421 | <ul class="md-nav__list">
|
422 | 422 | <li class="md-nav__item">
|
423 |
| -<a class="md-nav__link" href="#7-the-differance-between-strlen-and-sizeof"> |
| 423 | +<a class="md-nav__link" href="#8-j-lost"> |
424 | 424 | <span class="md-ellipsis">
|
425 |
| - 「7」 The differance between strlen and sizeof. |
| 425 | + 「8」 J lost |
| 426 | + </span> |
| 427 | +</a> |
| 428 | +</li> |
| 429 | +<li class="md-nav__item"> |
| 430 | +<a class="md-nav__link" href="#7-the-difference-between-strlen-and-sizeof"> |
| 431 | +<span class="md-ellipsis"> |
| 432 | + 「7」 The difference between strlen and sizeof. |
426 | 433 | </span>
|
427 | 434 | </a>
|
428 | 435 | </li>
|
|
809 | 816 | <nav aria-label="December" class="md-nav">
|
810 | 817 | <ul class="md-nav__list">
|
811 | 818 | <li class="md-nav__item">
|
812 |
| -<a class="md-nav__link" href="#7-the-differance-between-strlen-and-sizeof"> |
| 819 | +<a class="md-nav__link" href="#8-j-lost"> |
813 | 820 | <span class="md-ellipsis">
|
814 |
| - 「7」 The differance between strlen and sizeof. |
| 821 | + 「8」 J lost |
| 822 | + </span> |
| 823 | +</a> |
| 824 | +</li> |
| 825 | +<li class="md-nav__item"> |
| 826 | +<a class="md-nav__link" href="#7-the-difference-between-strlen-and-sizeof"> |
| 827 | +<span class="md-ellipsis"> |
| 828 | + 「7」 The difference between strlen and sizeof. |
815 | 829 | </span>
|
816 | 830 | </a>
|
817 | 831 | </li>
|
@@ -1049,7 +1063,67 @@ <h1 id="2023-2024">2023-2024<a class="headerlink" href="#2023-2024" title="Perma
|
1049 | 1063 | </style>
|
1050 | 1064 | <p>为了让同学们适应期末考试,每日一题的题面都将使用英文描述。</p>
|
1051 | 1065 | <h2 id="december">December<a class="headerlink" href="#december" title="Permanent link">¶</a></h2>
|
1052 |
| -<h3 id="7-the-differance-between-strlen-and-sizeof">「7」 The differance between <code>strlen</code> and <code>sizeof</code>.<a class="headerlink" href="#7-the-differance-between-strlen-and-sizeof" title="Permanent link">¶</a></h3> |
| 1066 | +<h3 id="8-j-lost">「8」 J lost<a class="headerlink" href="#8-j-lost" title="Permanent link">¶</a></h3> |
| 1067 | +<p>Given the following program:</p> |
| 1068 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 1069 | +<span class="normal"> 2</span> |
| 1070 | +<span class="normal"> 3</span> |
| 1071 | +<span class="normal"> 4</span> |
| 1072 | +<span class="normal"> 5</span> |
| 1073 | +<span class="normal"> 6</span> |
| 1074 | +<span class="normal"> 7</span> |
| 1075 | +<span class="normal"> 8</span> |
| 1076 | +<span class="normal"> 9</span> |
| 1077 | +<span class="normal">10</span> |
| 1078 | +<span class="normal">11</span> |
| 1079 | +<span class="normal">12</span> |
| 1080 | +<span class="normal">13</span> |
| 1081 | +<span class="normal">14</span> |
| 1082 | +<span class="normal">15</span> |
| 1083 | +<span class="normal">16</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kt">void</span><span class="w"> </span><span class="nf">xqc</span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="n">c</span><span class="p">[],</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="p">);</span> |
| 1084 | + |
| 1085 | +<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 1086 | +<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">c</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"I am a Man of Fortune"</span><span class="p">;</span> |
| 1087 | +<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">d</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"and I must seek my Fortune"</span><span class="p">;</span> |
| 1088 | + |
| 1089 | +<span class="hll"><span class="w"> </span><span class="n">xqc</span><span class="p">(</span><span class="n">c</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="o">~</span><span class="mi">1694</span><span class="p">);</span> |
| 1090 | +</span><span class="w"> </span><span class="n">xqc</span><span class="p">(</span><span class="n">d</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="o">~</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">-65</span><span class="p">);</span> |
| 1091 | +<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%s, %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">c</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">);</span> |
| 1092 | +<span class="p">}</span> |
| 1093 | + |
| 1094 | +<span class="kt">void</span><span class="w"> </span><span class="nf">xqc</span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="n">c</span><span class="p">[],</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 1095 | +<span class="hll"><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> |
| 1096 | +</span><span class="w"> </span><span class="n">c</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">' '</span><span class="p">;</span> |
| 1097 | +<span class="w"> </span><span class="n">c</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="sc">'I'</span><span class="p">;</span> |
| 1098 | +<span class="p">}</span> |
| 1099 | +</code></pre></div></td></tr></table></div> |
| 1100 | +<p>Which of the following is correct?</p> |
| 1101 | +<p>A. This program fails to compile, because you cannot assign to an array in line 13.</p> |
| 1102 | +<p>B. Because of the call-by-value, function <code>xqc</code> cannot modify the character arrays in function <code>main</code>.</p> |
| 1103 | +<p>C. Change <code>1694</code> in line 7 to <code>1994</code>, and the result of the program is the same.</p> |
| 1104 | +<p>D. This program outputs <code>I am a Man of Fortune, and J must seek my Fortune</code>.</p> |
| 1105 | +<!-- prettier-ignore-start --> |
| 1106 | +<details class="note"> |
| 1107 | +<summary>Answer</summary> |
| 1108 | +<p>C.</p> |
| 1109 | +<p>A: Inside function <code>xqc</code>, <code>c</code> is a pointer type <code>char *</code> rather than an array type, because when an array type is used in a function parameter list, it actually is the corresponding pointer type. Therefore, the assignment in line 13 is valid, and it means "to move the pointer <code>c</code> one position backward".</p> |
| 1110 | +<p>B: The function <code>xqc</code> can modify the character arrays in function <code>main</code>, because it takes the address of the character arrays as parameters. The function <code>xqc</code> can modify the contents of the character arrays through the pointers.</p> |
| 1111 | +<p>C: The <code>~</code> operator is the bitwise NOT operator. The <code>~1694</code> is equivalent to <code>-1695</code>. The <code>~3</code> is equivalent to <code>-4</code>. Therefore, the calls to function <code>xqc</code> are equivalent to:</p> |
| 1112 | +<div class="highlight"><pre><span></span><code><span class="n">xqc</span><span class="p">(</span><span class="n">c</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">-1695</span><span class="p">);</span> |
| 1113 | +<span class="n">xqc</span><span class="p">(</span><span class="n">d</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">-4</span><span class="p">,</span><span class="w"> </span><span class="mi">-65</span><span class="p">);</span> |
| 1114 | +</code></pre></div> |
| 1115 | +<p>And <code>i & 1</code> gets the last bit of <code>i</code>. Both <code>-1695</code> and <code>-65</code> are odd numbers, so <code>i & 1</code> is <code>1</code>, and the character <code>1 + 'I'</code>, which is <code>'J'</code>, is assigned. Changing <code>1694</code> to <code>1994</code> does not change the result of the program, because <code>~1994</code> is <code>-1995</code>, and <code>-1995</code> is also an odd number.</p> |
| 1116 | +<p>D: This program outputs <code> Jam a Man of Fortune, and J must seek my Fortune</code>.</p> |
| 1117 | +<div class="admonition tip"> |
| 1118 | +<p class="admonition-title">Tip</p> |
| 1119 | +<p>You don't need to calculate the exact value of <code>~1694</code>. All you need to know is that the last bit of <code>1694</code> is 0 (since it is an even number), and the bitwise NOT operator will reverse that last bit. Therefore, <code>~1694</code> is an odd number, and <code>i & 1</code> is <code>1</code>. Ditto for <code>~1994</code>.</p> |
| 1120 | +</div> |
| 1121 | +</details> |
| 1122 | +<!-- prettier-ignore-end --> |
| 1123 | +<blockquote> |
| 1124 | +<p>供题人:李英琦</p> |
| 1125 | +</blockquote> |
| 1126 | +<h3 id="7-the-difference-between-strlen-and-sizeof">「7」 The difference between <code>strlen</code> and <code>sizeof</code>.<a class="headerlink" href="#7-the-difference-between-strlen-and-sizeof" title="Permanent link">¶</a></h3> |
1053 | 1127 | <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
|
1054 | 1128 | <span class="normal"> 2</span>
|
1055 | 1129 | <span class="normal"> 3</span>
|
@@ -2265,7 +2339,7 @@ <h3 id="16-overflow">「16」 Overflow<a class="headerlink" href="#16-overflow"
|
2265 | 2339 | <span class="md-icon" title="Last update">
|
2266 | 2340 | <svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1-2.1-2M12.5 7v5.2l4 2.4-1 1L11 13V7h1.5M11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2v1.8Z"></path></svg>
|
2267 | 2341 | </span>
|
2268 |
| -<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2023</span> |
| 2342 | +<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 8, 2023</span> |
2269 | 2343 | </span>
|
2270 | 2344 | </aside>
|
2271 | 2345 | </article>
|
|
0 commit comments