C++实例代码附有解释.docx

上传人:b****6 文档编号:6030473 上传时间:2023-01-03 格式:DOCX 页数:43 大小:24.82KB
下载 相关 举报
C++实例代码附有解释.docx_第1页
第1页 / 共43页
C++实例代码附有解释.docx_第2页
第2页 / 共43页
C++实例代码附有解释.docx_第3页
第3页 / 共43页
C++实例代码附有解释.docx_第4页
第4页 / 共43页
C++实例代码附有解释.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

C++实例代码附有解释.docx

《C++实例代码附有解释.docx》由会员分享,可在线阅读,更多相关《C++实例代码附有解释.docx(43页珍藏版)》请在冰豆网上搜索。

C++实例代码附有解释.docx

C++实例代码附有解释

第一题

#include

classStack//定义堆栈类

{

structNode

{

intcontent;

Node*next;

}*top;

public:

Stack(){top=NULL;}//构造函数的定义

boolpush(inti);//压栈成员函数的声明

boolpop(int&i);//弹栈成员函数的声明

};

boolStack:

:

push(inti)//压栈成员函数的定义

{

Node*p=newNode;

if(p==NULL)

{

cout<<"Stackisoverflow.\n";

returnfalse;

}

else

{

p->content=i;

p->next=top;

top=p;

returntrue;

}

}

boolStack:

:

pop(int&i)//弹栈成员函数的定义

{

if(top==NULL)

{

cout<<"Stackisempty.\n";

returnfalse;

}

else

{

Node*p=top;

top=top->next;

i=p->content;

deletep;

returntrue;

}

}

voidmain()

{

Stackst1,st2;//定义对象st1和st2

intx;

for(inti=1;i<=5;i++)

{

st1.push(i);//压栈成员函数的调用

st2.push(i);//压栈成员函数的调用

}

cout<<"stack1:

"<

for(i=1;i<=3;i++)

{

st1.pop(x);//弹栈成员函数的调用

cout<

}

st1.push(20);

for(i=1;i<=4;i++)

{

if(st1.pop(x))

cout<

else

break;

}

cout<<"stack2:

"<

while(st2.pop(x))

cout<

}

第二题

#include//使用名空间std,则必须去掉.h扩展名

usingnamespacestd;

voidmain()

{charname[10];

intage;

cout<<"pleaseinputyourname:

";

cin>>name;

cout<<"Howoldareyou:

";

cin>>age;

cout<<"nameis"<

cout<<"ageis"<

}

第三题

#include

usingnamespacestd;

voidmain()

{

structstudent

{

intno;

floatmath;

};

intn;

cin>>n;

studentwang;

//C++中变量的定义语句可以出现在程序的任意位置;可以使用结构体名定义变量

wang.no=n;

cin>>wang.math;

cout<

}

第四题

#include

usingnamespacestd;

voidmain()

{

int*p;

p=newint;//分配内存空间

*p=5;

cout<<*p;

deletep;//释放内存空间

}

第五题

#include

usingnamespacestd;

voidmain()

{

intn;//定义数组元素的个数

int*p;

cout<<"pleaseinputthelengthofthearray:

";

cin>>n;

if((p=newint[n])==0)

{

cout<<"can'tallocatemorememory,terminating."<

exit

(1);

}//分配内存空间

for(inti=0;i

p[i]=i*2;

cout<<"Nowoutputthearray:

"<

for(i=0;i

cout<

cout<

delete[]p;//释放内存空间

}

第六题

#include

voidmain()

{

intnum=50;

int&ref=num;

ref+=10;

cout<<"num="<

cout<<"ref="<

num+=40;

cout<<"num="<

cout<<"ref="<

}

第七题

#include

voidmain()

{

intnum;

int&ref=num;

num=5;

cout<<"num="<

cout<<"ref="<

cout<<"&num="<<&num<

cout<<"&ref="<<&ref<

}

第八题

#include

usingnamespacestd;

voidswap(int&x,int&y);

voidmain()

{

intx=5,y=6;

cout<<"beforeswap,x:

"<

"<

swap(x,y);

cout<<"afterswap,x:

"<

"<

}

voidswap(int&rx,int&ry)//引用作为形参

{

inttemp=rx;

rx=ry;

ry=temp;

}

第九题

#include

usingnamespacestd;

intarray[6][4]={{60,80,90,75},

{75,85,65,77},

{80,88,90,98},

{89,100,78,81},

{62,68,69,75},

{85,85,77,91}};

int&level(intgrade[],intsize,int&tA,int&tB);

voidmain()

{

inttypeA=0,typeB=0;

intstudent=6;

intgradesize=4;

for(inti=0;i

level(array[i],gradesize,typeA,typeB)++;//函数调用作为左值

cout<<"numberoftypeAis"<

cout<<"numberoftypeBis"<

}

int&level(intgrade[],intsize,int&tA,int&tB)

{

intsum=0;

for(inti=0;i

sum+=grade[i];

sum/=size;//平均分

if(sum>=80)

returntA;//A类学生

else

returntB;//B类学生

}

第十题

#include

usingnamespacestd;

float&fn2(floatr)

{

floattemp;

temp=r*r*3.14;

returntemp;//返回了局部变量

}

voidmain()

{

fn2(5.0)=12.4;

//返回的是局部作用域内的变量,函数调用作为左值使用。

此种情况应尽量避免。

}

第十题

#include

#include//使用字符串string类型的程序应包含头文件

usingnamespacestd;

voidmain()

{

strings,t;

cout<<"请输入一个字符串:

"<

cin>>s;//由键盘输入一行文本,并把它赋给sring类型的变量s,注意:

//使用此方式输入的字符串中不能包含空白字符,具体请参见7.1.2小节

t="Ilikeprogramming!

";

cout<<"字符串的输出:

"<

<

cout<

")<

}

第十一题

#include

usingnamespacestd;

inlinedoublecircumference(doubleradius);

//内联函数的声明,如果此处省略inline关键字,即使在函数定义时加上inline关键字,

//编译程序也不认为那是内联函数,对待该函数如普通函数那样,

//产生该函数的调用代码并进行连接。

voidmain()

{

doubler=3.0,s;

s=circumference(r);

cout<<"thecircumferenceis"<

}

inlinedoublecircumference(doubleradius)

//内联函数的定义,此处也可以省略inline关键字

{

return2*3.1415926*radius;

}

第十二题

#include

intadd(intx,inty)

{

intsum;

sum=x+y;

returnsum;

}

intadd(intx,inty,intz)

{

intsum;

sum=x+y+z;

returnsum;

}

voidmain()

{

inta,b;

a=add(5,10);

b=add(5,10,20);

cout<<"a="<

cout<<"b="<

}

第十三题

#include

template

Tmin(Ta[],intn)

{

inti;

Tminv=a[0];

for(i=1;i

if(minv>a[i])

minv=a[i];

returnminv;

}

voidmain()

{

inta[]={1,3,0,2,7,6,4,5,2};

doubleb[]={1.2,-3.4,6.8,9,8};

cout<<"a数组的最小值为:

"<

cout<<"b数组的最小值为:

"<

}

第十四题

#include

#definePI3.1415926535

template

doubleCircle_Square(Tx)

{

returnx*x*PI;

}

doubleCircle_Square(longx)

{

returnx*x*PI;

}

voidmain()

{

intr1=1;

doubler2=2.0;

longr3=3;

cout<<"Thefirstcirclesquareis"<

<<"Thesecondcirclesquareis"<

<<"Thethirdcirclesquareis"<

}

第十五题

//tdate.h这个头文件只存放有关Tdate类的定义说明

#ifndefTdate_H//用来避免重复定义

#defineTdate_H//不是类的一部分

classTdate

{

public:

voidset(int,int,int);//成员函数原型

intisLeapYear();

voidprint();

private:

intmonth;

intday;

intyear;

};//Tdate类定义的结束

#endif//Tdate_H

//tdate.cpp类Tdate的实现部分

#include//因为tdate.cpp文件要访问运算符<<和stream类

//对象cout,而这二者都是定义在iostream类中的,所以包含iostream.h头文件。

#include"tdate.h"//包含用户自定义的头文件,该文件中提供了Tdate类的定义

voidTdate:

:

set(intm,intd,inty)

{

month=m;day=d;year=y;

}

intTdate:

:

isLeapYear()

{

return((year%4==0&&year%100!

=0)||(year%400==0));

}

voidTdate:

:

print()

{

cout<

}

第十六题

//ch3_2.cpp

#include

#include"tdate.h"

voidsomeFunc(Tdate&refs)

{

refs.print();//通过对象的引用调用成员函数

if(refs.isLeapYear())//通过对象的引用调用成员函数

cout<<"error\n";

else

cout<<"right\n";

}

voidmain()//类的应用部分

{

Tdates,*pTdate=&s;//pTdate为指向Tdate类对象的指针

s.set(2,15,1998);//通过对象调用成员函数

pTdate->print();//通过指向对象的指针调用成员函数

if((*pTdate).isLeapYear())//通过指向对象的指针调用成员函数

cout<<"error\n";

else

cout<<"right\n";

someFunc(s);//对象的地址传给引用

}

第十七题

#include

constintSIZE=10;//存储的最多字符数

classCstack

{

private:

charstk[SIZE];

intposition;

public:

voidinit()

{

position=0;

}

charpush(charch);

charpop();

};

charCstack:

:

push(charch)

{

if(position==SIZE)

{

cout<<"\n栈已满\n";

return0;

}

stk[position++]=ch;

returnch;

};

charCstack:

:

pop()

{

if(position==0)

{

cout<<"\n栈已空"<

return0;

}

returnstk[--position];

};

voidmain()

{

Cstacks;

s.init();

charch;

cout<<"请输入字符:

"<

cin>>ch;

while(ch!

='#'&&s.push(ch))

cin>>ch;

cout<<"\n现在输出栈内数据\n";

while(ch=s.pop())

cout<

}

第十八题

#include

classTdate{

public:

voidset(intm=5,intd=16,inty=1991)//置日期值

{

month=m;day=d;year=y;

}

voidprint()//输出日期值

{

cout<

}

private:

intmonth;

intday;

intyear;

};

voidmain()

{

Tdatea,b,c;

a.set(4,12,1996);

b.set(3);

c.set(8,10);

a.print();

b.print();

c.print();

}

第十九题

#include

classcube

{

public:

intvolume(intht,intwd)

{

returnht*wd;

}

intvolume(intht,intwd,intdp)

{

height=ht;

width=wd;

depth=dp;

returnheight*width*depth;

}

private:

intheight,width,depth;

};

voidmain()

{

cubecube1;

cout<

cout<

}

二十题

#include

classqueue

{

intq[100];

intsloc,rloc;

public:

queue();

voidqput(inti);

intqget();

};

queue:

:

queue()

{

sloc=rloc=0;

cout<<"queueinitialized\n";

}

voidqueue:

:

qput(inti)

{

if(sloc==100)

{

cout<<"queueisfull\n";

return;

}

sloc++;

q[sloc]=i;

}

intqueue:

:

qget()

{

if(rloc==sloc)

{

cout<<"queueisempty\n";

return0;

}

rloc++;

returnq[rloc];

}

voidmain()

{

queuea,b;

a.qput(10);

b.qput(20);

a.qput(20);

b.qput(19);

cout<

cout<

cout<

cout<

}

二十一题

#include

classtest

{

private:

intnum;

floatf1;

public:

test();

test(intn,floatf);//参数化的构造函数

intgetint(){returnnum;}

floatgetfloat(){returnf1;}

};

test:

:

test()

{

cout<<"Initializingdefault"<

num=0;

f1=0.0;

}

test:

:

test(intn,floatf)

{

cout<<"Initializing"<

num=n;

f1=f;

}

voidmain()

{

testx;//调用无参的构造函数

testy(10,21.5);//调用带两个参数的构造函数

test*px=newtest;//调用无参的构造函数

test*py=newtest(10,21.5);//调用带两个参数的构造函数

}

二十二题

#include

classTdate{

public:

Tdate(intm=5,intd=16,inty=1990)

{

month=m;day=d;year=y;

cout<

}

private:

intmonth;

intday;

intyear;

};

voidmain()

{

Tdateaday;

Tdatebday

(2);

Tdatecday(3,12);

Tdatedday(1,2,1998);

}

二十三题

#include

#include

usingnamespacestd;

classStudent{

public:

Student(char*pName)

{

cout<<"calloneparameterconstructor"<

strncpy(name,pName,sizeof(name));

name[sizeof(name)-1]='\0';

cout<<"t

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1