《C++程序设计课后习题答案.pdf》由会员分享,可在线阅读,更多相关《C++程序设计课后习题答案.pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1章C+语言简介一、简答题1.请介绍C+语言的发展过程C+语言源于C 语言,1972年,AT&T公司设计了 C 语言并得到广泛应用。为了使得C 语言能够支持面向对象技术,在 2 0 世 纪 80年代,Bell实验室设计了一门新的语言C+。1985年起,C+语言开始进入商业应用阶段,并由此进入了高速发展时期,各种面向对象程序设计思想与技术逐步融入到C+语言之中。在 C+语言标准中,先后提供了对虚函数 重载、继承 模板和命名空间技术的支持。现在的 C+语言已经是一门完全独立的语言,而不再是对C 语言的简单扩充。2.试比较C+语言与Java语言的优缺点。(1)安全性。用Java语言编写的程序,其安
2、全性要高于用C+语言编写的程序。Java语言对语法做了更多的限制,添加了更多的数据检测内容,从而减少了程序出错的概率。更重要的是,Java语句取消了指针数据类型,并且添加了内存自动回收功能,从而避免了系统内容出错的情况。而这一切都是C+程序设计中极其容易出现错误的地方。(2)效率。虽然C+程序的安全性相对低于Java程序,但是,C+程序的运行效率确是Java程序难以企及的。一方面,Java程序需要 Java虚拟机对中间代码进行解释执行,而 C+程序则是一次编译后可以立即执行;另一方面,在 C+程序中,指针数据类型的使用可以大幅度提高程序运行效率和程序的灵活性,而这都是Java程序所不具备的。二
3、、程序设计题创建一个简单C+程序,在屏幕上显示This is a C+programo【步骤】用户利用VC6.0开发工具,创建一个空的Win32控制台项目,在项目中添加一个空的cpp文件,添加如下代码。#include using namespace std;int main(int argc,char*argv)(cout This is a C+program.endl;system(PAUSE);return 0;)第2章 数据描述与基本运算简答题1.请指出下面标识符中,哪些是合法的变量名称。abc,_3x,_b为合法变量名称,其他为非法。2.请指出下面哪些是合法的常量取值。23,3e-
4、5,n,12.56E,abc为合法常量取值。3.请给出下面表达式的取值。(1)-3+4*5-6 =11(2)-3+4%5-6 =-5(3)-3*4%-6/5=0(4)(7+6)%5/2 =14.请完成下列表达式。(1)sin300-tan20:sin(30*3.14/180)-tan(20*3.14/180)(2)232-:pow(232,-sqrt(a*a+b*b)5.求表达式值。(1)1 10=0;(2)!(5 =15)|(2 4-3)=true;第3章C+语句一、简答题1.答:语句是程序设计语言中的最小可执行单位,是构成程序的基础。语句由表达式构成,与表达式相比较,语句需要有分号表示语句
5、结束。2.答:C+语言与C语言有显著不同,首先,在语法格式上,C+除了兼 容C语言语法外,还增加了很多新的表达方式,更重要的是,C+语言支持面向对象程序设计,涵盖了继承 封装与多态等重要内容,这是C语言中所不具备的。3.(需要在程序中加入c m a t h头函数:#incl ude )(1)pow(1+x*y,6)(2)a*s i n(x+5)*s i n(x +5)+b*cos(6*y-c);(3)4*y*(1-pow(x,y)(4)(4/y)/(5*x)/(7*y)-6/(5*z-8*x)4.Continue与break都表示终止执行当前循环过程,continue语句要求重新回到循环开始处
6、,重新判断循环条件,决定是否执行循环体;而break则要求退出循环,执行循环体后的语句。5.typedef struct _tmp(int age;char sex;TMP;TMP tmpInf10;二、程序设计题1.参考代码#include#include using namespace std;int main(int argc,char*argv)(double y=0.0;int x=0;cout Please input x:;cin x;if(x-l)y=-x+9;else if(x 0)y=2*x+4.5;else if(x 1)y=x*x+4*x-7;elsey=3*sin(x
7、)+12;cout y=y endl;)2.参考代码#include#include using namespace std;int main(int argc,char*argv)(double a=0.0;double b=0.0;double c=0.0;double x=0.0;double delta=0.0;cout Please input a:;cin a;cout Please input b:;cin b;cout Please input c:;cin c;delta=sqrt(b*b-4*a*c);if(delta 0)cout x is no real number!
8、endl;else if(delta=0)cout x=-b/(2*a)endl;elsecout x=(-b+delta)/(2*a)(-b-delta)/(2*a)endl;return 0;)3.参考代码#include#include using namespace std;int fact(int a)(if(a=0|a=1)return 1;elsereturn fact(a-1)*a;)int main(int argc,char*argv)(int x=0;double y=0.0;double tmp=0.0;int i=0;cout Please input x:;cin
9、x;do(tmp=pow(x,i)/fact(i);y=y+tmp;i+;while(tmp=pow(10,-8);cout eA x =y endl;return 0;)4.参考代码#include using namespace std;int leapyear(int a)(if(a%4=0&a%100!=0)|(a%400=0)return a;elsereturn-1;int main(int argc,char*argv)(int year;cout Please input year:;cin year;if(leapyear(year)0)cout year is leapye
10、ar.endl;elsecout year is not leapyear.endl;return 0;)第4章数组与结构体一、简答题1.字符数组初始化通常两种形式,一是在定义时将其初始为空串,即赋值为0;另外是使用memset函数,将字符数组设定为空或其他指定形式。2.结构体与共用体有很多相似地方,但也有重要区别,主要是共用体在存储时使用覆盖技术,可以共用同一个存储空间,而结构体没有这个功能。二、程序设计题1.参考代码#include using namespace std;int main(int argc,char*argv)int scores8=0;int maxscore=0;in
11、t minscore=0;int totalsocre=0;double avgscore=0.0;int i=0;for(i=0;i 8;i+)cout Please input NO.i+1 score:;cin scoresi;)maxscore=scores0J;minscore=scores 0;totalsocre=scores 0;for(i=1;i maxscore)maxscore=scoresi;if(scoresi minscore)minscore=scoresi;totalsocre=totalsocre+scores i;)avgscore=(totalsocre-
12、maxscore-minscore)/6.0;cout MaxScore:maxscore endl;cout MinScore:minscore endl;cout AvgScore:avgscore endl;return 0;)2.参考代码#include using namespace std;typedef struct _stuinfchar name16;int sex;/0-man,1-womanint age;JSTUINF;int main(int argc,char*argv)(STUINF stuInf10=0;int i=0;int ages=0;int mages=
13、0;int wages=0;int mcount=0;int wcount=0;double avgages=0.0;for(i=0;i 10;i+)(cout Please input NO.i+1 Student information:endl;cout NAME:;cin stulnfi.name;cout SEX(0-MAN;1-WOMAN):;cin stulnfi.sex;cout AGE:;cin stulnfi.age;)for(i=0;i 10;i+)(if(stulnfi.sex=0)|mages+=stulnfi.age;mcount+;)elsewages+=stul
14、nfi.age;wcount+;)ages=mages+wages;cout Man Avg Ages:mages/double(mcount)endl;cout Woman Avg Ages:wages/double(wcount)endl;cout Avg Ages:ages/10.0;return 0;第5章 指 针一、简答题1 .运行结果:3231232.运行结果:a=5;b=-2;c=7二、程序设计题参考代码#include#include using namespace std;void getStr(char*inStr,char*outStr,int inPos)(int i=
15、0;char*tmp=inStr;while(*tmp!=0&i inPos)|tmp+;i+;)i=0;while(*tmp!=0)(*outStr=*tmp;outStr+;tmp+;)*outStr=0;int main(int argc,char*argv)char srcStr64=0;char dstStr64 =0;char*p=NULL;int pos=0;int startpos=0;int i=0;fflush(stdin);cout Please input Source String:;cin.getline(srcStr,sizeof(srcStr);cout Ple
16、ase input Start Position:;cin startpos;getStr(srcStr,dstStr,startpos);cout dstStr endl;return 0;)第6章 函 数一、选择题C C A C二、程序设计题参考代码#include#define ARRCOUNT 4using namespace std;void test(int(&inArr)ARRCOUNT)(int i=0;int j=0;int tmp=0;for(i=0;i ARRCOUNT;i+)(for(j=0;jARRCOUNT-i-l;j+)|if(inArrj inArrfj+1)(
17、tmp=inArrj;inArrfj=inArrj+1;inArrj+1=tmp;)int main()(int arrARRCOUNT=23,15,56,0;test(arr);int i=0;for(i=0;i ARRCOUNT;i+)cout arri endl;)第7章类与对象一、选择题D C D D C二、程序设计题参考代码#include using namespace std;class employeepublic:employee();-employee();void changename(char*inStr);void display();protected:char n
18、ame16;char addr64;char postno8;);employee:employee()(memset(name,0,sizeof(name);memset(addr,0,sizeof(addr);memset(postno,0,sizeof(postno);)employee:employee()memset(name,0,sizeof(name);memset(addr,0,sizeof(addr);memset(postno,0,sizeof(postno);)void employee:changename(char*inStr)(memset(name,0,sizeo
19、f(name);strcpy(name,inStr);void employee:display()(cout Name:name endl;cout Addr:addr endl;cout PostNO:postno endl;)int main(int argc,char*argv)(employee worker;worker.displayO;worker.changename(Tom);worker.displayO;return 0;)第8章类的继承与派生一、选择题1 4 C A D B;58 C D B A二、程序设计题1.参考代码#include using namespace
20、 std;class wehicle(public:wehicle(int x,double y);wehicle();void listinf();protected:int wheels;int weight;);wehicle:wehicle(int x,double y)wheels=x;weight=y;)wehicle:wehicle()void wehicle:listinf()(cout wheels:wheels endl;cout weight:weight endl;)class car:public wehicle(public:car(int x,double y,i
21、nt z);void listcar();private:int passage_load;);car:car(int x,double y,int z):wehicle(x,y)(passage_load=z;)void car:listcar()(cout car wheels:wheels endl;cout car weight:weight endl;cout car passages:passage_load endl;)int main(int argc,char*argv)(wehicle whc(4,5.0);whc.listinf();car mycar(4,5.0,4);
22、mycar.listcarQ;return 0;2.参考声明如下#include using namespace std;class building(protected:int floors;int rooms;int areas;);class house:public building(protected:int bedrooms;int bathrooms;);class office:public buildingint fireextings;int tels;);3.参考代码#include using namespace std;class sofa(public:sofa()
23、;sofa();void watchTV(););void sofa:watchTV()cout You can watchTV!endl;class bedpublic:bed();bed();void sleep();void setweight(););void bed:sleep()(cout You can sleep!endl;)void bed:setweight()cout You can setweight!endl;class sofabed:public bed,public sofapublic:sofabed();sofabed();void foldbed(););
24、sofabed:sofabed()(cout This is sofabed!endl;void sofabed:foldbed()(cout You can foldbed!endl;int main()(sofabed thisbed;thisbed.setweightQ;thisbed.sleep();thisbed.foldbed();thisbed.watchTV();return 0;)第9章多态性与虚函数一、选择题C C C C C二、程序设计题1.参考代码#include using namespace std;class CSHARP/父类(public:CSHARP(int
25、 inA=-1,int inB=-1,int inC=-1);-CSHARPO;virtual double SharpArea()虚函数return 0.0;);void listlnf(char*inStr);public:double dS;double a;double b;double c;;CSHARP:CSHARP(int inA,int inB,int inC)(a=inA;b=inB;dS=0.0;void CSHARP:listlnf(char*inStr)/父类构造函数cout inStr 面积:dS endl;class CTriAngle:public CSHARP
26、三角形子类public:CTriAngle(int triA,int triB,int triC):CSHARP(triA,triB,triC)();double SharpArea();;double CTriAngle:SharpArea()(dS=a*b/2.0;return dS;)class CSquare:public CSHARP 矩形子类(public:CSquare(int inA,int inB,int inC):CSHARP(inA,inB,inC));double SharpArea();double SharpLength(););double CSquare:Sha
27、rpArea()dS=(double)(a*b);return dS;class CCirCle:public CSHARP 圆形子类public:CCirCle(int a,int b,int c):CSHARP(a,b,c)double SharpArea(););double CCirCle:SharpArea()dS=3.1415926*a*a;return dS;)int main(int argc,char*argv)主函数(CTriAngle myTriAngle(3,4,5);myTriAngle.Sharp Area();myTriAngle.listlnf(三角形:);CS
28、quare mySquare(3,4,-1);my Square.Sharp Area();mySquare.listlnf(正方形:);CCirCle myCircle(5,-1,-1);myCircle.Sharp Area();myCircle.listlnf(圆形:);return 0;)2.参考代码#include#include#include#include/using namespace std;class MYSTR(public:MYSTR();MYSTR();void listStr();void getStr(char*inStr);friend MYSTR opera
29、tor+(MYSTR strl,MYSTR str2);private:char myStr128;);MYSTR:MYSTR()(memset(myStr,0,sizeof(myStr);)MYSTR:MYSTR()(memset(myStr,0,sizeof(myStr);)void M YSTR:getStr(char*inStr)(strcpy(myStr,inStr);)void MYSTR:listStr()(coutvv当前字符串为:endl;cout myStr endl;MYSTR operator+(MYSTR strl,MYSTR str2)MYSTR tmp;strca
30、t(strl.myStr,str2.myStr);return strl;)int main(int argc,char*argv)(MYSTR firstStr;MYSTR secondStr;char inStr128;cout 请输入字符串:endl;memset(inStr,0,sizeof(inStr);fflush(stdin);cin.getline(inStr,sizeof(inStr);firstStr.getStr(inStr);memset(inStr,0,sizeof(inStr);fflush(stdin);cin.getline(inStr,sizeof(inStr
31、);secondStr.getStr(inStr);firstStr=firstStr+secondStr;firstStr.listStr();return 0;)第10章I/O流与文件操作一、简答题1.在 C+语言中,数字格式化包括设置显示模式,数字对其位置与数字显示精度等方面的要求。为此,用户需要在cout对象中加入格式控制语句,其语句主要功能如下表。格式控制符功能hex以十六进制显示数字setw(n)设定显示数据宽度为n 字符setfill(c)设定填充字符为csetprecision(n)设定数字精度为小数点后n 位setiosflags(iso:fixed)设定以定点方式显示浮点数
32、setiosflags(ios:right)设定数据右对齐setiosflags(ios:show强制显示小数点point)setiosflags(ios:showpos)强制显示加号2.参考答案通常情况下,建议用户使用下面语句输入字符串。cin.getline(变量名称,提取长度,终止符);当用户使用cin对象的geline函数来提取流中的数据时,会自动根据提取长度与终止符号来决定提取的具体内容。虽然getline函数以回车符作为提取终止标志,但是回车符本身并不提取。此外,用户需要在使用cin对象的getline函数前,执行fflush(stdin)语句来清空缓冲区。二、程序设计题参考代码参
33、考代码(本题涉及到 重载,需要在VC2003及以上版本运行)#include#include#include using namespace std;class STUSCOREpublic:STUSCORE();STUSCORE();friend istream&operator (istream&,STUSCORE&);friend ostream&operator (ostream&,STUSCORE&);/protected:char name8;char tel16J;char addr32;);STUSCORE:STUSCORE()(memset(tel,0,sizeof(tel)
34、;memset(name,0,sizeof(name);memset(addr,0,sizeof(addr);)STUSCORE:STUSCORE()memset(tel,0,sizeof(tel);memset(name,0,sizeof(name);memset(addr,0,sizeof(addr);)istream&operator (istream&inData,STUSCORE&sc)(cout 请输入信息:endl;co u t 姓名:;inData sc.name;cout 电话:;inData sc.tel;cout 地址:;inData sc.addr;return inD
35、ata;)ostream&operator (ostream&outData,STUSCORE&sc)(outData setw(8)sc.name setw(8)sc.tel setw(16)sc.addr endl;return outData;int main(int argc,char*argv)ofstream outFile;STUSCORE sc3;char title32=0;int i=0;strcpy(title,学生信息n);outFile.open(d:message.txt,ios:trunc|ios:out);outFile.write(title,strlen(title);outFile.closeQ;for(i=0;i 3;+i)(cin sci;)outFile.open(d:message.txt,ios:out|ios:app);outFile setw(8)姓名;outFile setw(16)电 话 setw(24)地址”endl;for(i=0;i 3;+i)outFile sci endl;)outFile.closeQ;system(PAUSE);return 0;)