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

📄 cjj118.htm

📁 c++的一些程序
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML><HEAD><TITLE>C++习题与解析(友元-04)</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<SCRIPT language=JavaScript>
var currentpos,timer;

function initialize()
{
timer=setInterval("scrollwindow()",50);
}
function sc(){
clearInterval(timer);
}
function scrollwindow()
{
currentpos=document.body.scrollTop;
window.scroll(0,++currentpos);
if (currentpos != document.body.scrollTop)
sc();
}
document.onmousedown=sc
document.ondblclick=initialize
</SCRIPT>

<META content="MSHTML 5.00.2614.3500" name=GENERATOR>
<link rel="stylesheet" href="body1.css" type="text/css">
</HEAD>
<BODY topMargin=0 marginheight="0" bgcolor="#CCCCCC">
<TABLE align=center border=1 cellPadding=0 cellSpacing=1 
style="BORDER-COLLAPSE: collapse" width=550>
 <TBODY>
  <TR>
    <TD bgColor=#c1c1c1 height=35> <img src="jsdd.gif" width="159" height="57" > <img src="jjdd.gif" ></TD>
  </TR>
 </TBODY>
</TABLE>


<TABLE align=center border=1 cellPadding=0 cellSpacing=1 
style="BORDER-COLLAPSE: collapse" width=550>
  <TBODY>
  <TR>
    <TD width="100%">
      <TABLE border=0 borderColor=#e2ca9f cellPadding=0 cellSpacing=0 
      width="100%">
        <TBODY>
        <TR>
          <TD align=middle vAlign=top width="95%">
            <TABLE border=1 borderColor=#e2ca9f cellPadding=0 cellSpacing=0 
            width="100%">
              <TBODY>
              <TR>
                <TD align=middle background=002.gif 
                borderColor=#e2ca9f vAlign=top width="69%">
                  <TABLE align=center border=0 cellPadding=0 cellSpacing=0 
                  width="100%">
                    <TBODY> 
                    <TR> 
                      <TD height=35 width="100%"></TD>
                    </TR>
                    <TR> 
                      <TD align=middle bgColor=#dddddd height=20 
                      style="FONT-SIZE: 18px" vAlign=bottom 
                        width="85%" class="body18black">C++习题与解析(友元-04)</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" >题6.采用友元函数的方法重新设计“引用&lt;题8&gt;”中的类Point,并求两个点之间的距离。<BR>
                              解:<BR>
                              &nbsp;&nbsp;&nbsp; 
                              将原来求两个点的距离的普通函数distance()改写为友元函数即可,可以看到采用友元函数方法使得代码更简洁。<BR>本题程序如下:<BR>#include&lt;iostream.h&gt;<BR>#include&lt;math.h&gt;<BR>class 
                              Point<BR>{<BR>&nbsp;&nbsp;&nbsp; int 
                              x,y;<BR>&nbsp;&nbsp;&nbsp; 
                              public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              Point(int i,int 
                              j){x=i;y=j;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              friend float distance(Point &amp;p1,Point 
                              &amp;p2);<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; 
                              cout&lt;&lt;"("&lt;&lt;x&lt;&lt;","&lt;&lt;y&lt;&lt;")";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>};<BR>float distance(Point &amp;p1,Point 
                              &amp;p2)&nbsp;&nbsp; // 
                              友元函数的实现<BR>{<BR>&nbsp;&nbsp;&nbsp; float 
                              d;<BR>&nbsp;&nbsp;&nbsp; 
                              d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));<BR>&nbsp;&nbsp;&nbsp; 
                              return d;<BR>}<BR>void 
                              main()<BR>{<BR>&nbsp;&nbsp;&nbsp; Point 
                              p1(2,2),p2(5,5);<BR>&nbsp;&nbsp;&nbsp; p1.disp(); 
                              cout&lt;&lt;"与"; p2.disp();<BR>&nbsp;&nbsp;&nbsp; 
                              cout&lt;&lt;"之间距离="&lt;&lt;distance(p1,p2)&lt;&lt;endl;<BR>}<BR><BR>本程序执行结果如下:<BR>(2,2)与(5,5)之间距离=4.24264<BR><BR>-------------------------------------------------------<BR><BR><FONT 
                              color=#0000ff>题7.设计一个日期类Date,包括日期的年份、月份和日号,编写一个友元函数,求两个日期之间相差的天数。<BR></FONT>解:<BR>&nbsp;&nbsp;&nbsp; 
                              该类中设计有3个友元函数;count_day()函数,它有两个参数,第2个参数是一个标志,当其值等于1 
                              时,计算一年的开始到某日期的天数;否则计算某日期到年尾的天数。leap()函数用于判断指定的年份是否为闰年。subs()函数用于计算两个日期之间的天数。<BR>本题程序如下:<BR>#include&lt;iostream.h&gt;<BR>#include&lt;stdio.h&gt;<BR>class 
                              Date<BR>{<BR>&nbsp;&nbsp;&nbsp; int 
                              year;<BR>&nbsp;&nbsp;&nbsp; int 
                              month;<BR>&nbsp;&nbsp;&nbsp; int 
                              day;<BR>&nbsp;&nbsp;&nbsp; 
                              public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              Date(int y,int m,int 
                              d)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              year=y;month=m;day=d;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<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; 
                              printf("%d.%d.%d",year,month,day);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              friend int count_day(Date 
                              &amp;d,int);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              friend int leap(int 
                              year);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              friend int subs(Date &amp;d1,Date 
                              &amp;d2);<BR>};<BR>int count_day(Date &amp;d,int 
                              flag)<BR>{<BR>&nbsp;&nbsp;&nbsp; static int 
                              day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},<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;{31,29,31,30,31,30,31,31,30,31,30,31}};<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              // 
                              使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年<BR>&nbsp;&nbsp;&nbsp; 
                              int p,i,s;<BR>&nbsp;&nbsp;&nbsp; 
                              if(leap(d.year))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              p=1;<BR>&nbsp;&nbsp;&nbsp; else 
                              p=0;<BR>&nbsp;&nbsp;&nbsp; 
                              if(flag)<BR>&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              s=d.day;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(i=1;i&lt;d.month;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              s+=day_tab[p][i-1];<BR>&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              s=day_tab[p][d.month]-d.day;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(i=d.month+1; i&lt;=12; 
                              i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              s+=day_tab[p][i-1];<BR>&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp; return s;<BR>}<BR>int 
                              leap(int year)<BR>{<BR>&nbsp;&nbsp;&nbsp; 
                              if(year%4==0&amp;&amp;year%100!=0||year%400==0)&nbsp;&nbsp; 
                              // 
                              是闰年<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              return 1;<BR>&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp; 

⌨️ 快捷键说明

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