C++ Primer Plus6 第七章 程序清单.docx
《C++ Primer Plus6 第七章 程序清单.docx》由会员分享,可在线阅读,更多相关《C++ Primer Plus6 第七章 程序清单.docx(20页珍藏版)》请在冰豆网上搜索。
C++PrimerPlus6第七章程序清单
7.1calling.cpp
#include
voidsimple();
intmain()
{
usingnamespacestd;
cout<<"main()willcallthesimple()function:
"<simple();
cout<<"main()isfinishedwiththesimple()function."<return0;
}
voidsimple()
{
usingnamespacestd;
cout<<"I'mbutasimplefunction."<}
7.2protos.cpp
#include
voidcheers(int);
doublecube(doublex);
intmain()
{
usingnamespacestd;
cheers(5);
cout<<"Givemeanumber:
";
doubleside;
cin>>side;
doublevolume=cube(side);
cout<<"A"<cout<cheers(cube
(2));
return0;
}
voidcheers(intn)
{
usingnamespacestd;
for(inti=0;icout<<"Cheers!
"<}
doublecube(doublex)
{
returnx*x*x;
}
7.3twoarg.cpp
#include
usingnamespacestd;
voidn_chars(char,int);
intmain()
{
inttimes;
charch;
cout<<"Enteracharacter:
";
cin>>ch;
while(ch!
='q')
{
cout<<"Enteraninteger:
";
cin>>times;
n_chars(ch,times);
cout<";
cin>>ch;
}
cout<<"Thevalueoftimesis"<cout<<"Bye"<return0;
}
voidn_chars(charc,intn)
{
while(n-->0)
cout<}
7.4lotto.cpp
#include
longdoubleprobability(unsignednumbers,unsignedpicks);
intmain()
{
usingnamespacestd;
doubletotal,choices;
cout<<"Enterthetotalnumberofchoicesonthegamecard"<"<while((cin>>total>>choices)&&choices<=total)
{
cout<<"Youhaveonechancein";
cout<cout<<"ofwinning."<cout<<"Nexttwonumbers(qtoquit):
";
}
cout<<"bye."<return0;
}
longdoubleprobability(unsignednumbers,unsignedpicks)
{
longdoubleresult=1.0;
longdoublen;
unsignedp;
for(n=numbers,p=picks;p>0;n--,p--)
result=result*n/p;
returnresult;
}
7.5arrfun1.cpp
#include
constintArSize=8;
intsum_arr(intarr[],intn);
intmain()
{
usingnamespacestd;
intcookies[ArSize]={1,2,4,8,16,64,128};
intsum=sum_arr(cookies,ArSize);
cout<<"Totalcookieseaten:
"<return0;
}
7.6arrfun2.cpp
intsum_arr(intarr[],intn)
{
inttotal=0;
for(inti=0;itotal=total+arr[i];
returntotal;
}
#include
constintArSize=8;
intsum_arr(intarr[],intn);
usingnamespacestd;
intmain()
{
intcookies[ArSize]={1,2,4,8,16,32,64,128};
cout<cout<intsum=sum_arr(cookies,ArSize);
cout<<"Totalcookieseaten:
"<sum=sum_arr(cookies,3);
cout<<"Firstthreeeatersate"<sum=sum_arr(cookies+4,4);
cout<<"Lastfoureatersate"<return0;
}
intsum_arr(intarr[],intn)
{
inttotal=0;
cout<cout<for(inti=0;itotal=total+arr[i];
returntotal;
}
7.7.arrfun3.cpp
#include
constintMax=5;
intfill_array(doublear[],intlimit);
voidshow_array(constdoublear[],intn);
voidrevalue(doubler,doublear[],intn);
intmain()
{
usingnamespacestd;
doubleproperties[Max];
intsize=fill_array(properties,Max);
show_array(properties,size);
if(size>0)
{
cout<<"Enterrevaluationfactor:
";
doublefactor;
while(!
(cin>>factor))
{
cin.clear();
while(cin.get()!
='\n')
continue;
cout<<"Badinput;pleaseenteranumber:
";
}
revalue(factor,properties,size);
show_array(properties,size);
}
cout<<"Done.\n";
cin.get();
cin.get();
return0;
}
intfill_array(doublear[],intlimit)
{
usingnamespacestd;
doubletemp;
inti;
for(i=0;i{
cout<<"Entervalue#"<<(i+1)<<":
";
cin>>temp;
if(!
cin)
{
cin.clear();
while(cin.get()!
='\n')
continue;
cout<<"Badinput;inputprocessterminated.\n";
break;
}
elseif(temp<0)
break;
ar[i]=temp;
}
returni;
}
7.8arrfun4.cpp
voidshow_array(constdoublear[],intn)
{
usingnamespacestd;
for(inti=0;i{
cout<<"Property#"<<(i+1)<<":
$";
cout<}
}
voidrevalue(doubler,doublear[],intn)
{
for(inti=0;iar[i]*=r;
}
#include
constintArSize=8;
intsum_arr(constint*begin,constint*end);
intmain()
{
usingnamespacestd;
intcookies[ArSize]={1,2,3,8,16,32,64,128};
intsum=sum_arr(cookies,cookies+ArSize);
cout<<"Totalcookieseaten:
"<sum=sum_arr(cookies,cookies+3);
cout<<"Firstthreeeatersate"<sum=sum_arr(cookies+4,cookies+8);
cout<<"Lastfoureatersate"<return0;
}
intsum_arr(constint*begin,constint*end)
{
constint*pt;
inttotal=0;
for(pt=begin;pt!
=end;pt++)
total=total+*pt;
returntotal;
}
7.9strgfun.cpp
#include
unsignedintc_in_str(constchar*str,charch);
intmain()
{
usingnamespacestd;
charmmm[15]="minimum";
char*wail="ululate";
unsignedintms=c_in_str(mmm,'m');
unsignedintus=c_in_str(wail,'u');
cout<cout<return0;
}
7.10strgback.cpp
unsignedintc_in_str(constchar*str,charch)
{
unsignedintcount=0;
while(*str)
{
if(*str==ch)
count++;
str++;
}
returncount;
}
#include
char*buildstr(charc,intn);
intmain()
{
usingnamespacestd;
inttimes;
charch;
cout<<"Enteracharacter:
";
cin>>ch;
cout<<"Enteraninteger:
";
cin>>times;
char*ps=buildstr(ch,times);
cout<delete[]ps;
ps=buildstr('+',20);
cout<delete[]ps;
return0;
}
char*buildstr(charc,intn)
{
char*pstr=newchar[n+1];
pstr[n]='\0';
while(n-->0)
pstr[n]=c;
returnpstr;
}
7.11travel.cpp
#include
structtravel_time
{
inthours;
intmins;
};
constintMins_per_hr=60;
travel_timesum(travel_timet1,travel_timet2);
voidshow_time(travel_timet);
intmain()
{
usingnamespacestd;
travel_timeday1={5,45};
travel_timeday2={4,55};
travel_timetrip=sum(day1,day2);
cout<<"Two-daytotal:
";
show_time(trip);
travel_timeday3={4,32};
cout<<"Three-daytotal:
";
show_time(sum(trip,day3));
return0;
}
travel_timesum(travel_timet1,travel_timet2)
{
travel_timetotal;
total.mins=(t1.mins+t2.mins)%Mins_per_hr;
total.hours=t1.hours+t2.hours+(t1.mins+t2.mins)/Mins_per_hr;
returntotal;
}
voidshow_time(travel_timet)
{
usingnamespacestd;
cout<}
7.12atrctfun.cpp
#include
#include
structpolar
{
doubledistance;
doubleangle;
};
structrect
{
doublex;
doubley;
};
polarrect_to_polar(rectxypos);
voidshow_polar(polardapos);
intmain()
{
usingnamespacestd;
rectrplace;
polarpplace;
cout<<"Enterthexandyvalues:
";
while(cin>>rplace.x>>rplace.y)
{
pplace=rect_to_polar(rplace);
show_polar(pplace);
cout<<"Nexttwonumbers(qtoqiut):
";
}
cout<<"Done."<return0;
}
polarrect_to_polar(rectxypos)
{
usingnamespacestd;
polaranswer;
answer.distance=sqrt(xypos.x*xypos.x+xypos.y+xypos.y);
answer.angle=atan2(xypos.y,xypos.x);
returnanswer;
}
voidshow_polar(polardapos)
{
usingnamespacestd;
constdoubleRad_to_deg=57.29577951;
cout<<"distance="<cout<<",angle="<cout<<"degrees"<}
n
7.13atrctptr.cpp
#include
#include
structpolar
{
doubledistance;
doubleangle;
};
structrect
{
doublex;
doubley;
};
voidrect_to_polar(constrect*pxy,polar*pda);
voidshow_polar(constpolar*pda);
intmain()
{
usingnamespacestd;
rectrplace;
polarpplace;
cout<<"Enterthexandyvalues:
";
while(cin>>rplace.x>>rplace.y)
{
rect_to_polar(&rplace,&pplace);
show_polar(&pplace);
cout<<"Nexttwonumber(qtoquit):
";//不一定是q,因为cin其实只能判断字母和数字
}
cout<<"Done."<return0;
}
voidshow_polar(constpolar*pda)
{
usingnamespacestd;
constdoubleRad_to_deg=57.29577951;
cout<<"distance="<distance;
cout<<",angle="<angle*Rad_to_deg;
cout<<"degrees."<}
voidrect_to_polar(constrect*pxy,polar*pda)
{
usingnamespacestd;
pda->distance=sqrt(pxy->x*pxy->x+pxy->y*pxy->y);
pda->angle=atan2(pxy->y,pxy->x);
}
7.14topfive.cpp
#include
#include
usingnamespacestd;
constintSIZE=5;
voiddisplay(conststringsa[],intn);
intmain()
{
stringlist[SIZE];
cout<<"Enteryour"<"<for(inti=0;i{
cout<
";
getline(cin,list[i]);
}
cout<<"Yourlist:
"<display(list,SIZE);
return0;
}
voiddisplay(conststringsa[],intn)
{
for(inti=0;icout<
"<}
7.15arrobj.cpp
#include
#include
#include
constintSeasons=4;
conststd:
:
array:
string,Seasons>Snames={"Spring","Summer","Fall","Winter"};
voidfill(std:
:
array*pa);
voidshow(std:
:
arrayda);
intmain()
{
std:
:
arrayexpenses;
fill(&expenses);
show(expenses);
return0;
}
voidfill(std:
:
array*pa)
{
usingnamespacestd;
for(inti=0;i{
cout<<"Enter"<";
cin>>(*pa)[i];
}
}
voidshow(std:
:
arrayda)
{
usingnamespacestd;
doubletotal=0.0;
cout<<"\nEXPENSES\n";
for(inti=0;i{
cout<$"<total+=da[i];
}
cout<<"TotalExpenses:
$"<}
7.16recur.cpp
#include
voidcountdown(intn);
intmain()
{
countdo