c++程序设计原理与实践第三章课后答案.docx

上传人:b****1 文档编号:2453736 上传时间:2023-05-03 格式:DOCX 页数:18 大小:230.22KB
下载 相关 举报
c++程序设计原理与实践第三章课后答案.docx_第1页
第1页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第2页
第2页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第3页
第3页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第4页
第4页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第5页
第5页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第6页
第6页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第7页
第7页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第8页
第8页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第9页
第9页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第10页
第10页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第11页
第11页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第12页
第12页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第13页
第13页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第14页
第14页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第15页
第15页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第16页
第16页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第17页
第17页 / 共18页
c++程序设计原理与实践第三章课后答案.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c++程序设计原理与实践第三章课后答案.docx

《c++程序设计原理与实践第三章课后答案.docx》由会员分享,可在线阅读,更多相关《c++程序设计原理与实践第三章课后答案.docx(18页珍藏版)》请在冰点文库上搜索。

c++程序设计原理与实践第三章课后答案.docx

c++程序设计原理与实践第三章课后答案

“std_lib_facilities.h”这个头文件是《c++程序设计原理与实践》一直用到的头文件,要将此头文件放在你的文件目录中,下面我给出这个头文件:

//

//Thisisastandardlibrarysupportcodetothechaptersofthebook

//"Programming--PrinciplesandPracticeUsingC++"byBjarneStroustrup

//

#ifndefSTD_LIB_FACILITIES_GUARD

#defineSTD_LIB_FACILITIES_GUARD1

#include

usingnamespacestd;

//------------------------------------------------------------------------------

//Thecalltokeep_window_open()isneededonsomeWindowsmachinestoprevent

//themfromclosingthewindowbeforeyouhaveachancetoreadtheoutput.

inlinevoidkeep_window_open()

{

cin.get();

}

//------------------------------------------------------------------------------

#endif//STD_LIB_FACILITIES_GUARD

将上述代码拷贝到记事本中,把后缀.txt改为.h,放在你的根目录即可引用。

第3章对象,类型和值

第6题

#include"std_lib_facilities.h"

intmain()

{

inta;

intb;

intc;

intt;

cout<<"请您输入三个数:

\n";

cin>>a>>b>>c;

if(a>b)//如果a大于b,将a,b交换.

{

t=a;

a=b;

b=t;

}

if(a>c)

{

t=a;

a=c;

c=t;

}

if(b>c)

{

t=b;

b=c;

c=t;

}

cout<

}

下面是vc6.0的运行结果:

第7题

#include

#include

usingnamespacestd;

//------------------------------------------------------------------------------

 

intmain()

{

cout<<"请您输入三个字符串:

\n";

stringfirst;

stringsecond;

stringthird;

stringspace;

cin>>first>>second>>third;//读入三个字符串。

if(first>second)

{

space=first;

first=second;

second=space;

}

if(first>third)

{

space=first;

first=third;

third=space;

}

if(second>third)

{

space=second;

second=third;

third=space;

}

cout<

return0;

}

 

//------------------------------------------------------------------------------

Vc6.0运行结果如下:

第8题

#include"std_lib_facilities.h"

intmain()

{

cout<<"请您输入您需要测试的数:

\n";

inta;

cin>>a;

if(a%2==0)cout<<"您输入的数:

"<

elsecout<<"您输入的数:

"<

return0;

}

Vc6.0运行结果如下:

第9题

#include

#include

usingnamespacestd;

intmain()

{

stringstr;

cout<<"请您输入一个英文数字:

\n";

cin>>str;

if(str=="zero")cout<<"对应的阿拉伯数字是:

"<<"0\n";

elseif(str=="one")cout<<"对应的阿拉伯数字是:

"<<"1\n";

elseif(str=="two")cout<<"对应的阿拉伯数字是:

"<<"2\n";

elseif(str=="three")cout<<"对应的阿拉伯数字是:

"<<"3\n";

elseif(str=="four")cout<<"对应的阿拉伯数字是:

"<<"4\n";

elsecout<<"暂时超出处理范围\n";

return0;

}

Vc6.0运行结果如下:

第10题

这道题在第六章用了一章去讲述,大家如有疑问,可以对照看一下。

//计算器程序

//本程序的目的是实现四则运算。

//2013年7月19日写的这些代码。

//版本号为003

//总体设计思想是:

将表达式变成单词,通过语法分析达到符合运算规则的目的。

//还缺少大括弧,不能实现累计,不能实现科学计算器,不能输入一个'q'就停止等。

 

#include"std_lib_facilities.h"

//------------------------------------------------------------------------------

classToken{

public:

charkind;//whatkindoftoken

doublevalue;//fornumbers:

avalue

Token(charch)//makeaTokenfromachar

:

kind(ch),value(0){}

Token(charch,doubleval)//makeaTokenfromacharandadouble

:

kind(ch),value(val){}

};

//------------------------------------------------------------------------------

classToken_stream{

public:

Token_stream();//makeaToken_streamthatreadsfromcin

Tokenget();//getaToken(get()isdefinedelsewhere)

voidputback(Tokent);//putaTokenback

private:

boolfull;//isthereaTokeninthebuffer?

Tokenbuffer;//hereiswherewekeepaTokenputbackusingputback()

};

//------------------------------------------------------------------------------

//Theconstructorjustsetsfulltoindicatethatthebufferisempty:

Token_stream:

:

Token_stream()

:

full(false),buffer(0)//noTokeninbuffer

{

}

//------------------------------------------------------------------------------

//Theputback()memberfunctionputsitsargumentbackintotheToken_stream'sbuffer:

voidToken_stream:

:

putback(Tokent)

{

if(full)perror("putback()intoafullbuffer");

buffer=t;//copyttobuffer

full=true;//bufferisnowfull

}

//------------------------------------------------------------------------------

TokenToken_stream:

:

get()

{

if(full){//dowealreadyhaveaTokenready?

//removetokenfrombuffer

full=false;

returnbuffer;

}

charch;

cin>>ch;//notethat>>skipswhitespace(space,newline,tab,etc.)

switch(ch){

case';':

//for"print"

case'q':

//for"quit"

case'(':

case')':

case'+':

case'-':

case'*':

case'/':

case'%':

returnToken(ch);//leteachcharacterrepresentitself

case'.':

case'0':

case'1':

case'2':

case'3':

case'4':

case'5':

case'6':

case'7':

case'8':

case'9':

{

cin.putback(ch);//putdigitbackintotheinputstream

doubleval;

cin>>val;//readafloating-pointnumber

returnToken('s',val);//let'8'represent"anumber"

}

default:

perror("Badtoken");

}

}

//------------------------------------------------------------------------------

Token_streamts;//providesget()andputback()

//------------------------------------------------------------------------------

doubleexpression();//declarationsothatprimary()cancallexpression()

//------------------------------------------------------------------------------

//dealwithnumbersandparentheses

doubleprimary()

{

Tokent=ts.get();

switch(t.kind){

case'(':

//handle'('expression')'

{

doubled=expression();

t=ts.get();

if(t.kind!

=')')perror("')'expected");

returnd;

}

case's':

//按照惯例用‘8’代替数字类型,但本程序需要'8'参与运算,所以这里用's'表示数字类型。

returnt.value;//returnthenumber'svalue

default:

perror("primaryexpected");

}

}

//------------------------------------------------------------------------------

//dealwith*,/,and%

doubleterm()

{

doubleleft=primary();

Tokent=ts.get();//getthenexttokenfromtokenstream

while(true){

switch(t.kind){

case'*':

left*=primary();

t=ts.get();

break;

case'/':

{

doubled=primary();

if(d==0)perror("dividebyzero");

left/=d;

t=ts.get();

break;

}

case'%':

{

intd=primary();

if(d==0)perror("dividebyzero");

left=int(left)%d;//注意取余时这里进行了强制性转换,可能出现数据截断。

t=ts.get();

break;

}

default:

ts.putback(t);//puttbackintothetokenstream

returnleft;

}

}

}

//------------------------------------------------------------------------------

//dealwith+and-

doubleexpression()

{

doubleleft=term();//readandevaluateaTerm

Tokent=ts.get();//getthenexttokenfromtokenstream

while(true){

switch(t.kind){

case'+':

left+=term();//evaluateTermandadd

t=ts.get();

break;

case'-':

left-=term();//evaluateTermandsubtract

t=ts.get();

break;

default:

ts.putback(t);//puttbackintothetokenstream

returnleft;//finally:

nomore+or-:

returntheanswer

}

}

}

//------------------------------------------------------------------------------

intmain()//8被定义为数字类型,当与数字8有关的运算无法运行,本程序中将数字的类型定义为's'。

{try

{

cout<<"欢迎使用简易计算器"<<"(*^_^*)"<<":

"<<"\n";

cout<<"本计算程序能实现'+','-','*','/','%'以及括弧运算"<<"\n";

cout<<"请您输入一个数学表达式(本程序精确到双精度),以';'结束,以'q'退出"<<"\n";

while(cin){

Tokent=ts.get();

doubleval;

if(t.kind=='q')break;//'q'forquit

if(t.kind==';')//';'for"printnow".

cout<<"="<

else

ts.putback(t);

val=expression();

}

keep_window_open();

}

catch(exception&e){

cerr<<"error:

"<

keep_window_open();

return1;

}

catch(...){

cerr<<"Oops:

unknownexception!

\n";

keep_window_open();

return2;

}

return0;

}

//------------------------------------------------------------------------------

Vc6.0环境下的运行结果如图:

第11题

#include"std_lib_facilities.h"

intmain()

{

cout<<"请输入您的一美分、五美分、十美分、二十五美分、半美元、和一美元硬币的数量:

\n";

intA,B,C,D,E,F;

cin>>A>>B>>C>>D>>E>>F;

intAWS=1,BWS=1,CWS=1,DWS=1,EFWS=1,N=10;//定义初始位数和进位位数。

while(A>=N)//当A>=10时判断为两位数。

{AWS+=1;

N=N*10;}//两位数的进位为100.

N=10;//一位数的进位仍旧赋值为10.

while(B>=N)

{BWS+=1;

N=N*10;}

N=10;

while(C>=N)

{CWS+=1;

N=N*10;}

N=10;

while(D>=N)

{DWS+=1;

N=N*10;}

N=10;

while(F*2+E>=N)

{EFWS+=1;

N=N*10;}

intX=AWS;//将x通过比较赋值为,所有位数最高的那位。

if(X

X=BWS;

if(X

X=CWS;

if(X

X=DWS;

if(X

X=EFWS;

intZWS=X+1;

inta=ZWS-AWS;

cout<<"youhave";

while(a>0)

{cout<<"";

a-=1;}

if(A==1)cout<

if(A>1)cout<

cout<<"youhave";

a=ZWS-BWS;

while(a>0)

{cout<<"";

a-=1;}

if(B==1)cout<

if(B>1)cout<

cout<<"youhave";

a=ZWS-CWS;

while(a>0)

{cout<<"";

a-=1;}

if(C==1)cout<

if(C>1)cout<

cout<<"youhave";

a=ZWS-DWS;

while(a>0)

{cout<<"";

a-=1;}

if(D==1)cout<

if(D>1)cout<

cout<<"youhave";

a=ZWS-EFWS;

while(a>0)

{cout<<"";

a-=1;}

if(F*2+E==1)cout<

if(F*2+E>1)cout<

cout<<"合计值:

"<<"$:

"<

cout<

keep_window_open();

}

Vc6.0下运行结果如下:

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

当前位置:首页 > 求职职场 > 简历

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

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