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

📄 cjj126.htm

📁 c++的一些程序
💻 HTM
📖 第 1 页 / 共 2 页
字号:
                        width="85%" class="body18black">C++习题与解析(模板-03)</TD>
                      <BR>
                    </TR>
                    <TR> 
                      <TD align=middle width="100%"><BR>
                      </TD>
                    </TR>
                    <TR> 
                      <TD align=middle width="100%"> 
                        <!--下面的这一句是设置阅读文本区的宽度-->
                        
                        <TABLE align=center border=0 cellPadding=0 cellSpacing=0  width="75%">
                          <TBODY> 
                          <TR> 
                            <TD align=middle width="100%"></TD>
                          </TR>
                          <TR> 
                            <TD class="body12black" >
题 5. 一个Sample类模板的私有数据成员为T n,在该类模板中设计一个operator==重载运算符函数 ,用于比较各对象的n数据是否相等。<BR></FONT>解:<BR>&nbsp;&nbsp;&nbsp; 本题程序如下:<BR>#include&lt;iostream.h&gt;<BR>template &lt;class T&gt;<BR>class Sample<BR>{<BR>&nbsp;&nbsp;&nbsp; T n;<BR>&nbsp;&nbsp;&nbsp; public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sample(T i){n=i;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int operator==(Sample &amp;);<BR>};<BR>template &lt;class T&gt;<BR>int Sample&lt;T&gt;::operator==(Sample &amp;s)<BR>{<BR>&nbsp;&nbsp;&nbsp; if(n==s.n)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<BR>}<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp; Sample&lt;int&gt; s1(2),s2(3);<BR>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"s1与s2的数据成员"&lt;&lt;(s1==s2?"相等":"不相等")&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp; Sample&lt;double&gt;s3(2.5),s4(2.5);<BR>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"s3与s4的数据成员"&lt;&lt;(s3==s4?"相等":"不相等")&lt;&lt;endl;<BR>}<BR>本程序的运行结果如下:<BR>s1与s2的数据成员不相等<BR>s3与S4的数据成员相等<BR><BR>----------------------------------------------------<BR><BR><FONT color=#0000ff>题 6. 对第3章的例3.5进行修改,只设计一个Sample类,其数据和方法均包含在该类中,而且使用类模板的方式实现。<BR></FONT>#include&lt;iostream.h&gt;<BR>#define Max 100<BR>template &lt;class T&gt;<BR>class Sample<BR>{<BR>&nbsp;&nbsp;&nbsp; T A[Max];<BR>&nbsp;&nbsp;&nbsp; int n;<BR>&nbsp;&nbsp;&nbsp; void qsort(int l,int h);&nbsp;&nbsp;&nbsp;&nbsp; // 私有成员,由quicksort()成员调用<BR>&nbsp;&nbsp;&nbsp; public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sample(){n=0;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void getdata();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 获取数据<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void insertsort();&nbsp;&nbsp;&nbsp; // 插入排序<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void Shellsort();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 希尔排序<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void bubblesort();&nbsp;&nbsp;&nbsp;&nbsp; // 冒泡排序<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void quicksort();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 快速排序<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void selectsort();&nbsp;&nbsp;&nbsp;&nbsp; // 选择排序<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void disp();<BR>};<BR>template &lt;class T&gt;<BR>void Sample&lt;T&gt;::getdata()<BR>{<BR>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"元素个数:";<BR>&nbsp;&nbsp;&nbsp; cin&gt;&gt;n;<BR>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"输入第"&lt;&lt;i+1&lt;&lt;"个数据:";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin&gt;&gt;A[i];<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>template &lt;class T&gt;<BR>void Sample&lt;T&gt;::insertsort()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 插入排序<BR>{<BR>&nbsp;&nbsp;&nbsp; int i,j;<BR>&nbsp;&nbsp;&nbsp; T temp;<BR>&nbsp;&nbsp;&nbsp; for(i=1;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp=A[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j=i-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(temp&lt;A[j])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A[j+1]=A[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A[j+1]=temp;<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>template &lt;class T&gt;<BR>void Sample&lt;T&gt;::Shellsort()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 希尔排序<BR>{<BR>&nbsp;&nbsp;&nbsp; int i,j,gap;<BR>&nbsp;&nbsp;&nbsp; T temp;<BR>&nbsp;&nbsp;&nbsp; gap=n/2;<BR>&nbsp;&nbsp;&nbsp; while(gap&gt;0)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=gap;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j=i-gap;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(j&gt;=gap)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(A[j]&gt;A[j+gap])<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; temp=A[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A[j]=A[j+gap];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A[j+gap]=temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j=j-gap;<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; else j=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gap=gap/2;<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>template &lt;class T&gt;<BR>void Sample&lt;T&gt;::bubblesort()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 冒泡排序<BR>{<BR>&nbsp;&nbsp;&nbsp; int i,j;<BR>&nbsp;&nbsp;&nbsp; T temp;<BR>&nbsp;&nbsp;&nbsp; for(i=0;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=n-1;j&gt;=i+1;j--)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(A[j]&lt;A[j-1])<BR>&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; temp=A[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A[j]=A[j-1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A[j-1]=temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>}<BR>template &lt;class T&gt;<BR>void Sample&lt;T&gt;::quicksort()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 快速排序<BR>{<BR>&nbsp;&nbsp;&nbsp; qsort(0,n-1);<BR>}<BR>template&lt;class T&gt;<BR>void Sample&lt;T&gt;::qsort(int l,int h)<BR>{<BR>&nbsp;&nbsp;&nbsp; int i=l,j=h;<BR>&nbsp;&nbsp;&nbsp; T temp;<BR>&nbsp;&nbsp;&nbsp; if(l&lt;h)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp=A[l];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(j&gt;i&amp;&amp;A[j]&gt;=temp)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i&lt;j)<BR>&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; A[i]=A[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(i&lt;j&amp;&amp;A[i]&lt;=temp)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i&lt;j)<BR>&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; A[j]=A[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }while(i&lt;j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A[i]=temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qsort(1,j-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qsort(j+1,h);<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>template &lt;class T&gt;<BR>void Sample&lt;T&gt;::selectsort()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 选择排序<BR>{<BR>&nbsp;&nbsp;&nbsp; int i,j,k;<BR>&nbsp;&nbsp;&nbsp; T temp;<BR>&nbsp;&nbsp;&nbsp; for(i=0;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k=i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=i+1;j&lt;=n-1;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(A[j]&lt;A[k])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k=j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp=A[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A[i]=A[k];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A[k]=temp;<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>template &lt;class T&gt;<BR>void Sample&lt;T&gt;::disp()<BR>{<BR>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;A[i]&lt;&lt;" ";<BR>&nbsp;&nbsp;&nbsp; cout&lt;&lt;endl;<BR>}<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp; int sel=0;<BR>&nbsp;&nbsp;&nbsp; Sample&lt;char&gt; s;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 由类模板产生char型的模板类<BR>&nbsp;&nbsp;&nbsp; s.getdata();<BR>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"原来序列:";<BR>&nbsp;&nbsp;&nbsp; s.disp();<BR>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"0:插入排序 1:希尔排序 2:冒泡排序 3:快速排序\n&nbsp;&nbsp; 4:选择排序 其它退出"&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"选择排序方法:";<BR>&nbsp;cin&gt;&gt;sel;<BR>&nbsp;&nbsp;&nbsp; switch(sel)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 0:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.insertsort();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"插入排序结果";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.Shellsort();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"希尔排序结果:";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.bubblesort();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"冒泡排序结果:";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 3:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.quicksort();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"快速排序结果:";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 4:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.selectsort();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"选择排序结果:";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; s.disp();<BR>}<BR>程序运行结果如下:</DIV><BR>
<P align=left><P align=center><IMG  onload='javascript:if(this.width>screen.width-333)this.width=screen.width-333' src="http://www.cstudyhome.com/wenzhang06/uploadpic/20034201043189404.gif"></P>
<DIV>&nbsp;&nbsp;&nbsp; <BR>----------------------------------------------------<BR><BR><FONT color=#0000ff>题 7. 设计一个模板类Sample,用于对一个有序数组采用二分法查找元素下标。</FONT><BR>解:<BR>#include&lt;iostream.h&gt;<BR>#define Max 100<BR>template &lt;class T&gt;<BR>class Sample<BR>{<BR>&nbsp;&nbsp;&nbsp; T A[Max];<BR>&nbsp;&nbsp;&nbsp; int n;<BR>&nbsp;&nbsp;&nbsp; public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sample(){}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sample(T a[],int i);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int seek(T c);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void disp()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;A[i]&lt;&lt;" ";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>};<BR>template &lt;class T&gt;<BR>Sample&lt;T&gt;::Sample(T a[],int i)<BR>{<BR>&nbsp;&nbsp;&nbsp; n=i;<BR>&nbsp;&nbsp;&nbsp; for(int j=0;j&lt;i;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A[j]=a[j];<BR>}<BR>template &lt;class T&gt;<BR>int Sample&lt;T&gt;::seek(T c)<BR>{<BR>&nbsp;&nbsp;&nbsp; int low=0,high=n-1,mid;<BR>&nbsp;&nbsp;&nbsp; while(low&lt;=high)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mid=(low+high)/2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(A[mid]==c)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return mid;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(A[mid]&lt;c) low=mid+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else high=mid-1;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; return -1;<BR>}<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp; char a[]="acegkmpwxz";<BR>&nbsp;&nbsp;&nbsp; Sample&lt;char&gt;s(a,10);<BR>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"元素序列:"; s.disp();<BR>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"'g'的下标:"&lt;&lt;s.seek('g')&lt;&lt;endl;<BR>}<BR>程序运行结果如下:<BR>元素序列:a c e g k m p w x z<BR>元素'g'的下标: 3</DIV><br>

</TD>
                          </TR>
                          </TBODY> 
                        </TABLE>
                      </TD>
                    </TR>
                    <TR> 
                      <TD height=35 width="100%"> 
                        <DIV align=center></DIV>
                      </TD>
                    </TR>
                    </TBODY> 
                  </TABLE>
                </TD></TR></TBODY>
			</TABLE>
			</TD></TR></TBODY>
		</TABLE>
	</TD></TR></TBODY>
</TABLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=750>
 <TBODY>
  <TR>
    <TD bgColor=#c1c1c1 height=1></TD>
  </TR>
 </TBODY>
</TABLE>


<TABLE align=center border=1 cellPadding=0 cellSpacing=1 
style="BORDER-COLLAPSE: collapse" width=550>
 <TBODY>
  <td  align=center>
      <div align="center">
        <p><a href=mailto:jjsun36@sohu.com ><span class="body14black">mailto:jjsun36@sohu.com</span></a><span class="body12red"> 
          &nbsp;&nbsp;&nbsp;&nbsp;热线电话:0523-4864559</span></p>
      </div>
    </td>
 </TBODY>
</TABLE>

</BODY></HTML>

⌨️ 快捷键说明

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