< ><B>一、请填写<FONT face="Times New Roman">BOOL , float, </FONT></B><B>指针变量<FONT face="Times New Roman"> </FONT></B><B>与“零值”比较的<FONT face="Times New Roman"> if </FONT></B><B>语句。(<FONT face="Times New Roman">10</FONT></B><B>分)<o:p></o:p></B></P>
< >提示:这里“零值”可以是<FONT face="Times New Roman">0, 0.0 , FALSE</FONT>或者“空指针”。例如<FONT face="Times New Roman"> int </FONT>变量<FONT face="Times New Roman"> n </FONT>与“零值”比较的<FONT face="Times New Roman"> if </FONT>语句为:</P>
< ><FONT face="Times New Roman"> if ( n == 0 )</FONT></P>
<P ><FONT face="Times New Roman"> if ( n != 0 )</FONT></P>
<P >以此类推。</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TR>
<TD vAlign=top width=581>
<P >请写出<FONT face="Times New Roman"> BOOL flag </FONT>与“零值”比较的<FONT face="Times New Roman"> if </FONT>语句:</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P></TD></TR>
<TR>
<TD vAlign=top width=581>
<P >请写出<FONT face="Times New Roman"> float x </FONT>与“零值”比较的<FONT face="Times New Roman"> if </FONT>语句:</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P></TD></TR>
<TR >
<TD vAlign=top width=581>
<P >请写出<FONT face="Times New Roman"> char *p </FONT>与“零值”比较的<FONT face="Times New Roman"> if </FONT>语句:</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P></TD></TR></TABLE>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><B>二、以下为<FONT face="Times New Roman">Windows NT</FONT></B><B>下的<FONT face="Times New Roman">32</FONT></B><B>位<FONT face="Times New Roman">C++</FONT></B><B>程序,请计算<FONT face="Times New Roman">sizeof</FONT></B><B>的值(<FONT face="Times New Roman">10</FONT></B><B>分)<o:p></o:p></B></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TR >
<TD vAlign=top width=284 rowSpan=2>
<P ><FONT face="Times New Roman"> char str[] = “Hello” ;</FONT></P>
<P ><FONT face="Times New Roman"> char *p = str ;</FONT></P>
<P ><FONT face="Times New Roman">int n = 10;</FONT></P>
<P >请计算</P>
<P ><FONT face="Times New Roman">sizeof (str ) = </FONT></P>
<P ><FONT face="Times New Roman"> </FONT></P>
<P ><FONT face="Times New Roman">sizeof ( p ) = </FONT></P>
<P ><FONT face="Times New Roman"> </FONT></P>
<P ><FONT face="Times New Roman">sizeof ( n ) =</FONT></P></TD>
<TD vAlign=top width=284>
<P ><FONT face="Times New Roman">void Func ( char str[100])</FONT></P>
<P ><FONT face="Times New Roman">{</FONT></P>
<P >请计算</P>
<P ><FONT face="Times New Roman"> sizeof( str ) = </FONT></P>
<P ><FONT face="Times New Roman">}</FONT></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P></TD></TR>
<TR >
<TD vAlign=top width=284>
<P ><FONT face="Times New Roman">void *p = malloc( 100 );</FONT></P>
<P >请计算</P>
<P ><FONT face="Times New Roman">sizeof ( p ) =</FONT></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P></TD></TR></TABLE>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><B>三、简答题(<FONT face="Times New Roman">25</FONT></B><B>分)<o:p></o:p></B></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><FONT face="Times New Roman">1</FONT>、头文件中的<FONT face="Times New Roman"> ifndef/define/endif </FONT>干什么用?</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><FONT face="Times New Roman">2</FONT>、<FONT face="Times New Roman">#include <filename.h> </FONT>和<FONT face="Times New Roman"> #include “filename.h” </FONT>有什么区别?</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><FONT face="Times New Roman">3</FONT>、<FONT face="Times New Roman">const </FONT>有什么用途?(请至少说明两种)</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><FONT face="Times New Roman">4</FONT>、在<FONT face="Times New Roman">C++ </FONT>程序中调用被<FONT face="Times New Roman"> C</FONT>编译器编译后的函数,为什么要加<FONT face="Times New Roman"> extern “C”</FONT>声明?</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><FONT face="Times New Roman">5</FONT>、请简述以下两个<FONT face="Times New Roman">for</FONT>循环的优缺点</P>
<P ><o:p> </o:p></P>
<P>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TR >
<TD vAlign=top width=268>
<P >// 第一个<o:p></o:p></P>
<P >for (i=0; i<N; i++)<o:p></o:p></P>
<P >{<o:p></o:p></P>
<P >if (condition)<o:p></o:p></P>
<P > DoSomething();<o:p></o:p></P>
<P >else<o:p></o:p></P>
<P > DoOtherthing();<o:p></o:p></P>
<P >}<o:p></o:p></P></TD>
<TD vAlign=top width=283>
<P >// 第二个<o:p></o:p></P>
<P >if (condition)<o:p></o:p></P>
<P >{<o:p></o:p></P>
<P >for (i=0; i<N; i++)<o:p></o:p></P>
<P > DoSomething();<o:p></o:p></P>
<P >}<o:p></o:p></P>
<P >else<o:p></o:p></P>
<P >{<o:p></o:p></P>
<P > for (i=0; i<N; i++)<o:p></o:p></P>
<P > DoOtherthing();<o:p></o:p></P>
<P >}<o:p></o:p></P></TD></TR>
<TR >
<TD vAlign=top width=268>
<P >优点:<o:p></o:p></P>
<P ><o:p> </o:p></P>
<P ><o:p> </o:p></P>
<P >缺点:<o:p></o:p></P>
<P ><o:p> </o:p></P>
<P ><o:p> </o:p></P>
<P ><o:p> </o:p></P></TD>
<TD vAlign=top width=283>
<P >优点:<o:p></o:p></P>
<P ><o:p> </o:p></P>
<P ><o:p> </o:p></P>
<P >缺点:<o:p></o:p></P>
<P ><o:p> </o:p></P>
<P ><o:p> </o:p></P></TD></TR></TABLE>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><B>四、有关内存的思考题(<FONT face="Times New Roman">20</FONT></B><B>分)<o:p></o:p></B></P>
<P ><B><o:p><FONT face="Times New Roman"> </FONT></o:p></B></P>
<P>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TR>
<TD vAlign=top width=291>
<P >void GetMemory(char *p)<o:p></o:p></P>
<P >{<o:p></o:p></P>
<P >p = (char *)malloc(100);<o:p></o:p></P>
<P >}<o:p></o:p></P>
<P ><FONT face="Times New Roman">void Test(void) </FONT></P>
<P ><FONT face="Times New Roman">{</FONT></P>
<P >char *str = NULL;<o:p></o:p></P>
<P >GetMemory(str); <o:p></o:p></P>
<P >strcpy(str, "hello world");<o:p></o:p></P>
<P >printf(str);<o:p></o:p></P>
<P >}<o:p></o:p></P>
<P ><o:p> </o:p></P>
<P >请问运行Test函数会有什么样的结果?<o:p></o:p></P>
<P >答:</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P></TD>
<TD vAlign=top width=291>
<P >char *GetMemory(void)<o:p></o:p></P>
<P >{ <o:p></o:p></P>
<P >char p[] = "hello world";<o:p></o:p></P>
<P >return p;<o:p></o:p></P>
<P >}<o:p></o:p></P>
<P >void Test(void)<o:p></o:p></P>
<P >{<o:p></o:p></P>
<P >char *str = NULL;<o:p></o:p></P>
<P >str = GetMemory(); <o:p></o:p></P>
<P >printf(str);<o:p></o:p></P>
<P >}<o:p></o:p></P>
<P ><o:p> </o:p></P>
<P >请问运行Test函数会有什么样的结果?<o:p></o:p></P>
<P >答:</P></TD></TR>
<TR >
<TD vAlign=top width=291>
<P >Void GetMemory2(char **p, int num)<o:p></o:p></P>
<P >{<o:p></o:p></P>
<P >*p = (char *)malloc(num);<o:p></o:p></P>
<P >}</P>
<P >void Test(void)<o:p></o:p></P>
<P >{<o:p></o:p></P>
<P >char *str = NULL;<o:p></o:p></P>
<P >GetMemory(&str, 100);<o:p></o:p></P>
<P >strcpy(str, "hello"); <o:p></o:p></P>
<P >printf(str); <o:p></o:p></P>
<P >}</P>
<P >请问运行Test函数会有什么样的结果?<o:p></o:p></P>
<P >答:</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P></TD>
<TD vAlign=top width=291>
<P >void Test(void)<o:p></o:p></P>
<P >{<o:p></o:p></P>
<P >char *str = (char *) malloc(100);<o:p></o:p></P>
<P > strcpy(str, <FONT face="Times New Roman">“</FONT>hello<FONT face="Times New Roman">”</FONT>);<o:p></o:p></P>
<P > free(str); <o:p></o:p></P>
<P > if(str != NULL)<o:p></o:p></P>
<P > {<o:p></o:p></P>
<P > strcpy(str, <FONT face="Times New Roman">“</FONT>world<FONT face="Times New Roman">”</FONT>); <o:p></o:p></P>
<P >printf(str);<o:p></o:p></P>
<P >}<o:p></o:p></P>
<P ><FONT face="Times New Roman">}</FONT></P>
<P >请问运行Test函数会有什么样的结果?<o:p></o:p></P>
<P >答:</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P></TD></TR></TABLE>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><B>五、编写<FONT face="Times New Roman">strcpy</FONT></B><B>函数(<FONT face="Times New Roman">10</FONT></B><B>分)<o:p></o:p></B></P>
<P >已知<FONT face="Times New Roman">strcpy</FONT>函数的原型是</P>
<P ><FONT face="Times New Roman"> char *strcpy(char *strDest, const char *strSrc);</FONT></P>
<P ><FONT face="Times New Roman"> </FONT>其中<FONT face="Times New Roman">strDest</FONT>是目的字符串,<FONT face="Times New Roman">strSrc</FONT>是源字符串。</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P >(<FONT face="Times New Roman">1</FONT>)不调用<FONT face="Times New Roman">C++/C</FONT>的字符串库函数,请编写函数<FONT face="Times New Roman"> strcpy</FONT></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P >(<FONT face="Times New Roman">2</FONT>)<FONT face="Times New Roman">strcpy</FONT>能把<FONT face="Times New Roman">strSrc</FONT>的内容复制到<FONT face="Times New Roman">strDest</FONT>,为什么还要<FONT face="Times New Roman">char * </FONT>类型的返回值?</P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><B>六、编写类<FONT face="Times New Roman">String</FONT></B><B>的构造函数、析构函数和赋值函数(<FONT face="Times New Roman">25</FONT></B><B>分)<o:p></o:p></B></P>
<P >已知类<FONT face="Times New Roman">String</FONT>的原型为:</P>
<P > class String<o:p></o:p></P>
<P > {<o:p></o:p></P>
<P > public:<o:p></o:p></P>
<P > String(const char *str = NULL); // 普通构造函数<o:p></o:p></P>
<P > String(const String &other); // 拷贝构造函数<o:p></o:p></P>
<P > ~ String(void); // 析构函数<o:p></o:p></P>
<P > String & operate =(const String &other); // 赋值函数<o:p></o:p></P>
<P > private:<o:p></o:p></P>
<P > char *m_data; // 用于保存字符串<o:p></o:p></P>
<P > };<o:p></o:p></P>
<P ><FONT face="Times New Roman"> </FONT>请编写String的上述4个函数。</P>
<p> |