﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-我的技术博客-随笔分类-笔试面试</title><link>http://www.cppblog.com/tankzhouqiang/category/16142.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 02 Mar 2011 04:33:14 GMT</lastBuildDate><pubDate>Wed, 02 Mar 2011 04:33:14 GMT</pubDate><ttl>60</ttl><item><title>笔试题（转载）</title><link>http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140969.html</link><dc:creator>周强</dc:creator><author>周强</author><pubDate>Wed, 02 Mar 2011 04:19:00 GMT</pubDate><guid>http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140969.html</guid><wfw:comment>http://www.cppblog.com/tankzhouqiang/comments/140969.html</wfw:comment><comments>http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tankzhouqiang/comments/commentRss/140969.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tankzhouqiang/services/trackbacks/140969.html</trackback:ping><description><![CDATA[<h2>
<font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>			<a  href="http://www.cppblog.com/mzty/archive/2008/02/18/42875.html" id="viewpost1_TitleUrl">笔试题（转）</a>
</font></font></font></font></font></font></font></font></font></font></h2>
<font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>		</font></font></font></font></font></font></font></font></font></font>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><br>一、如何判断一个单链表是有环的？（注意不能用标志位，最多只能用两个额外指针）<br>&nbsp;&nbsp; struct node { char val; node* next;}<br>&nbsp;&nbsp;&nbsp;bool check(const node* head) {} //return&nbsp;false : 无环；true: 有环<br>&nbsp;&nbsp;&nbsp; 一种O（n）的办法就是（搞两个指针，一个每次递增一步，一个每次递增两步，如果有环的话两者必然重合，反之亦然）：<br>&nbsp;&nbsp;&nbsp;&nbsp;bool check(const node* head)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(head==NULL)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;return false;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;node *low=head, *fast=head-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while(fast!=NULL &amp;&amp; fast-&gt;next!=NULL)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; low=low-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fast=fast-&gt;next-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(low==fast) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return false;<br>&nbsp;&nbsp; }</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>&nbsp;二、删除一个单项链表的最中间的元素，要求时间尽可能短（不能使用两次循环）<br>struct link<br>{<br>&nbsp;&nbsp;&nbsp; int data;<br>&nbsp;&nbsp;&nbsp; struct link *next;<br>};<br><font color="#ff0000">void delMiddle(link *head)<br></font>{<br>&nbsp;&nbsp; &nbsp;if(head == NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp; &nbsp;else if(head-&gt;next == NULL)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;delete head;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;return;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp; &nbsp;else<br>&nbsp;&nbsp; &nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;link *low = head;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link *fast = head-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(fast != NULL &amp;&amp; fast-&gt;next != NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;fast = fast-&gt;next-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if(fast == NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low = low-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link *temp = low-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;low-&gt;next = low-&gt;next-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;delete temp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; }<br>}<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;struct link *head,*l;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct link *s;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;head = (link*)malloc(sizeof(link));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; head-&gt;data=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;head-&gt;next = NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l = head;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for(int i=1; i&lt;9; i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = (link*)malloc(sizeof(link));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s-&gt;data = i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s-&gt;next = NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l-&gt;next= s;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;l = l-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(head);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;delMiddle(head);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(head);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>}</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>三、输入n，求一个n*n矩阵，规定矩阵沿45度线递增(威盛)<br><span style="color: #008000;">/**<br>&nbsp;* 得到如下样式的二维数组<br>* zigzag（jpeg编码里取象素数据的排列顺序）<br>*<br>*&nbsp;&nbsp; 0, 1, 5, 6,14,15,27,28,<br>*&nbsp;&nbsp; 2, 4, 7,13,16,26,29,42,<br>*&nbsp;&nbsp; 3, 8,12,17,25,30,41,43,<br>*&nbsp;&nbsp; 9,11,18,24,31,40,44,53,<br>*&nbsp;&nbsp; 10,19,23,32,39,45,52,54,<br>*&nbsp;&nbsp; 20,22,33,38,46,51,55,60,<br>*&nbsp;&nbsp; 21,34,37,47,50,56,59,61,<br>*&nbsp;&nbsp; 35,36,48,49,57,58,62,63<br>&nbsp;*/</span><span style="color: #008000;"><br></span><span style="color: #000000;">void zigzag(int n)<br>{<br>&nbsp;int **a =(int**) malloc(n*sizeof(int *));&nbsp; //分配空间<br>&nbsp;<br>&nbsp;if(NULL == a)<br>&nbsp;&nbsp;return ;<br>&nbsp;int i;<br>&nbsp;for(i = 0; i &lt; n; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((a[i] =(int*) malloc(n * sizeof(int))) == NULL) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(--i&gt;=0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; free(a[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; free(a);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;bool flag = false; //这个标志位用来判断是从45度角生成还是225度角生成<br>&nbsp;int count = 0;<br>&nbsp;for(i=0; i&lt;n; i++)&nbsp; //生成的上半部分的数据<br>&nbsp;{<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;if(flag)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;for(int r = 0; r&lt;=i; r++)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;a[r][i-r] = count;<br>&nbsp;&nbsp;&nbsp;&nbsp;count++;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;flag = false;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;for(int r = i; r&gt;=0; r--)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;a[r][i-r] = count;<br>&nbsp;&nbsp;&nbsp;&nbsp;count++;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;flag = true;<br>&nbsp;&nbsp;}<br>&nbsp;}<br>&nbsp;for(i=n-1; i&gt;=0; i--)&nbsp; //生成的是下半部分的数据<br>&nbsp;{<br>&nbsp;//&nbsp;cout&lt;&lt;i&lt;&lt;endl;<br>&nbsp;&nbsp;if(flag)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;for(int r = 0; r&lt;=i-1; r++)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;int r1 = n-i+r;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //代表当前行<br>&nbsp;&nbsp;&nbsp;&nbsp;int c1 = 2*n-i-1-r1;&nbsp; //代表当前列<br>&nbsp;&nbsp;&nbsp;&nbsp;a[r1][c1] = count;<br>&nbsp;&nbsp;&nbsp;&nbsp;count++;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;flag = false;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;for(int r = i-1; r&gt;=0; r--)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"ddd"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;int r1 = n-i+r;<br>&nbsp;&nbsp;&nbsp;&nbsp;int c1 = 2*n-i-1-r1;<br>&nbsp;//&nbsp;&nbsp;&nbsp;cout&lt;&lt;r1&lt;&lt;","&lt;&lt;c1&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;a[r1][c1] = count;<br>&nbsp;&nbsp;&nbsp;&nbsp;count++;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;flag = true;<br>&nbsp;&nbsp;}<br>&nbsp;}<br>&nbsp;for(int r = 0; r&lt;n; r++)<br>&nbsp;{<br>&nbsp;&nbsp;for(int c=0; c&lt;n; c++)<br>&nbsp;&nbsp;&nbsp;cout&lt;&lt;a[r][c]&lt;&lt;",";<br>&nbsp;&nbsp;cout&lt;&lt;endl;<br>&nbsp;}<br>}<br>int main()<br>{<br>&nbsp;int n;<br>&nbsp;cin&gt;&gt;n;<br>&nbsp;zigzag(n);<br>&nbsp;return 0;<br>}<br>网上还有一个人写了一个比较巧的算法：<br><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>* 得到如下样式的二维数组<br>* zigzag（jpeg编码里取象素数据的排列顺序）<br>*<br>*&nbsp;&nbsp; 0, 1, 5, 6,14,15,27,28,<br>*&nbsp;&nbsp; 2, 4, 7,13,16,26,29,42,<br>*&nbsp;&nbsp; 3, 8,12,17,25,30,41,43,<br>*&nbsp;&nbsp; 9,11,18,24,31,40,44,53,<br>*&nbsp;&nbsp; 10,19,23,32,39,45,52,54,<br>*&nbsp;&nbsp; 20,22,33,38,46,51,55,60,<br>*&nbsp;&nbsp; 21,34,37,47,50,56,59,61,<br>*&nbsp;&nbsp; 35,36,48,49,57,58,62,63<br></span><span style="color: #008000;">*/</span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main()<br>{<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> N;<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> s, i, j;<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> squa;<br>&nbsp;&nbsp;&nbsp; scanf(</span><span style="color: #800000;">"</span><span style="color: #800000;">%d</span><span style="color: #800000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">&amp;</span><span style="color: #000000;">N);<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">/*</span><span style="color: #008000;"> 分配空间 </span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> </span><span style="color: #000000;">**</span><span style="color: #000000;">a </span><span style="color: #000000;">=</span><span style="color: #000000;"> malloc(N </span><span style="color: #000000;">*</span><span style="color: #000000;"> </span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> </span><span style="color: #000000;">*</span><span style="color: #000000;">));<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(a </span><span style="color: #000000;">==</span><span style="color: #000000;"> NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> N; i</span><span style="color: #000000;">++</span><span style="color: #000000;">) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;">((a[i] </span><span style="color: #000000;">=</span><span style="color: #000000;"> malloc(N </span><span style="color: #000000;">*</span><span style="color: #000000;"> </span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">))) </span><span style="color: #000000;">==</span><span style="color: #000000;"> NULL) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #000000;">--</span><span style="color: #000000;">i</span><span style="color: #000000;">&gt;=</span><span style="color: #800080;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; free(a[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; free(a);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">/*</span><span style="color: #008000;"> 数组赋值 </span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp; squa </span><span style="color: #000000;">=</span><span style="color: #000000;"> N</span><span style="color: #000000;">*</span><span style="color: #000000;">N;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> N; i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; j </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> N; j</span><span style="color: #000000;">++</span><span style="color: #000000;">) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s </span><span style="color: #000000;">=</span><span style="color: #000000;"> i </span><span style="color: #000000;">+</span><span style="color: #000000;"> j;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(s </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> N)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff0000">a[i][j] </font></span><font color="#ff0000"><span style="color: #000000;">=</span><span style="color: #000000;"> s</span><span style="color: #000000;">*</span><span style="color: #000000;">(s</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">/</span><span style="color: #800080;">2</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> (((i</span><span style="color: #000000;">+</span><span style="color: #000000;">j)</span><span style="color: #000000;">%</span><span style="color: #800080;">2</span><span style="color: #000000;"> </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">)</span><span style="color: #000000;">?</span></font><span style="color: #000000;"><font color="#ff0000"> i : j);<br></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s </span><span style="color: #000000;">=</span><span style="color: #000000;"> (N</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">-</span><span style="color: #000000;">i) </span><span style="color: #000000;">+</span><span style="color: #000000;"> (N</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">-</span><span style="color: #000000;">j);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff0000">a[i][j] </font></span><font color="#ff0000"><span style="color: #000000;">=</span><span style="color: #000000;"> squa </span><span style="color: #000000;">-</span><span style="color: #000000;"> s</span><span style="color: #000000;">*</span><span style="color: #000000;">(s</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">/</span><span style="color: #800080;">2</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;"> (N </span><span style="color: #000000;">-</span><span style="color: #000000;"> (((i</span><span style="color: #000000;">+</span><span style="color: #000000;">j)</span><span style="color: #000000;">%</span><span style="color: #800080;">2</span><span style="color: #000000;"> </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">)</span><span style="color: #000000;">?</span></font><span style="color: #000000;"><font color="#ff0000"> i : j));<br></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">/*</span><span style="color: #008000;"> 打印输出 </span><span style="color: #008000;">*/</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> N; i</span><span style="color: #000000;">++</span><span style="color: #000000;">) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; j </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> N; j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">%-6d</span><span style="color: #800000;">"</span><span style="color: #000000;">, a[i][j]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">;<br>}<br></span></span></font></font></font></font></font></font></font></font></font></font></p>
<p><span style="color: #000000;"><span style="color: #000000;"><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>四、打印1到1000的整数，不能使用流程控制语句(for,while,goto等)也不能使用递归<br>1.<br>typedef <span style="color: #0000ff;">struct</span><span style="color: #000000;"> _test{<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> a;<br>&nbsp;&nbsp;&nbsp; _test(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">%d\n</span><span style="color: #800000;">"</span><span style="color: #000000;">,_test::a);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp; }Test;<br>&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> Test::a </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;">;<br><br>&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;&nbsp; main()&nbsp;&nbsp; <br>&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; Test tt[</span><span style="color: #800080;">1000</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">;<br>&nbsp; }&nbsp;&nbsp; <br>2.<br>#include &nbsp; &lt;stdio.h&gt; <br>#define &nbsp; B &nbsp; P,P,P,P,P,P,P,P,P,P <br>#define &nbsp; P &nbsp; L,L,L,L,L,L,L,L,L,L <br>#define &nbsp; L &nbsp; I,I,I,I,I,I,I,I,I,I,N <br>#define &nbsp; I &nbsp; printf( "%3d &nbsp; ",i++) <br>#define &nbsp; N &nbsp; printf( "\n ")&nbsp;<br>int&nbsp; main() <br>{ <br>&nbsp; &nbsp; int &nbsp; i &nbsp; = &nbsp; 1; <br>&nbsp; &nbsp; B; <br>} <br>或<br><span style="color: #0000ff;">#define</span><span style="color: #000000;"> A(x) x;x;x;x;x;x;x;x;x;x;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main () <br>{<br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> n </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;">; <br>&nbsp;&nbsp;&nbsp; A(A(A(printf (</span><span style="color: #800000;">"</span><span style="color: #800000;">%d </span><span style="color: #800000;">"</span><span style="color: #000000;">, n</span><span style="color: #000000;">++</span><span style="color: #000000;">))));<br><br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">;<br>}</span><br><br></span></font></font></font></font></font></font></font></font></font></font></span></span><span style="color: #000000;"><span style="color: #000000;"></span></span></p>
<p><span style="color: #000000;"><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>五、struct &nbsp; S &nbsp; { <br>&nbsp; &nbsp; &nbsp; &nbsp; int &nbsp; i; <br>&nbsp; &nbsp; &nbsp; &nbsp; int &nbsp; * &nbsp; p; <br>}; <br>void &nbsp; main() <br>{ <br>&nbsp; &nbsp; &nbsp; &nbsp; S &nbsp; s; <br>&nbsp; &nbsp; &nbsp; &nbsp; int &nbsp; * &nbsp; p &nbsp; = &nbsp; &amp;s.i; <br>&nbsp; &nbsp; &nbsp; &nbsp; p[0] &nbsp; = &nbsp; 4; <br>&nbsp; &nbsp; &nbsp; &nbsp; p[1] &nbsp; = &nbsp; 3; <br>&nbsp; &nbsp; &nbsp; &nbsp; s.p &nbsp; = &nbsp; p; <br>&nbsp; &nbsp; &nbsp; &nbsp; s.p[1] &nbsp; = &nbsp; 1; <br>&nbsp; &nbsp; &nbsp; &nbsp; s.p[0] &nbsp; = &nbsp; 2; <br>} <br>问程序会在哪一行死掉。 （microsoft）<br>解： S&nbsp;&nbsp; s; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;&nbsp; </span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;&nbsp; p&nbsp;&nbsp; </span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp; </span><span style="color: #000000;">&amp;</span><span style="color: #000000;">s.i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">s.i的地址存储在p里</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p[</span><span style="color: #800080;">0</span><span style="color: #000000;">]&nbsp;&nbsp; </span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp; </span><span style="color: #800080;">4</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">修改了s.i</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p[</span><span style="color: #800080;">1</span><span style="color: #000000;">]&nbsp;&nbsp; </span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp; </span><span style="color: #800080;">3</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">修改了s.p</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;s.p&nbsp;&nbsp; </span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp; p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">s.p指向s.i</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;s.p[</span><span style="color: #800080;">1</span><span style="color: #000000;">]&nbsp;&nbsp; </span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp; </span><span style="color: #800080;">1</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">修改s.p本身</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.p[</span><span style="color: #800080;">0</span><span style="color: #000000;">]&nbsp;&nbsp; </span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp; </span><span style="color: #800080;">2</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">s.p指向的是0x00000001,尝试向这里写,出错<br><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; s.p[0] &nbsp; &nbsp; &nbsp; = &nbsp; &nbsp; &nbsp; 2; &nbsp; 时出错 <br>&nbsp;&nbsp;&nbsp;&nbsp; 因为s.p存的是s.i的地址,s.p[1]为s.p,当s.p[1]=1时,s.p此时存放的是1了,而不是地址s.i,故在s.p[0] &nbsp; = &nbsp; 2时出错. <br>此时相当于s.p=ox00000001;地址ox0000001 &nbsp; = &nbsp; 2;当然就出错了 <br><br>如果语句s.p[0] &nbsp; =2 &nbsp; 先于s.p[1]=1则程序就不会出错.此时语句相当于s.i=2;s.p=1; </font><br></span></font></font></font></font></font></font></font></font></font></font></span></p>
<span style="color: #000000;"><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>六、题目描述： <br>1.&nbsp;&nbsp; int &nbsp; swap(int &nbsp; *x,int &nbsp; *y) <br>{ <br>&nbsp; &nbsp; if(x==NULL &nbsp; &#166; &#166; &nbsp; y==NULL) <br>&nbsp; &nbsp; &nbsp; &nbsp; return &nbsp; -1; <br>&nbsp; &nbsp; *x &nbsp; += &nbsp; *y; <br>&nbsp; &nbsp; *y &nbsp; = &nbsp; *x- &nbsp; *y; <br>&nbsp; &nbsp; *x &nbsp; -= &nbsp; *y; <br>&nbsp; &nbsp; &nbsp; return &nbsp; 1; <br>} <br>请改错，溢出已经考虑，不是错误 <br>2. <br>void &nbsp; foo(int &nbsp; *x, &nbsp; int &nbsp; *y) <br>{ <br>&nbsp; &nbsp; *x &nbsp; += &nbsp; *y; <br>&nbsp; &nbsp; *x &nbsp; += &nbsp; *y; <br>} <br>void &nbsp; fun(int &nbsp; *x, &nbsp; int &nbsp; *y) <br>{ &nbsp; <br>&nbsp; &nbsp; *x &nbsp; += &nbsp; 2 &nbsp; * &nbsp; (*y); <br>&nbsp; } <br>问两个函数是否等价，能否互换 <br>解答<font color="#ff0000">：第一题的函数是交换。但假如考虑x, &nbsp; y都是指向同一个变量,结果是这个变量的值为0. <br>第二题的两个函数是有区别的,也考虑x,y是指向同一个变量.这样第一个函数的结果是这个变量的4倍.但第二个函数的结果是变量的3倍</font>.</font></font></font></font></font></font></font></font></font></font></span><img src ="http://www.cppblog.com/tankzhouqiang/aggbug/140969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tankzhouqiang/" target="_blank">周强</a> 2011-03-02 12:19 <a href="http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>笔试题2（转载）</title><link>http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140970.html</link><dc:creator>周强</dc:creator><author>周强</author><pubDate>Wed, 02 Mar 2011 04:19:00 GMT</pubDate><guid>http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140970.html</guid><wfw:comment>http://www.cppblog.com/tankzhouqiang/comments/140970.html</wfw:comment><comments>http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tankzhouqiang/comments/commentRss/140970.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tankzhouqiang/services/trackbacks/140970.html</trackback:ping><description><![CDATA[<h2>
<font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>			<a  href="http://www.cppblog.com/mzty/archive/2008/02/18/42876.html" id="viewpost1_TitleUrl">笔试题二（转）</a>
</font></font></font></font></font></font></font></font></font></font></h2>
<font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>		</font></font></font></font></font></font></font></font></font></font>
<div class="postText"><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>给定九个数，例如：1，3，3，5，6，7，8，8，9计算出这九个数的排列的种数。需要考虑重复情况，如果给定9个1，则只有一种结果。 <br>限制：不能使用stl库 <br>要求：完成函数&nbsp;unsigned&nbsp;int&nbsp;foo(unsigned&nbsp;int&nbsp;*arr); <br>输入算法代码，并给出算法复杂度分析。
</font></font></font></font></font></font></font></font></font></font>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>分析：&nbsp;</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>#include &lt;cstdlib&gt;<br>#include &lt;iostream&gt;</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>using namespace std;<br>unsigned int foo(unsigned int *arr)<br>{<br>&nbsp;&nbsp;&nbsp; unsigned int p[] ={1,2,6,24,120,720,5040,40320,362880};<br>&nbsp;&nbsp;&nbsp; unsigned int i,j,c,s=p[8];//first the number is p<sup>9<sub>9</sub></sup><br>&nbsp;&nbsp;&nbsp; for(i = 0; i &lt; 7; i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j = i+1; j &lt; 8; j++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(arr[i]&gt;arr[j])&nbsp; //swap two number<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arr[i]^=arr[j];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arr[j]^=arr[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arr[i]^=arr[j];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; i = 0;<br>&nbsp;&nbsp;&nbsp; c = 0;<br>&nbsp;&nbsp;&nbsp; while(i&lt;8)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j = i+1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(arr[i]==arr[j])//compute the number of the repetition&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c++;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j++;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s/=p[c];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i=j;<br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; return s;<br>}<br>&nbsp;&nbsp; <br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; unsigned int a[]={1,3,3,5,6,7,8,8,9};<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"The number of permutation is: "&lt;&lt;foo(a)&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; system("pause");<br>&nbsp;&nbsp;&nbsp; return 0;<br>}&nbsp;&nbsp;&nbsp;&nbsp; <br>还可以改进排序那部分。</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>转一个经典的题目：</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>给一个天平,问如何用3次把这个小球找出来 <br>并且求出这个小球是比其他的轻还是重 <br>将12个球分别编号为a1,a2,a3.......a10,a11,a12. <br>第一步：将12球分开3拨，每拨4个，a1~a4第一拨，记为b1，&nbsp;a5~a8第2拨，记为b2，其余第3拨，记为b3； <br>第二步：将b1和b2放到天平两盘上，记左盘为c1，右为c2；这时候分两中情况： <br><br>1.c1和c2平衡，此时可以确定从a1到a8都是常球；然后把c2拿空，并从c1上拿下a4，从a9到a12四球里随便取三球，假设为a9到a11，放到c2上。此时c1上是a1到a3，c2上是a9到a11。从这里又分三种情况： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A：天平平衡，很简单，说明没有放上去的a12就是异球，而到此步一共称了两次，所以将a12随便跟11个常球再称一次，也就是第三次，马上就可以确定a12是重还是轻； <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B：
若c1上升，则这次称说明异球为a9到a11三球中的一个，而且是比常球重。取下c1所有的球，并将a8放到c1上，将a9取下，比较a8和a11（第三
次称），如果平衡则说明从c2上取下的a9是偏重异球，如果不平衡，则偏向哪盘则哪盘里放的就是偏重异球； <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C：若c1下降，说明a9到a11里有一个是偏轻异球。次种情况和B类似，所以接下来的步骤照搬B就是； <br><br>2.c1和c2不平衡，这时候又分两种情况，c1上升和c1下降，但是不管哪种情况都能说明a9到a12是常球。这步是解题的关键。也是这个题最妙的地方。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A：c1上升，此时不能判断异球在哪盘也不能判断是轻还是重。取下c1中的a2到a4三球放一边，将c2中的a5和a6放到c1上，然后将常球a9放到c2上。至此，c1上是a1，a5和a6，c2上是a7，a8和a9。此时又分三中情况： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1）
如果平衡，说明天平上所有的球都是常球，异球在从c1上取下a2到a4中。而且可以断定异球轻重。因为a5到a8都是常球，而第2次称的时候c1是上升
的，所以a2到a4里必然有一个轻球。那么第三次称就用来从a2到a4中找到轻球。这很简单，随便拿两球放到c1和c2，平衡则剩余的为要找球，不平衡则
哪边低则哪个为要找球； <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2）c1仍然保持上升，则说明要么a1是要找的轻球，要么a7和a8两球中有一个是重球（这步懂吧？
好好想想，很简单的。因为a9是常球，而取下的a2到a4肯定也是常球，还可以推出换盘放置的a5和a6也是常球。所以要么a1轻，要么a7或a8重）。
至此，还剩一次称的机会。只需把a7和a8放上两盘，平衡则说明a1是要找的偏轻异球，如果不平衡，则哪边高说明哪个是偏重异球； <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3）如果换球称第2次后天平平衡打破，并且c1降低了，这说明异球肯定在换过来的a5和a6两求中，并且异球偏重，否则天平要么平衡要么保持c1上升。确定要找球是偏重之后，将a5和a6放到两盘上称第3次根据哪边高可以判定a5和a6哪个是重球； <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B：
第1次称后c1是下降的，此时可以将c1看成c2，其实以后的步骤都同A，所以就不必要再重复叙述了。至此，不管情况如何，用且只用三次就能称出12个外
观手感一模一样的小球中有质量不同于其他11球的偏常的球。而且在称的过程中可以判定其是偏轻还是偏重。 <br><br>3.U2 合唱团在17
分钟内得赶到演唱会场，途中必需跨过一座桥，四个人从桥的同一端出发，你得帮助他们到达另一端，天色很暗，而他们只有一只手电筒。一次同时最多可以有两人
一起过桥，而过桥的时候必须持有手电筒，所以就得有人把手电筒带来带去，来回桥两端。手电筒是不能用丢的方式来传递的。四个人的步行速度各不同，若两人同
行则以较慢者的速度为准。Bono 需花1 分钟过桥，Edge 需花2 分钟过桥，Adam需花 5 分钟过桥，Larry 需花10
分钟过桥。他们要如何在17
分钟内过桥呢？（有个同济的学生写文章说他当时在微软面试时就是碰到了这道题，最短只能做出在19分钟内过桥，微软的人对他讲这样的结果已经是不错的
了！）&nbsp; <br>&nbsp; A点到 B 点 <br>&nbsp;1 和2 过去 2 分钟 2&nbsp; <br>&nbsp;2 过来 4 分钟 2+2=4 <br>10和 5过去 14 分钟 4+10=14&nbsp;&nbsp; <br>1 过来 15 分钟 14+1=15&nbsp;&nbsp; <br>1 和2 过去 17 分钟 15+2=17 </font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>第一组&nbsp;&nbsp;<br>　　1.烧一根不均匀的绳，从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子，问如何用烧绳的方法来计时一个小时十五分钟呢?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans:三根绳，<font color="#ff0000">开始的时候，第一根点燃两端，第二根点燃一端，第三根不点</font>。<font color="#ff0000">第一根绳烧完(30分钟)后，点燃第二根绳的另一端</font>，第二根只要15分钟就可以烧完了，第二根绳烧完(45分钟)后，点燃第三根绳子两端，第三根绳烧完(1小时15分)后，计时完成<br><br>　　2.你有一桶果冻，其中有黄色、绿色、红色三种，闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?<br><br>　　3.如果你有无穷多的水，一个3公升的提捅，一个5公升的提捅，两只提捅形状上下都不均匀，问你如何才能准确称出4公升的水?<br><br>　　4.一个岔路口分别通向诚实国和说谎国。来了两个人，已知一个是诚实国的，另一个是说谎国的。诚实国永远说实话，说谎国永远说谎话。现在你要去说谎国，但不知道应该走哪条路，需要问这两个人。请问应该怎么问?<br><br>　　5.12个球一个天平，现知道只有一个和其它的重量不同，问怎样称才能用三次就找到那个球。13个呢?(注意此题并未说明那个球的重量是轻是重，所以需要仔细考虑)<br><br>　　6.在9个点上画10条直线，要求每条直线上至少有三个点?<br><br>　　7.在一天的24小时之中，时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?<br><br>　　8.怎么样种植4棵树木，使其中任意两棵树的距离相等?<br><br>　　第二组&nbsp;&nbsp;<br><br>　　1.为什么下水道的盖子是圆的?<br><br>　　2.中国有多少辆汽车?<br><br>　　3.将汽车钥匙插入车门，向哪个方向旋转就可以打开车锁?<br><br>　　4.如果你要去掉中国的34个省(含自治区、直辖市和港澳特区及台湾省)中的任何一个，你会去掉哪一个，为什么?<br><br>　　5.多少个加油站才能满足中国的所有汽车?<br><br>　　6.想象你站在镜子前，请问，为什么镜子中的影象可以颠倒左右，却不能颠倒上下?<br><br>　　7.为什么在任何旅馆里，你打开热水，热水都会瞬间倾泻而出?<br><br>　　8.你怎样将Excel的用法解释给你的奶奶听?<br><br>　　9.你怎样重新改进和设计一个ATM银行自动取款机?<br><br>　　10.如果你不得不重新学习一种新的计算机语言，你打算怎样着手来开始?<br><br>　　11.如果你的生涯规划中打算在5年内受到奖励，那获取该项奖励的动机是什么?观众是谁?<br><br>　　12.如果微软告诉你，我们打算投资五百万美元来启动你的投资计划，你将开始什么样商业计划?为什么?<br><br>　　13.如果你能够将全世界的电脑厂商集合在一个办公室里，然后告诉他们将被强迫做一件事，那件事将是什么?　<br><br>&nbsp;<br><br>第三组&nbsp;&nbsp;<br><br>　　1.你让工人为你工作7天，回报是一根金条，这个金条平分成相连的7段，你必须在每天结束的时候给他们一段金条。如果只允许你两次把金条弄断，你如何给你的工人付费?<br><br>
2.有一辆火车以每小时15公里的速度离开北京直奔广州，同时另一辆火车每小时20公里的速度从广州开往北京。如果有一只鸟，以30公里每小时的速度和
两辆火车同时启动，从北京出发，碰到另一辆车后就向相反的方向返回去飞，就这样依次在两辆火车之间来回地飞，直到两辆火车相遇。请问，这只鸟共飞行了多长
的距离?<br><br>　　3.你有四个装药丸的罐子，每个药丸都有一定的重量，被污染的药丸是没被污染的药丸的重量+1。只称量一次，如何判断哪个罐子的药被污染了?<br><br>　　4.门外三个开关分别对应室内三盏灯，线路良好，在门外控制开关时候不能看到室内灯的情况，现在只允许进门一次，确定开关和灯的对应关系?<br><br>　　5.人民币为什么只有1、2、5、10的面值?<br><br>　　6.你有两个罐子以及50个红色弹球和50个蓝色弹球，随机选出一个罐子，&nbsp;随机选出一个弹球放入罐子，怎么给出红色弹球最大的选中机会?在你的计划里，得到红球的几率是多少?<br><br>　　7.给你两颗6面色子，可以在它们各个面上刻上0-9任意一个数字，要求能够用它们拼出任意一年中的日期数值<br><br>　　第四组&nbsp;<br><br>　　第一题&nbsp;.&nbsp;五个海盗抢到了100颗宝石，每一颗都一样大小和价值连城。他们决定这么分：<br><br>　　抽签决定自己的号码(1、2、3、4、5)<br><br>　　首先，由1号提出分配方案，然后大家表决，当且仅当超过半数的人同意时，按照他的方案<br><br>　　进行分配，否则将被扔进大海喂鲨鱼<br><br>　　如果1号死后，再由2号提出分配方案，然后剩下的4人进行表决，当且仅当超过半数的人同<br><br>　　意时，按照他的方案进行分配，否则将被扔入大海喂鲨鱼<br><br>　　依此类推<br><br>　　条件：每个海盗都是很聪明的人，都能很理智地做出判断，从而做出选择。<br><br>　　问题：第一个海盗提出怎样的分配方案才能使自己的收益最大化?<br><br>　　第二题&nbsp;.&nbsp;一道关于飞机加油的问题，已知：<br><br>　　每个飞机只有一个油箱，<br><br>　　飞机之间可以相互加油(注意是相互，没有加油机)<br><br>　　一箱油可供一架飞机绕地球飞半圈，<br><br>　　问题：<br><br>　　为使至少一架飞机绕地球一圈回到起飞时的飞机场，至少需要出动几架飞机?(所有飞机从同一机场起飞，而且必须安全返回机场，不允许中途降落，中间没有飞机场)第三题.&nbsp;汽车加油问题&nbsp;&nbsp;<br><br>　　一辆载油500升的汽车从A开往1000公里外的B，已知汽车每公里耗油量为1升，A处有无穷多的油，其他任何地点都没有油，但该车可以在任何地点存放油以备中转，问从A到B最少需要多少油<br><br>　　第四题.&nbsp;掷杯问题<br><br>　　一种杯子，若在第N层被摔破，则在任何比N高的楼层均会破，若在第M层不破，则在任何比M低的楼层均会破，给你两个这样的杯子，让你在100层高的楼层中测试，要求用最少的测试次数找出恰巧会使杯子破碎的楼层。<br><br>　　第五题.&nbsp;推理游戏<br><br>　　教授选出两个从2到9的数，把它们的和告诉学生甲，把它们的积告诉学生乙，让他们轮流猜这两个数<br><br>　　甲说：&#8220;我猜不出&#8221;<br><br>　　乙说：&#8220;我猜不出&#8221;<br><br>　　甲说：&#8220;我猜到了&#8221;<br><br>　　乙说：&#8220;我也猜到了&#8221;<br><br>　　问这两个数是多少<br><br>　　第六题.&nbsp;病狗问题<br><br>
一个住宅区内有100户人家，每户人家养一条狗，每天傍晚大家都在同一个地方遛狗。已知这些狗中有一部分病狗，由于某种原因，狗的主人无法判断自己的狗
是否是病狗，却能够分辨其他的狗是否有病，现在，上级传来通知，要求住户处决这些病狗，并且不允许指认他人的狗是病狗(就是只能判断自己的)，过了7天之
后，所有的病狗都被处决了，问，一共有几只病狗?为什么?<br><br>　　第八题.&nbsp;监狱里有100个房间，每个房间内有一囚犯。一天，监狱长说，你
们狱房外有一电灯，你们在放风时可以控制这个电灯(熄或亮)。每天只能有一个人出来放风，并且防风是随机的。如果在有限时间内，你们中的某人能对我说：
&#8220;我敢保证，现在每个人都已经至少放过一次风了。&#8221;我就放了你们!问囚犯们要采取什么策略才能被监狱长放掉?如果采用了这种策略，大致多久他们可以被释
放?<br><br>&nbsp;<br><br>第五组&nbsp;&nbsp;<br><br>　　1.某手机厂家由于设计失误，有可能造成电池寿命比原来设计的寿命短一半(不是冲放电时间)，解决方案就是免费更换电池或给50元购买该厂家新手机的折换券。请给所有已购买的用户写信告诉解决方案。<br><br>　　2.一高层领导在参观某博物馆时，向博物馆馆员小王要了一块明代的城砖作为纪念，按国家规定，任何人不得将博物馆收藏品变为私有。博物馆馆长需要如何写信给这位领导，将城砖取回。<br><br>　　3.营业员小姐由于工作失误，将2万元的笔记本电脑以1.2万元错卖给李先生，王小姐的经理怎么写信给李先生试图将钱要回来?<br><br>　　4.给你一款新研制的手机，如果你是测试组的组长，你会如何测试?<br><br>　　5.如何为函数int&nbsp;atoi(const&nbsp;char&nbsp;*&nbsp;pstr)编写测试向量?<br><br>　　第六组&nbsp;&nbsp;<br><br>　　1.链表和数组的区别在哪里?<br><br>　　2.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?<br><br>　　3.编写实现数组排序的一种算法。说明为什么你会选择用这样的方法?<br><br>　　4.请编写能直接实现char&nbsp;*&nbsp;strcpy(char&nbsp;*&nbsp;pstrDest,const&nbsp;char&nbsp;*&nbsp;pstrSource)函数功能的代码。<br><br>　　5.编写反转字符串的程序，要求优化速度、优化空间。<br><br>　　6.在链表里如何发现循环链接?<br><br>　　7.给出洗牌的一个算法，并将洗好的牌存储在一个整形数组里。<br><br>　　8.写一个函数，检查字符是否是整数，如果是，返回其整数值。(或者：怎样只用4行代码<br><br>　　9.给出一个函数来输出一个字符串的所有排列。<br><br>　　10.请编写实现void&nbsp;*&nbsp;malloc(int)内存分配函数功能一样的代码。<br><br>　　11.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。<br><br>　　12.怎样编写一个程序，把一个有序整数数组放到二叉树中?<br><br>　　13.怎样从顶部开始逐层打印二叉树结点数据?请编程。<br><br>　　14.怎样把一个链表掉个顺序(也就是反序，注意链表的边界条件并考虑空链表)?&nbsp;--<br><br>　　15.请编写能直接实现int&nbsp;atoi(const&nbsp;char&nbsp;*&nbsp;pstr)函数功能的代码<br><br>-----------------------------------------------------------------------------------<br>第一组题答案：&nbsp;<br><br>　　<br>　　2)根据抽屉原理，4个<br><br>　　3)3升装满;3升-〉5升(全注入);3升装满;3升-〉5升(剩1升);5升倒掉;3升-〉5升(注入1升);3升装满;3升-〉5升;完成(另：可用回溯法编程求解)<br><br>　　4)问其中一人：另外一个人会说哪一条路是通往诚实国的?回答者所指的那条路必然是通往说谎国的。<br><br>　　5)12个球：<br><br>　　第一次：4，4&nbsp;如果平了：<br><br>　　那么剩下的球中取3放左边,取3个好球放右边，称：<br><br>　　如果左边重，那么取两个球称一下，哪个重哪个是次品，平的话第三个重，是次品，轻的话同理<br><br>　　如果平了，那么剩下一个次品，还可根据需要称出次品比正品轻或者重<br><br>　　如果不平：<br><br>　　那么不妨设左边重右边轻，为了便于说明，将左边4颗称为重球，右边4颗称为轻球，剩下4颗称为好球<br><br>　　取重球2颗，轻球2颗放在左侧，右侧放3颗好球和一颗轻球<br><br>　　如果左边重<br><br>　　称那两颗重球，重的一个次品，平的话右边轻球次品<br><br>　　如果右边重<br><br>　　称左边两颗轻球，轻的一个次品<br><br>　　如果平<br><br>　　称剩下两颗重球，重的一个次品，平的话剩下那颗轻球次品<br><br>　　13个球：<br><br>　　第一次：4，4，如果平了<br><br>　　剩5颗球用上面的方法仍旧能找出次品，只是不能知道次品是重是轻<br><br>　　如果不平，同上　<br><br>6)&nbsp;&nbsp;<br><br>　　o&nbsp;o&nbsp;o<br><br>　　o&nbsp;o&nbsp;o<br><br>　　o&nbsp;o&nbsp;o<br><br>　　7)<br><br>　　23次，因为分针要转24圈，时针才能转1圈，而分针和时针重合两次之间的间隔显然&gt;1小时，它们有23次重合机会，每次重合中秒针有一次重合机会，所以是23次<br><br>　　重合时间可以对照手表求出，也可列方程求出<br><br>　　8)<br><br>　　在地球表面种树，做一个地球内接的正四面体，内接点即为所求<br><br>　　第二组&nbsp;无标准答案&nbsp;&nbsp;<br><br>　　第三组&nbsp;<br><br>　　1.&nbsp;分成1,2,4三段，第一天给1，第二天给2取回1，第3天给1，第4天给4取回1、2，第5天给1，第6天给2取回1，第七天给1<br><br>　　2.&nbsp;求出火车相遇时间，鸟速乘以时间就是鸟飞行的距离<br><br>　　3.&nbsp;四个罐子中分别取1,2,3,4颗药丸，称出比正常重多少，即可判断出那个罐子的药被污染<br><br>　　4.&nbsp;三个开关分别：关，开，开10分钟，然后进屋，暗且凉的为开关1控制的灯，亮的为开关2控制的灯，暗且热的为开关3控制的灯<br><br>　　5.&nbsp;因为可以用1，2，5，10组合成任何需要的货币值，日常习惯为10进制<br><br>　　6.&nbsp;题意不理解...*_*<br><br>　　7.&nbsp;012345&nbsp;0126(9)78<br><br>　　第四组&nbsp;都是很难的题目&nbsp;&nbsp;<br><br>　　第一题：97&nbsp;0&nbsp;1&nbsp;2&nbsp;0&nbsp;或者&nbsp;97&nbsp;0&nbsp;1&nbsp;0&nbsp;2&nbsp;(提示：可用逆推法求出)<br><br>　　第二题：3架飞机5架次，飞法：<br><br>
ABC&nbsp;3架同时起飞，1/8处，C给AB加满油，C返航，1/4处，B给A加满油，B返航，A到达1/2处，C从机场往另一方向起飞，3/4处，C同
已经空油箱的A平分剩余油量，同时B从机场起飞，AC到7/8处同B平分剩余油量，刚好3架飞机同时返航。所以是3架飞机5架次。第三题：需要建立数学模
型&nbsp;&nbsp;<br><br>　　(提示，严格证明该模型最优比较麻烦，但确实可证，大胆猜想是解题关键)<br><br>　　题目可归结为求数列&nbsp;an=500/(2n+1)&nbsp;n=0,1,2,3......的和Sn什么时候大于等于1000,解得n&gt;6<br><br>　　当n=6时，S6=977.57<br><br>　　所以第一个中转点离起始位置距离为1000-977.57=22.43公里<br><br>　　所以第一次中转之前共耗油&nbsp;22.43*(2*7+1)=336.50升<br><br>　　此后每次中转耗油500升<br><br>　　所以总耗油量为7*500+336.50=3836.50升<br><br>　　第四题：需要建立数学模型<br><br>　　题目可归结为求自然数列的和S什么时候大于等于100，解得n&gt;13<br><br>　　第一个杯子可能的投掷楼层分别为：14，27，39，50，60，69，77，84，90，95，99，100<br><br>　　第五题：3和4(可严格证明)<br><br>　　设两个数为n1，n2，n1&gt;=n2，甲听到的数为n=n1+n2，乙听到的数为m=n1*n2<br><br>　　证明n1=3，n2=4是唯一解<br><br>　　证明：要证以上命题为真，不妨先证n=7<br><br>　　1)必要性：<br><br>　　i)&nbsp;n&gt;5&nbsp;是显然的，因为n&lt;4不可能，n=4或者n=5甲都不可能回答不知道<br><br>　　ii)&nbsp;n&gt;6&nbsp;因为如果n=6的话，那么甲虽然不知道(不确定2+4还是3+3)但是无论是2，4还是3，3乙都不可能说不知道(m=8或者m=9的话乙说不知道是没有道理的)<br><br>
iii)&nbsp;n&lt;8&nbsp;因为如果n&gt;=8的话，就可以将n分解成&nbsp;n=4+x&nbsp;和&nbsp;n=6+(x-2)，那么m可以是4x也可以是6(x-2)
而4x=6(x-2)的必要条件是x=6即n=10，那样n又可以分解成8+2，所以总之当n&gt;=8时，n至少可以分解成两种不同的合数之和，这样
乙说不知道的时候，甲就没有理由马上说知道。<br><br>　　以上证明了必要性<br><br>　　2)充分性<br><br>　　当n=7时，n可以分解成2+5或3+4<br><br>　　显然2+5不符合题意，舍去，容易判断出3+4符合题意，m=12，证毕<br><br>　　于是得到n=7&nbsp;m=12&nbsp;n1=3&nbsp;n2=4是唯一解。第六题：7只(数学归纳法证明)&nbsp;&nbsp;<br><br>　　1)若只有1只病狗，因为病狗主人看不到有其他病狗，必然会知道自己的狗是病狗(前提是一定存在病狗)，所以他会在第一天把病狗处决。<br><br>　　2)设有k只病狗的话，会在第k天被处决，那么，如果有k+1只，病狗的主人只会看到k只病狗，而第k天没有人处决病狗，病狗主人就会在第k+1天知道自己的狗是病狗，于是病狗在第k+1天被处决<br><br>　　3)由1)2)得，若有n只病狗，必然在第n天被处决<br><br>　　第八题：<br><br>　　约定好一个人作为报告人(可以是第一个放风的人)<br><br>　　规则如下：<br><br>　　1、报告人放风的时候开灯并数开灯次数<br><br>　　2、其他人第一次遇到开着灯放风时，将灯关闭<br><br>　　3、当报告人第100次开灯的时候，去向监狱长报告，要求监狱长放人......<br><br>　　按照概率大约30年后(10000天)他们可以被释放<br><br>　　第五组无标准答案&nbsp;&nbsp;<br><br>　　第六组部分题参考答案：&nbsp;&nbsp;<br><br>　　4.<br><br>char&nbsp;*&nbsp;strcpy(char&nbsp;*&nbsp;pstrDest,const&nbsp;char&nbsp;*&nbsp;pstrSource)<br>{<br>&nbsp;assert((pstrDest!=NULL)&amp;&amp;(pstrSource!=NULL));&nbsp;<br>&nbsp;char&nbsp;*&nbsp;pstr=pstrDest;<br>&nbsp;while((*(pstrDest++)=*(pstrSource++))!='\0');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;pstr;<br>}<br>&nbsp;<br><br><br>　　5.<br><br>char&nbsp;*&nbsp;strrev(char&nbsp;*&nbsp;pstr)<br>{<br>&nbsp;assert(pstr!=NULL);<br>&nbsp;<br>&nbsp;char&nbsp;*&nbsp;p=pstr;<br>&nbsp;char&nbsp;*&nbsp;pret=pstr;<br>&nbsp;while(*(p++)!='\0');<br>&nbsp;p--;<br>&nbsp;char&nbsp;tmp;<br>&nbsp;while(p&gt;pstr)<br>&nbsp;{<br>&nbsp;&nbsp;tmp=*p;<br>&nbsp;&nbsp;*(p--)=*(pstr);<br>&nbsp;&nbsp;*(pstr++)=tmp;&nbsp;&nbsp;<br>&nbsp;}<br>&nbsp;return&nbsp;pret; <br><br>百度笔试题：<br>IP段格式:ip1&nbsp;ip2。之间以空格分开，ip形式为X.X.X.X，数据保存在文件中，文件不超过2k行，无序。现在要求编写算法去掉可重IP，可重有三种形式：包含、交叠、紧靠。 <br><br>例如，文件内容为： <br>10.0.0.0&nbsp;10.0.0.12 <br>10.0.0.5&nbsp;10.0.0.10&nbsp;&nbsp;&nbsp;&nbsp;( &lt;=&nbsp;包含) <br>10.0.0.8&nbsp;10.0.0.<span style="color: #ff0000;">15</span>&nbsp;&nbsp;&nbsp;&nbsp;( &lt;=&nbsp;交叠) <br>10.0.0.<span style="color: #ff00ff;">15</span>&nbsp;10.0.0.24&nbsp;&nbsp;&nbsp;( &lt;=&nbsp;紧靠) <br><br>最后输出为: <br>10.0.0.0&nbsp;10.0.0.24</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>code：<br>/*<br>**这个函数的作用是将文件中的一行对应的两个数据转换成整形的数据<br>**比如把10.0.0.0&nbsp;10.0.0.12 转换后，left=10*2<sup>24,</sup>就是10.0.0.0对应的整数，每个数字对应8位，right=left+12<br>*/<br>void ParseLine( char line[], size_t length, unsigned int &amp;left, unsigned int &amp;right)<br>{<br>&nbsp;&nbsp;&nbsp; size_t i;<br>&nbsp;&nbsp;&nbsp; for( i=0; i&lt;length; i++ )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( line[i]=='.' || line[i]==' ' )//将点变成0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line[i]=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <font style="background-color: #00ffff;"><font style="background-color: #ffff00;">char *p&nbsp;&nbsp; = (char*)&amp;left;</font><br></font>&nbsp;&nbsp;&nbsp; char *num = line;<br>&nbsp;&nbsp;&nbsp; for( i=3; i&lt;4; --i ) //<font color="#ff0000">size是size_t，而size_t是unsigned int，所以i=0再自减后变成了最大的整数，循环就会终止<br></font>&nbsp;&nbsp;&nbsp; {<br>&nbsp;//&nbsp;cout&lt;&lt;i&lt;&lt;",";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *(p+i) = strtol( num, &amp;num&nbsp; ,10 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;cout&lt;&lt;static_cast&lt;int&gt;(*(p+i))&lt;&lt;",";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++num;<br>&nbsp;//&nbsp;cout&lt;&lt;num&lt;&lt;":";<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; p = (char*)&amp;right;<br>&nbsp;&nbsp;&nbsp; for( i=3; i&lt;4; --i )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *(p+i) = strtol( num, &amp;num, 10 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++num;<br>&nbsp;&nbsp;&nbsp; }<br>}</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><br>void UniqueSequence(&nbsp; vector&lt;unsigned int&gt; &amp; uSeq, unsigned int left, unsigned int right )<br>{<br>&nbsp;&nbsp;&nbsp; size_t i, lPos=-1, rPos=-1;<br>&nbsp;&nbsp;&nbsp; for( i=0; i&lt;uSeq.size(); i++ )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( left &lt;= uSeq.at(i)&nbsp; )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lPos = i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; for( ;i&lt;uSeq.size(); i++ )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( right&lt;=uSeq.at(i) )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rPos=i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; if( lPos == -1 )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uSeq.push_back( left );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uSeq.push_back( right );&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp;&nbsp; }</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>&nbsp;&nbsp;&nbsp; if( lPos%2 == 0 )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(&nbsp; uSeq.at(lPos)==left )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uSeq.insert( uSeq.begin()+lPos, left );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;else<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --lPos;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; if( rPos == -1 )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uSeq.erase( uSeq.begin()+(lPos+1), uSeq.end() );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uSeq.push_back(right);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;else if(&nbsp; rPos%2 == 0&nbsp; )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( uSeq.at(rPos)== right )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uSeq.erase( uSeq.begin()+(lPos+1), uSeq.begin()+(rPos+1) );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uSeq.erase( uSeq.begin()+(lPos+1), uSeq.begin()+rPos );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uSeq.insert( uSeq.begin()+rPos, right&nbsp; );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;else<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uSeq.erase( uSeq.begin()+(lPos+1), uSeq.begin()+rPos );<br>&nbsp;&nbsp;&nbsp; }<br>}</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><br>void PrintIP( unsigned int num )<br>{<br>&nbsp;&nbsp;&nbsp; char *p = (char*)&amp;num;<br>&nbsp;&nbsp;&nbsp; for( size_t i=3;i&gt;0; --i)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt; (int)p[i]&lt;&lt;".";<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;(int)p[0];<br>}</font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>#define MAX_BUFFER_LENGTH 100<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; unsigned int left, right;<br>&nbsp;&nbsp;&nbsp; char buffer[MAX_BUFFER_LENGTH];<br>&nbsp;&nbsp;&nbsp; ifstream infile( "test.txt" );<br>&nbsp;&nbsp;&nbsp; if( infile.fail() )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; vector&lt;unsigned int&gt; uSeq;<br>&nbsp;&nbsp;&nbsp; while( infile.getline(buffer, MAX_BUFFER_LENGTH) )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ParseLine(buffer, strlen(buffer), left, right);<br>&nbsp;//&nbsp;cout&lt;&lt;left&lt;&lt;","&lt;&lt;right&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UniqueSequence( uSeq, left, right );<br>&nbsp;&nbsp;for( size_t i=0; i&lt;uSeq.size(); i+=2 )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintIP(uSeq.at(i) );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"&nbsp; ";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintIP(uSeq.at(i+1));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;cout&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; for( size_t i=0; i&lt;uSeq.size(); <font color="#ff0000">i+=2</font> )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintIP(uSeq.at(i) );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"&nbsp; ";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintIP(uSeq.at(i+1));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br><br>/*<strong>long</strong> <strong>strtol(</strong> <strong>const</strong> <strong>char</strong> <strong>*</strong><em>nptr</em><strong>,</strong> <strong>char</strong> <strong>**</strong><em>endptr</em><strong>,</strong> <strong>int</strong> <em>base</em> <strong>),</strong>其中nptr是以NULL结尾字符串，<em>endptr</em>是字符串停止扫描的地方（Pointer to character that stops scan），<strong>strtol</strong> returns the value represented in the string <em>nptr，The <strong>strtol</strong> function converts nptr to a <strong>long</strong>. <strong>strtol</strong>
stops reading the string nptr at the first character it cannot
recognize as part of a number. This may be the terminating null
character, or it may be the first numeric character greater than or
equal to base. <br></em><font style="background-color: #ffcc00;">string = "-10110134932This stopped it";<br>&nbsp; l = strtol( string, &amp;stopstring, 10 );<br>&nbsp; printf( "string = %s", string );<br>&nbsp; printf("&nbsp;&nbsp; strtol = %ld", l );<br>&nbsp; printf("&nbsp;&nbsp; Stopped scan at: %s", stopstring );<br>&nbsp; string = "10110134932";<br>&nbsp; printf( "string = %s\n", string );<br>&nbsp; /* Convert string using base 2, 4, and 8: */<br>&nbsp; for( base = 2; base &lt;= 8; base *= 2 )<br>&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; /* Convert the string: */<br>&nbsp;&nbsp;&nbsp;&nbsp; ul = strtoul( string, &amp;stopstring, base );<br>&nbsp;&nbsp;&nbsp;&nbsp; printf( "&nbsp;&nbsp; strtol = %ld (base %d)\n", ul, base );<br>&nbsp;&nbsp;&nbsp;&nbsp; printf( "&nbsp;&nbsp; Stopped scan at: %s\n", stopstring );<br>&nbsp; }<br>打印的结果是：<br>string = -10110134932This stopped it&nbsp;&nbsp; strtol = -2147483647&nbsp;&nbsp; Stopped scan at: This stopped itstring = 10110134932<br>&nbsp; strtol = 45 (base 2)<br>&nbsp; Stopped scan at: 34932<br>&nbsp; strtol = 4423 (base 4)<br>&nbsp; Stopped scan at: 4932<br>&nbsp; strtol = 2134108 (base 8)<br>&nbsp; Stopped scan at: 932<br>*/</font></font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font style="background-color: #ffffff;">5.如果存在两个变量：a和b，不使用&#8220;if&#8221;、&#8220;?:&#8221;、 &#8220;switch&#8221;和其它的判断语句，找出两个数中的最大值。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 答案：( ( a + b ) + abs( a - b ) ) / 2</font></font></font></font></font></font></font></font></font></font></font></p>
<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>6. 写一个函数找出一个整数数组中，第二大的数 （microsoft）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const int MINNUMBER = -32767 ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int find_sec_max( int data[] , int count)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int maxnumber = data[0] ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sec_max = MINNUMBER ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ( int i = 1 ; i &lt; count ; i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( data[i] &gt; maxnumber )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sec_max = maxnumber ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxnumber = data[i] ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( data[i] &gt; sec_max )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sec_max = data[i] ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return sec_max ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></font></font></font></font></font></font></font></font></font></p>
</div><img src ="http://www.cppblog.com/tankzhouqiang/aggbug/140970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tankzhouqiang/" target="_blank">周强</a> 2011-03-02 12:19 <a href="http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>迅雷面试题（转载）</title><link>http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140968.html</link><dc:creator>周强</dc:creator><author>周强</author><pubDate>Wed, 02 Mar 2011 04:18:00 GMT</pubDate><guid>http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140968.html</guid><wfw:comment>http://www.cppblog.com/tankzhouqiang/comments/140968.html</wfw:comment><comments>http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tankzhouqiang/comments/commentRss/140968.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tankzhouqiang/services/trackbacks/140968.html</trackback:ping><description><![CDATA[<p><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>1.下列程序的输出结果为：(B)<br>#include&lt;iostream.h&gt;<br>void main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char* a[ ] = { "hello", "the", "world"};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char** pa = a;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pa++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;&#8221;*pa&lt;&lt;endl;<br>}<br>A) theworld&nbsp;&nbsp;&nbsp; B) the&nbsp;&nbsp; C) ello&nbsp;&nbsp;&nbsp; D) ellotheworld<br>&nbsp;<br>2. 已知二叉树后序遍历序列是bfegcda，中序遍历序列是badefcg，它的前序遍历序列是：(B)<br>A) abcdefg&nbsp;&nbsp;&nbsp;&nbsp; B) abdcefg&nbsp;&nbsp;&nbsp; C) adbcfeg&nbsp;&nbsp;&nbsp; D) abecdfg<br>&nbsp;<br>3. 栈和队列的共同特点是：(C)<br>A) 都是先进先出&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 都是先进后出<br>C) 只允许在短点处插入和删除元素 D) 没有共同点<br>&nbsp;<br>4. 下面程序的运行结果为：(A)<br>#include &lt;iostream.h&gt;<br>void main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int a, x;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(a = 0, x = 0; a&lt;=1 &amp;&amp; !x++; a++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt; a &lt;&lt; x &lt;&lt;endl;<br>}<br>A) 21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 41<br>&nbsp;<br>5. 下列选项，不正确的是：(B) while后没有分号<br>&nbsp;A) for(int a=1; a&lt;=10; a++);<br>B) int a=1;<br>&nbsp;&nbsp; do<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a++;<br>&nbsp;&nbsp; }while(a&lt;=10)<br>C) int a=1;<br>&nbsp;&nbsp; while(a&lt;=10)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a++;<br>}<br>D) for(int a= 1; a&lt;=10; a++)a++;<br>6. 下面关于数组的初始化正确的是：(B)<br>A) char str[2] = {&#8220;a&#8221;,&#8221;b&#8221;};<br>B) char str[2][3]={&#8220;a&#8221;,&#8221;b&#8221;};<br>C) char str[2][3]={{&#8216;a&#8217;,&#8217;b&#8217;},{&#8216;e&#8217;,&#8217;d&#8217;},{&#8216;e&#8217;,&#8217;f&#8217;}};<br>D) char str[] = {&#8220;a&#8221;, &#8220;b&#8221;};<br>&nbsp; </font></font></font></font></font></font></font></font></font></font></p>
<font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font><font size="3"><font>7. 下列说法正确的是：(B)<br>A) 内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方<br>B) 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方<br>C) 类的内联函数必须在类体内定义<br>D) 类的内联函数必须在类体外通过关键字inline定义<br>&nbsp;<br>8．下面对静态成员的描述中，正确的是：(D)<br>A) 静态数据成员可以在类体内初始化<br>B) 静态数据成员不可以被类的对象调用<br>C) 静态数据成员不能受private控制符的作用<br>D) 静态数据成员可以直接用类名调用<br>&nbsp;<br>9. 下列运算符中，在C++语言中不能重载的是：(C)<br>A) *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) &gt;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) ::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) delete<br>&nbsp;<br>10 下面关于多态性的描述，错误的是：(C)<br>A) C++语言的多态性分为编译时的多态性和运行时的多态性<br>B) 编译时的多态性可通过函数重载实现<br>C) 运行时的多态性可通过模板和虚函数实现 //模板的是编译时多态性，而虚函数是运行时<br>D) 实现运行时多态性的机制称为动态绑定<br>&nbsp;<br>11. 如果进栈序列为e1,e2,e3,e4,e5,则可能的出栈序列是：(D)<br>A) e3,e2,e5,e4,e1<br>B) e2,e3,e5,e4,e1<br>C)&nbsp;&nbsp;&nbsp; e3,e2,e4,e5,e1<br>D) 以上都有可能<br>&nbsp;<br>12 下面关于类和对象的描述中，错误的是：(A)<br>A) 类就是C语言中的结构体类型，对象就是C语言中的结构体变量<br>B) 类和对象之间的关系是抽象和具体的关系<br>C) 对象是类的实例，一个对象必须属于一个已知的类<br>D) 类是具有共同行为的若干对象的统一描述体<br>&nbsp;<br>13.下面关于数组的描述错误的是：（D）<br>A) 在C++语言中数组的名字就是指向该数组第一个元素的指针<br>B) 长度为n的数组，下标的范围是0－n-1<br>C) 数组的大小必须在编译是确定<br>D) 数组只能通过值参数和引用参数两种方式传递给函数<br>注释：<br>在把数组作为参数传递给函数时，有值传递(by value)和地址传递(by reference)两种方式。 <br>&nbsp;&nbsp;&nbsp; 在值传递方式中，要在数组参数的尾部加上一对方括号([])，调用函数时只需将数组的地址(即数组名)传递给函数。 <br>&nbsp;&nbsp;&nbsp; 例如：如果数组x被声明为：int x[10]; <br>&nbsp;&nbsp;&nbsp; 那麽函数被说明为：void byval_func(int[]); <br>&nbsp;&nbsp;&nbsp; 参数int[]告诉编译程序byval_func()函数只有一个参数,即一个由int型值组成的数组。&nbsp;&nbsp;&nbsp;&nbsp; <br>函数调用时只需将数组名传递给函数:byval_func(x);<br>#include &lt;stdio.h&gt; <br>&nbsp;void byval_func(int[]); <br>&nbsp;void main(void); <br>&nbsp;void main(void)<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp; int x[10];<br>&nbsp;&nbsp;&nbsp;&nbsp; int y;<br>&nbsp;&nbsp;&nbsp;&nbsp; for(y=0;y&lt;10;y++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x[y]=y;<br>&nbsp;&nbsp;&nbsp;&nbsp; byval_func(x);&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;} <br>&nbsp;void byal_func(int i[])<br>&nbsp;{ <br>&nbsp;&nbsp;&nbsp;&nbsp; int y;<br>&nbsp;&nbsp;&nbsp;&nbsp; for(y=0;y&lt;10;y++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d\n",i[y]);<br>&nbsp;}<br>在
值传递方式中,数组x将被复制一份,复制所得的数组将被存放在栈中,然后由byval_func()函数接收并打印出来。由於传递给
byval_func()函数的是初始数组的一份拷贝，因此在byval_func()函数内部修改传递过来的数组对初始数组没有任何影响。 <br>&nbsp;&nbsp;&nbsp;
值传递方法的开销是很大的，因为首先它要完整地复制初始数组并将这份拷贝存放到栈中，这将耗费相当可观的运行时间，
因而值传递方法效率较低；其次，初始化数组的拷贝需要占用额外的内存空间（栈中的内存）；最后，编译程序需要专门产生一部分用来复制初始数组的代码，这将
使程序变大。<br>&nbsp;&nbsp;&nbsp; 地址传递方法克服了值传递方法的缺点。在地址传递方法中，传递给函数的是指向初始数组的指针，不用复制数组，因此程序变得简练，也节省了栈中的内存空间。在地址传递过程中,只需在函数原形中将函数的参数说明为指向数组元素数据类型的一个指针。<br>&nbsp;&nbsp;&nbsp; 例如同样定义一个数组x：int x[10];<br>&nbsp;&nbsp;&nbsp; 那麽函数被说明为：int const_funt(const int*);<br>&nbsp;&nbsp;&nbsp; 参数const int*告诉编译程序const_funt()函数只有一个参数,即指向一个int类型常量的指针。<br>&nbsp;&nbsp;&nbsp; 函数调用时只需将数组的地址传递给函数:const_func(x);<br>#include &lt;stdio.h&gt; <br>&nbsp;void const_func(const int*); <br>&nbsp;void main(void); <br>&nbsp;void main(void)<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp; int x[10];<br>&nbsp;&nbsp;&nbsp;&nbsp; int y;<br>&nbsp;&nbsp;&nbsp;&nbsp; for(y=0;y&lt;10;y++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x[y]=y;<br>&nbsp;&nbsp;&nbsp;&nbsp; constl_func(x);&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;} <br>&nbsp;void const_func(const int*i)<br>&nbsp;{ <br>&nbsp;&nbsp;&nbsp;&nbsp; int y;<br>&nbsp;&nbsp;&nbsp;&nbsp; for(y=0;y&lt;10;y++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d\n",*(i+y));<br>&nbsp;}<br>&nbsp;在
值传递方式中,没有复制初始数组并将其拷贝存放在栈中,const_func()函数只接收到指向一个int类型常量的指针,因此在编写程序时要保证传递
给const_func()函数的是指向一个由int类型常量组成的数组的指针。const修饰符的作用是防止意外修改初始数组中的某一个元素。<br>&nbsp;<br>14． 引用标准库时，下面的说法你认为哪个是正确的：（B）<br>A) 语句#include &#8220;stdlib.h&#8221;是正确的，但会影响程序的执行速度<br>B) 语句#include &lt;stdlib.h&gt;是正确的，而去程序执行速度比#include &#8220;stdlib.h&#8221;要快<br>C) 语句#include &lt;stdlib.h&gt;和#include &#8220;stdlib.h&#8221;都是正确的，程序执行速度没有区别<br>D) 语句#include &#8220;stdlib.h&#8221;是错误的<br>注释：include&nbsp;&nbsp; ""是先从本地目录开始寻找，然后去寻找系统路径，而Include&nbsp;&nbsp; &lt;&gt;&nbsp;&nbsp; 相反先从系统目录，后从本地目录，<br>&nbsp;<br>15.设a、b、c、d、m、n均为int型变量，且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式（m=a&gt;b）&amp;&amp;(n=c&gt;d)运算后，n的值为：（C）<br>A) 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 7<br>&nbsp;<br>16．不能作为重载函数的调用的依据是：（C）<br>A) 参数个数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 参数类型<br>C) 函数类型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 函数名称<br>&nbsp;<br>17．下列程序的输出结果为: (D)<br>#include&lt; iostream. h&gt;<br>int func(int n)<br>{<br>　　if〔n&lt;1)return 1;<br>else return n+func(n-1);<br>return 0;<br>}<br>void main()<br>{<br>cout&lt;&lt;func(5)&lt;&lt;endl;<br>}<br>A) 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B)10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C)15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D)16<br>&nbsp;<br>18. 建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为: (A)<br>A)abc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　B)acb<br>C)cab&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D)cba<br>&nbsp;<br>19. 如果友元函数重载一个运算符时，其参数表中没有任何参数则说明该运算符是：（D）<br>A）一元运算符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B）二元运算符<br>C）选项A）和选项B）都可能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D）重载错误<br>解析：C++中用友元函数重载运算符至少有一个参数，重载一目运算符要有一个参数，重载二目运算符要有两个参数。<br>&nbsp;<br>20. 有以下程序段：（D）？<br>#define F(X,Y)&nbsp;&nbsp; (X)--; (Y)++ (X)*(Y);<br>&#8230;<br>int i, a = 3, b = 4;<br>for( i = 0; i&lt;5; i++)&nbsp;&nbsp; F(a,b)<br>printf(&#8220;%d, %d&#8221;, a, b);<br>输出结果是：（）<br>A) 3, 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 3, 5<br>C) -2, 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) -2, 9<br>&nbsp;<br>21. 下列for循环的循环体执行次数为：（A）<br>for(int i(10), j(1); i=j=0; i++, j--)<br>A) 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 无限;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D)以上都不对<br>&nbsp;<br>22. 下面程序的输出结果是（D）<br>char *p1= &#8220;123&#8221;, *p2 = &#8220;ABC&#8221;, str［50］= "xyz";<br>strcpy（str+2,strcat（p1,p2））;<br>cout &lt;&lt; str;<br>A）xyz123ABC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B）z123ABC<br>C）xy123ABC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D）出错<br>&nbsp;<br>23．下面函数的执行结果是输出（B）<br>char str[ ] = &#8220;xunlei&#8221;;<br>char *p = str;<br>int n = 10;<br>printf(&#8220;%d, %d, %d\n&#8221;, sizeof(str), sizeof(p), sizeof(n));<br>A) 4, 4, 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 7, 4, 4<br>C) 6, 4, 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 6, 6, 4<br>&nbsp;<br>33. 有下列程序段：<br>char *p, *q;<br>p = (char*) malloc(sizeof(char) * 20);<br>q = p;<br>scanf(&#8220;%s %s&#8221;, p, q);<br>printf(&#8220;%s %s\n&#8221;, p, q);<br>若从键盘输入：abc def， 则输出结果是（A）<br>A) def def&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) abc def<br>C) abc d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) d d<br>解析：q=p;因此p,q指向的是同一段内存.scanf先是把abc写到p指向的空间,再把def写到q指向的空间,也就是同一段空间,因此abc被def覆盖了.<br>&nbsp;<br>34．现在有以下语句：<br>struct _THUNDER{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int iVersion;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char cTag;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char cAdv;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int iUser;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char cEnd;<br>}Thunder;<br>int sz = sizeof(Thunder);<br>则执行后，变量sz的值将得到（D）<br>A) 11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 16<br>&nbsp;<br>35. 有如下程序段：<br>void GetMemeory(char* p)<br>｛<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p = (char*) malloc (100);<br>｝<br>void test()<br>{<br>char *str=NULL;<br>GetMemory(str);<br>strcpy(str,&#8221;Thunder&#8221;);<br>strcat(str+2, &#8220;Downloader&#8221;);<br>&nbsp;printf(str);<br>}<br>请问运行Test函数结果是：（D）<br>A) Thunder Downloader&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) under Downloader<br>C) Thunderownloader&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 程序崩溃<br>解析：在函数中给指针分配空间，实际上是给指针的临时变量分配空间，函数结束后，这个临时变量也消亡，而str仍然为NULL，没有为其分配空间，此时strcpy()是肯定会出错的。<br>&nbsp;<br>36. 函数调用exec((v1,v2), (v3,v4,v5),v6,v7);中，实参的个数是（A）<br>A) 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;<br>37. p是指向类X的成员m的指针，s是类X的一个对象。现要给m赋值，（C）是正确的。<br>A) s.p = 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) s-&gt;p = 5<br>C) s.*p = 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) *s.p = 5<br>&nbsp;<br>38. 函数fun（char* p） { return p;}的返回值是（B）<br>A)无确切值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 行参p中存放的地址值<br>C) 一个临时存储单元的地址&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 行参p自身的地址值<br>&nbsp;<br>39．a,b均为不等于0的整形变量，以下关系式恒成立的是：（C）<br>A) a*b/a*b == 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) a/b*b/a == 1<br>C) a/b*b + a%b == a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) a/b*b == a<br>&nbsp;<br>40. 设有如下说明：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef struct ST{ long a; int b; char c[2]; } NEW; <br>则下面叙述中正确的是：(C)<br>A）以上的说明形式非法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B）ST是一个结构体类型 <br>C）NEW是一个结构体类型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D）NEW是一个结构体变量<br>&nbsp;<br>41. 下列表达式正确的是：（C）<br>A) 9++&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) （x+y）++&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) c+++c+++c++&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) ++（a-b--）<br>&nbsp;<br>42．在int b[ ][3] = {{1},{3,2},{4,5,6},{0}};中，sizeof(b) = （D）。<br>A) 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 48<br>&nbsp;<br>43．以下程序的输出结果是：(D)<br>#define M(x,y,z) x*y+z<br>main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int a=1, b=2, c=3;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;%d\n&#8221;,M(a+b,b+c,c+a));<br>}<br>A）19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 12<br>&nbsp;<br>44．若有以下定义和语句：<br>int u=010, v= 0x10, w=10;<br>printf(&#8220;%d，%d,%d\n&#8221;,u,v,w);<br>则输出结果是：(A)<br>A)8,16,10&nbsp;&nbsp;&nbsp;&nbsp; B)10,10,10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C)8,8,10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D)8,10,10<br>&nbsp;<br>45. 下面程序段的输出结果是：（B）<br>int a=5, b=4, c=3, d=2;<br>if(a&gt;b&gt;c)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;%d\n&#8221;,d);<br>else if((c-1&gt;=d)==1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;%d\n&#8221;, d+1);<br>else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;%d\n&#8221;, d+1);<br>A) 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 编译错误<br>&nbsp;<br>46．有如下程序段，请问k的值是：（D）<br>enum {a, b=5, c, d=4, e} k; k =c;<br>A) 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B）4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 6<br>&nbsp;<br>47．有如下程序段：<br>int i, n = 0;<br>double x = 1, y1 = 2.1/1.9, y2 = 1.9/2.1;<br>for( i = 1; i&lt;22; i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x = x*y1;<br>while( x!=1.0)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x =x*y2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n++;<br>}<br>printf(&#8220;%d\n&#8221;, n);<br>请问执行结果是：（A）<br>A) 21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C)无限循环&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 程序崩溃<br>&nbsp;<br>48. 用树形结构表示实体之间联系的模型是（C）<br>A) 关系模型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 网状模型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 层次模型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D)以上三个都是<br>&nbsp;<br>49．有如下程序段：<br>char fun(char *);<br>main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *s = &#8220;one&#8221;, a[5] = {0}, (*f1)(char *) = fun, ch;<br>}<br>则对函数fun的调用语句正确的是（C）<br>A) *f1(&amp;a);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) f1（*s）;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) f1(&amp;ch)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) ch = *f1(s);要改成（*f1）(s)才正确<br>&nbsp;<br>50．有如下程序段：<br>int c = 23;<br>printf(&#8220;%d\n&#8221;, c&amp;c);<br>请问执行结果是：（C）<br>A) 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B) 46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C) 23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D) 以上都不对</font></font></font></font></font></font></font></font></font></font> <img src ="http://www.cppblog.com/tankzhouqiang/aggbug/140968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tankzhouqiang/" target="_blank">周强</a> 2011-03-02 12:18 <a href="http://www.cppblog.com/tankzhouqiang/archive/2011/03/02/140968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>