整理C++程序的结构典型案例.docx

上传人:b****1 文档编号:2968345 上传时间:2023-05-05 格式:DOCX 页数:14 大小:19.52KB
下载 相关 举报
整理C++程序的结构典型案例.docx_第1页
第1页 / 共14页
整理C++程序的结构典型案例.docx_第2页
第2页 / 共14页
整理C++程序的结构典型案例.docx_第3页
第3页 / 共14页
整理C++程序的结构典型案例.docx_第4页
第4页 / 共14页
整理C++程序的结构典型案例.docx_第5页
第5页 / 共14页
整理C++程序的结构典型案例.docx_第6页
第6页 / 共14页
整理C++程序的结构典型案例.docx_第7页
第7页 / 共14页
整理C++程序的结构典型案例.docx_第8页
第8页 / 共14页
整理C++程序的结构典型案例.docx_第9页
第9页 / 共14页
整理C++程序的结构典型案例.docx_第10页
第10页 / 共14页
整理C++程序的结构典型案例.docx_第11页
第11页 / 共14页
整理C++程序的结构典型案例.docx_第12页
第12页 / 共14页
整理C++程序的结构典型案例.docx_第13页
第13页 / 共14页
整理C++程序的结构典型案例.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

整理C++程序的结构典型案例.docx

《整理C++程序的结构典型案例.docx》由会员分享,可在线阅读,更多相关《整理C++程序的结构典型案例.docx(14页珍藏版)》请在冰点文库上搜索。

整理C++程序的结构典型案例.docx

整理C++程序的结构典型案例

第五章C++程序的结构典型案例

【案例5-1】局部作用域的效果

#include

usingnamespacestd;

voidfun()                         //变量num将在每次进入函数fun()时进行初始化

    intnum=10;

    cout<

    num++;                        //这个语句没有持续效果

}

intmain() 

{

    for(inti=0;i<3;i++)

        fun();  

    return0;

}

 

【案例5-2】屏蔽效应——作用域效果导致的名称隐藏

#include

usingnamespacestd;

intmain()

    inti=10,j=30;

    if(j>0)

    {

        inti;                   //内部的i将隐藏或屏蔽外层的i

    i=j/2;  

        cout<<"innervariablei:

"<

    }

    cout<<"outervariablei:

"<

    return0;

}

 

【案例5-3】筛选偶数——文件作用域变量

#include

usingnamespacestd;

intcount;               //这是一个全局变量 

voidfunc1()

    voidfunc2();

    cout<<"count:

"<

    func2();

}

voidfunc2()

    intcount;     //这是一个局部变量

    for(count=0;count<2;count++)

       cout<<'*';

}

intmain()

    voidfunc1();

    voidfunc2();

    inti;      //这是一个局部变量 

    for(i=0;i<10;i++)

    {

        count=i++; 

        func1();  

    }

    return0;

}

 

【案例5-4】求数据序列的平均值——static局部变量的持续效果

#include

usingnamespacestd;

intAverage(inti)

    staticintsum=0,count=0;          //声明静态局部变量,具有全局寿命,局部可见

    sum=sum+i;  count++;

    returnsum/count;

}

intmain()

    intnum;                               //局部变量,具有动态生存期

 do

 { 

            cout<<"Enternumbers(-1toquit):

";    cin>>num;

     if(num!

=-1)  

                cout<<"Runningaverageis:

"<

     cout<

 }while(num>-1);

 return0;

}

 

【案例5-5】求数据序列的平均值——static全局变量的应用

#include

usingnamespacestd;

intAverage(inti);

voidreset();

intmain()

    intnum;     //局部变量,具有动态生存期

    do

    { 

         cout<<"Enternumbers(-1toquit,-2toreset):

"; 

         cin>>num;

  if(num==-2)

         {

              reset(); 

              continue; 

         }

  if(num!

=-1)

              cout<<"Runningaverageis:

"<

  cout<

    }while(num!

=-1);

    return0;

}

staticintsum=0,count=0;               //静态全局变量,具有静态生存期,全局可见

intAverage(inti)

{

    sum=sum+i; count++; returnsum/count;

}

voidreset()

    sum=0;count=0;

}

 

【案例5-6】时钟类——具有静态生存期的全局变量和全局对象

#include

usingnamespacestd;

inth=0,m=0,s=0;               //声明全局变量,具有静态生存期

classClock 

{

public:

 

    Clock();

    voidSetTime(intNewH,intNewM,intNewS);    //三个形参均具有函数原型作用域

    voidShowTime();

    ~Clock(){}

private:

 

    intHour,Minute,Second;

};

Clock:

:

Clock() 

    Hour=h;Minute=m;Second=s;                   //使用全局变量初始化

voidClock:

:

SetTime(intNewH,intNewM,intNewS)

    Hour=NewH;  Minute=NewM; Second=NewS;

}

voidClock:

:

ShowTime()

{

    cout<

"<

"<

}

ClockglobClock;                                  //声明对象globClock,具有静态生存期,文件作用域

intmain() 

    cout<<"Initialtimeoutput:

"<

    //引用具有文件作用域的对象globClock:

    globClock.ShowTime();           //对象的成员函数具有类作用域

    globClock.SetTime(10,20,30);          //将时间设置为10:

20:

30

    //调用拷贝构造函数,以globClock为初始值 

    ClockmyClock(globClock);                   //声明具有块作用域的对象myClock

    cout<<"Settedtimeoutput:

"<

    myClock.ShowTime();   //引用具有块作用域的对象myClock

    return0;

}

 

【案例5-7】实现数据共享——公有静态数据成员

#include

usingnamespacestd;

classPubClass

{

public:

    staticintnum;          //公有静态数据成员的声明

    voidshownum(){cout<<"Thenumis:

"<

};

intPubClass:

:

num;          //在类外定义num

intmain()

    PubClassa,b;

    PubClass:

:

num=1000;           //通过类名访问静态成员num

    a.shownum();  

    b.shownum();

    a.num=2000;            //通过对象访问静态成员num

    a.shownum();  

    b.shownum();

    return0;

}

 

【案例5-8】实现数据共享——私有型静态数据成员

#include

usingnamespacestd;

classPriClass

    staticintnum;      //私有型静态成员

public:

    voidsetnum(inti){num=i;};

    voidshownum(){cout<<"Thenumis:

"<

};

intPriClass:

:

num;    //在类外定义num

intmain()

    PriClassa,b;

    a.shownum();  b.shownum();

    a.setnum(1000);    //设置静态成员num为1000

    a.shownum();  b.shownum();

    return0;

}

 

【案例5-9】实现函数共享——静态函数成员

#include

usingnamespacestd;

classFunClass

    staticintcount;     //静态数据成员声明

public:

    FunClass(){count++;   cout<<"Constructingobject"<

    ~FunClass(){cout<<"Destroyingobject"<

    staticintGetCount(){returncount;}     //静态函数成员

};

intFunClass:

:

count;     //静态数据成员定义

intmain()

    FunClassa,b,c;

    cout<<"FromClass,therearenow"<

:

GetCount()<<"inexistence.\n";

    cout<<"FromObject,therearenow"<

    return0;

}

 

规划编制单位应当在报送审查的环境影响报告书中附具对公众意见采纳与不采纳情况及其理由的说明。

【案例5-10】求最小公因子——友元函数的访问类的私有成员

#include

usingnamespacestd;

classFriFunClass

    inta,b;

public:

    FriFunClass(inti,intj){a=i;b=j;}

    friendintFriFun(FriFunClassx);      //友元成员函数

};

intFriFun(FriFunClassx)      //注意:

FriFun()不是任何类的成员函数

    //由于函数FriFun()是类FriFunClass的友元函数,所以它不能直接访问a和b

    intmax=x.a

x.a:

x.b;

    for(inti=2;i<=max;i++)

         if((x.a%i)==0&&(x.b%i)==0)

              returni;

    return0;

}

intmain()

    FriFunClassn(10,20);       //声明类对象

    if(FriFun(n)) 

         cout<<"Commondenominatoris"<

    else cout<<"Nocommondenominator.\n";

  return0;

}

2.早期介入原则; 

(3)旅行费用法【案例5-11】判断圆柱体和立方体的颜色是否相同——多个类共享友元函数

#include

usingnamespacestd;

classCylinder;       //前向引用声明

enumColors{red,green,yellow};     //定义颜色枚举类型

classCube

Colorscolor;

public:

    Cube(Colorsc){color=c;}

    friendboolTestSame(Cubex,Cylindery);     //声明为Cube的友元函数

};

classCylinder

Colorscolor;

public:

    Cylinder(Colorsc){color=c;}

    friendboolTestSame(Cubex,Cylindery);     //声明为Cylinder的友元函数

};

boolTestSame(Cubex,Cylindery)

{

    if(x.color==y.color)

         returntrue;  

    elsereturnfalse;

intmain()

    Cubecube1(red), cube2(yellow);  

    Cylindercyl(yellow);                        //声明对象并初始化

    if(TestSame(cube1,cyl))     

         cout<<"Thecolorofcube1andcylarethesame.\n";

    else  

         cout<<"Thecolorofcube1andcylaredifferent.\n";

    if(TestSame(cube2,cyl))

         cout<<"Thecolorofcube2andcylarethesame.\n";

    else

         cout<<"Thecolorofcube2andcylaredifferent.\n";

    return0;

}

 

【案例5-12】计算2个三角形之和——友元函数的应用

#include

#include

usingnamespacestd;

classTrig

    double x,y,z;

    doublearea() {doubled=(x+y+z)/2; returnsqrt(d*(d-x)*(d-y)*(d-z));}

public:

    Trig(inti,intj,intk) {x=i;y=j;z=k; }

    intisTriangle()       //判断是否构成三角形

    { 

         if (x+y>z&&x+z>y&&y+z>x) 

              return1;

  else 

              return0;

    }

    friend doubletwoarea(Trigtl,Trigt2)           //声明友元函数

    {

         returntl.area()+t2.area();

    }

};

intmain()

    Trigtl(3,5,7),t2(8,7,12);

    if(tl.isTriangle()&&t2.isTriangle())

         cout<<"TotalareaoftwoTriangles:

"<

    else 

         cout<<"CannotformaTriangle"<

    return0;

}

4.广泛参与原则。

 

(2)评价范围。

根据评价机构专业特长和工作能力,确定其相应的评价范围。

【案例5-13】数据的单向传递——常引用作函数形参

#include 

usingnamespacestd;

//常引用作形参,在函数中不能更新z所引用的对象,因此对应的实参不会被破坏。

voidfun(intx,int&y,constint&z)

    x+=z;

    y+=z;

    cout<<"x="<

}

intmain()

{

    inta=20,b=30,c=40;

    cout<<"a="<

    fun(a,b,c);

    cout<<"a="<

    fun(2*a-3,b,c); 

    cout<<"a="<

    return0;

}

 

【案例5-14】成员函数的选择调用——常成员函数

#include

usingnamespacestd;

classZRF

{

public:

    ZRF(intZ1,intZ2){ZRF1=Z1;ZRF2=Z2;}

    voiddisp();

    voiddisp()const;                          //常成员函数声明

private:

    intZRF1,ZRF2;

};

voidZRF:

:

disp()  

{

    cout<

"<

}

voidZRF:

:

disp()const     //常成员函数定义

{

cout<

"<

}

intmain()

    ZRFa(2,3);

    a.disp();                                   //调用voiddisp()

    constZRFb(10,20);  

    b.disp();                                   //调用voiddisp()const

 return0;

}

仍以森林为例,营养循环、水域保护、减少空气污染、小气候调节等都属于间接使用价值的范畴。

 

一、环境影响评价的基础【案例5-15】计算圆周长——不带参数的宏定义

#include          

usingnamespacestd;

#definePI3.14159                       //宏名PI为符号常量

#definena                                 //宏名n将用a来替换

#defineLENGTH 2*PI*n                     //宏名LENGTH将用2*PI*n来替换

intmain()

    intn=1;                             //intn=1;替换为inta=1;

    cout<<"LENGTH="<展开阅读全文

相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2