C++程序设计案例教程习题答案 科学出版社_第1页
C++程序设计案例教程习题答案 科学出版社_第2页
C++程序设计案例教程习题答案 科学出版社_第3页
C++程序设计案例教程习题答案 科学出版社_第4页
C++程序设计案例教程习题答案 科学出版社_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+程序设计案例教程部分习题答案程序设计案例教程部分习题答案习题一习题一1 运行结果:enter i j:9 8 (从键盘输入 9 和 8)i=9,j=8i+j=17i-j=1i*j=722 运行结果:56 34(从键盘输入)max(56,34)=563 错误:(1) 没有包含头文件;(2)main()函数没有返回值4 错误:(1) 缺少语句:using namespace std; (2) main()函数没有返回值;(3)变量 a 没有声明;(4)语句:coutb=bendl;严格来说应该为:coutb=bendl;5 错误:(1) 缺少语句:using namespace std; (2

2、) main()函数应该包含 return 语句;(3)COUT 不应该大写;(4)变量 j 没有初始化6 运行结果:您好!在哪儿呢?在沈阳.一会儿见!习题二习题二一、程序阅读一、程序阅读1 运行结果:Enter a b:15 8(从键盘输入 15 和 8)d=-72 运行结果:A=8CH+2=mD-5.8=2.73 运行结果:0,11,0注意此题书中有错误:将最后一行语句改为:return 0;4 运行结果:325 运行结果:3,746 运行结果:13898$7 运行结果:9878 运行结果:79111315ok!9 运行结果:7531-110.运行结果:10二、编程题二、编程题1程序如下:

3、#includeusing namespace std;int main()double a,b,c,d,e,sum,avg;cinabcde;sum=a+b+c+d+e;avg=sum/5;coutsum=sumendl;coutavg=avgendl;return 0;2程序如下:#includeusing namespace std;int main()int a,b,x,y;cinab;x=(a+b)*(a+b);y=a*a+2*a*b+b*b;if (x=y) coutyesendl;else coutnoendl;return 0;3程序如下:#include using name

4、space std;int main()char a100, *p;couta;cout= a; -p)putchar(*p);coutendl;return 0;4程序如下:#includeusing namespace std;int main()int n,sum=0;for (n=1;n=100;n=n+2)sum=sum+n;coutsum=sumendl;return 0;5程序如下:#includeusing namespace std;int main()int a,b,num1,num2,temp;coutplease input two numbersnum1num2;if

5、 (num1)temp=num1;num1=num2;num2=temp;a=num1;b=num2;while (b!=0)temp=a%b;a=b;b=temp;cout最大公约数=aendl;cout最小公倍数=num1*num2/aendl;return 0;6 程序如下:#include using namespace std;int main()int n,a;int result = 0;coutn;for (int i = n; i = 1; i-)a=0;for (int j=1;j=i;j+)a+=j;result += a;cout最终结果为: resultendl;re

6、turn 0;7 程序如下:#includeusing namespace std;int main()int n,t,number=15;double a=2,b=1,s=0;for (n=1;n=number;n+)s=s+a/b;t=a;a=a+b;b=t;coutsum is:sendl;return 0;8 程序如下:#include using namespace std;int main()double e=1;double jc=1;int i=1;while(1/jc=1e-6)e=e+1/jc;i+;jc=jc*i;coute=eendl;return 0;习题三习题三一、

7、填空题1 x2 p=new int(10)3 10、194 new、delete5 b9、b1二、选择题1D2. D3. B4. B5. B6A三、程序阅读1运行结果:1111211331146411510105116152015611721353521712运行结果:intone:5rsomeref:5intone:7rsomeref:73运行结果:BCDEFGHIJKLMNOPQRSTDEFGHIJKLMNOPQRSTTTRRSTPPQRSTNNOPQRST4运行结果:9191930 1 2 3 15 16 17 18 1919 18 17 16 155运行结果:2四、编程题1程序如下:#

8、include using namespace std;int main()int array10;int i,max,min;for(i=0;iarrayi;max=array0;min=array0;for(i=1;imax)max=arrayi;if(arrayimin)min=arrayi;coutThe largest number is maxendl;coutThe smallest number is minendl;return 0;2程序如下:#includeusing namespace std;int main()int a35=0;int b54=0;int c34=

9、0;int i,j,k;cout请输入一个 3 行 5 列的矩阵:endl;for(i=0;i3;i+)for(j=0;jaij;cout请输入一个 5 行 4 列的矩阵:endl;for(i=0;i5;i+)for(j=0;jbij;for(i=0;i3;i+)for(j=0;j4;j+)cij=0;for(k=0;k5;k+)cij+=ajk*bkj;cout矩阵的乘积:endl;for(i=0;i3;i+)for(j=0;j4;j+)coutcij ;coutendl;return 0;3程序如下:#include using namespace std;void alter(float

10、 &x,float &y)float m,n;m=x;n=y;x=m*n;y=m+n;int main()float a,b;coutPlease input two numbers:ab;alter(a,b);coutAfter changed:endl;couta,bendl;return 0;习题四习题四一、填空题1参数传递、执行函数体、返回调用位置2常量、const3Fun(5,100)4inline5程序域、文件域、函数域和块域二、选择题1.A2. D3. C4. C5. D6.A7.A8.A9.D10.A三、程序阅读1运行结果:a=3 b=22运行结果:x=50,y

11、=303运行结果:b=16.0988input a=2 (从键盘输入 2)F(a)=-0.14运行结果:Sum of 4powers of integers from 1 to 6=22755运行结果:6,6,66运行结果:107运行结果:In Mainx=5,y=1,n=1In Funx=6,y=14,n=4In Mainx=5,y=1,n=4四、编程题1程序如下:#includeusing namespace std;int main()int idec;int ibase;char strdr20, t;int i, idr, p=0;cout请输入一个进制数及要转换的进制数:ideci

12、base;while(idec!=0)idr=idec % ibase;if(idr=10) strdrp+=idr-10+65;else strdrp+=idr+48;idec/=ibase;for(i=0; ip/2; i+)t=strdri;strdri=strdrp-i-1;strdrp-i-1=t;strdrp=0;coutstrdrendl;return 0;2程序如下:#includeusing namespace std;int main()int num,i=0,temp,flag=0;cinnum;while(1) temp=num%10;if(temp%2=0)flag+

13、;break;num/=10;if(num=0)break;if(flag)coutNOendl;elsecoutYESendl;return 0;3程序如下:#include #include using namespace std;int main()int n,i;double sum=0;coutPlease input a number(1,2,3,4 or 5):n;for(i=1;i=20;i+)sum+=pow(n,i);coutsumendl;return 0;4程序如下:#include using namespace std;int main()int num,digit

14、;coutnum;cout整数 num 的逆序数为: ;dodigit=num%10;coutdigit;num/=10;while(num);coutendl;return 0;5程序如下:#includeusing namespace std;#include int main()const int N=5;char aN100=0;char t100=0;int i,j;for(i=0;iai;for(i=0;ii;j-)if(strcmp(aj,aj-1)0)strcpy(t,aj);strcpy(aj,aj-1);strcpy(aj-1,t);for(i=0;iN;i+)coutai

15、endl;return 0;习题五习题五一、填空题1数据成员、成员函数2private、protected、public3private、public4自动、创建并初始化对象5构造函数6析构函数7友元函数8堆对象9this、正在被成员函数操作的对象1010、10二、选择题1D2. C3. D4.A5.C6. C7. C8. C9A10. C11. B12. B13. C14.A15. D三、程序阅读1有四处错误:(1)int i=0;数据成员在类的定义中不能直接初始化(2)void Sample();构造函数没有返回值类型;(3)Sample(int value);析构函数无参数;(4)析构函

16、数不能重载。2有四处错误:(1)Sample(int a=0,b=1);参数 b 没有说明类型;(2)disp();没有给出返回值类型;(3)void Sample(int a);析构函数不能有返回值类型,也不能有参数;(4)Sample:Sample(int a=0,int b=1)默认值重复定义,只需在函数说明中给出即可。3有二处错误:(1)Sample(int a)X=a;常数据成员只能用初始化列表的形式进行初始化;(2)a.Print();常对象只能调用常成员函数。4无错误,运行结果如下:Const:X=10X=205运行结果:2,510,206运行结果:22347运行结果:38运行结

17、果:E2-C16-四、编程题1程序如下:#include using namespace std;class Datepublic:void SetDate(int y,int m,int d)year=y;month=m;day=d;intAddDay()return day+;void Display()coutday/month/yearendl;private:int year,month,day;int main()Date today,tomorrow;today.SetDate(2010,7,20);today.AddDay();tomorrow=today;tomorrow.D

18、isplay();return 0;2程序如下:#include using namespace std;class Rectanglepublic:Rectangle(double a=1,double b=1)length=a;width=b;void SetValue(double m,double n)length=m;width=n;double Perimeter()return 2*(length+width);double Area()return length*width;private:double length,width;int main()Rectangle r;r.

19、SetValue(10,20);coutr.Perimeter()endl;coutr.Area()endl;return 0;3程序如下:#include using namespace std;class Timepublic:Time();Time(int h,int m);void SetTime(int h1,int m1)hour=h1;minute=m1;friend void GetTime12(Time & t);friend void GetTime24(Time & t);private:int hour,minute;Time:Time()hour=0;

20、minute=0;Time:Time(int h,int m)hour=h;minute=m;void GetTime12(Time & t)bool pm;int hours;if(t.hour12)hours=t.hour-12;pm=true;elsehours=t.hour;pm=false;if (pm)coutTime is hours:t.minutePMendl;elsecoutTime is hours:t.minuteAMendl;void GetTime24(Time & t)coutTime is t.hour:t.minuteendl;int main

21、()Time t1,t2;t2.SetTime(16,20);GetTime12(t1);GetTime24(t1);GetTime12(t2);GetTime24(t2);return 0;4程序如下:#include #include using namespace std;class Studentpublic:Student();void GetName(string n);void GetGender(char g);void GetAge(int a);void Display()coutName:nameendl;coutGender:genderendl;coutAge:age

22、endl;private:string name;char gender;int age;void Student:GetName(string n)name=n;void Student:GetGender(char g)gender=g;void Student:GetAge(int a)age=a;int main()Student s;string sname;char sgender;int sage;coutPlease input name:sname;s.GetName(sname);coutPlease input gender:sgender;s.GetGender(sge

23、nder);coutPlease input age:sage;s.GetAge(sage);s.Display();return 0;5程序如下:#include using namespace std;class Studentpublic:Student()score=0;Student(double s)score=s;totalscore+=score;count+;static double TotalSum()return totalscore;static double Average()return totalscore/count;private:double score;

24、static double totalscore;static int count;double Student:totalscore=0;int Student:count=0;int main()Student s5=Student(98),Student(76),Student(80),Student(88),Student(68);coutThe total score is Student:TotalSum()endl;coutThe average score isStudent:Average()endl;return 0;6程序如下:#include #include usin

25、g namespace std;class Bookpublic:Book()Book(string bn,string an,int sale)bookname=bn;author=an;salecount=sale;void SetBook(string b,string a,int s)bookname=b;author=a;salecount=s;void Print()coutBook:booknameendl;coutAuthor:authorendl;coutSale acount:salecountendl;private:string bookname,author;int

26、salecount;int main()Book b4=Book(C+,Mary,100),Book(Java,John,56);b2.SetBook(English,Susie,450);b3.SetBook(Datastructure,Joe,45);for(int i=0;i4;i+)bi.Print();return 0;习题六习题六一、填空题1公有继承、保护继承、私有继承2基类、派生类3单继承、多继承4代码重用5公有的、私有的6基类、子对象、新增成员7 : : 、同名覆盖8派生、基、构造、赋值二、选择题1C2. C3. C4. D5.A6. C7. B8. D三、程序阅读1. 运行结

27、果:constructing base classconstructing sub classdestructing sub classdestructing base class2运行结果:constructing base classn=1constructing base classn=3constructing sub classm=2destructing sub classdestructing base classdestructing base class3运行结果:10,204运行结果:215错误语句:b.i=4;私有继承的派生对象不对直接访问基类的公有成员,因为基类的公有成

28、员在派生类中变成私有属性,不能被对象直接访问。可以通过增加成员函数,由成员函数来访问。6错误语句:c.i=3;访问出现二义性,因为基类 A 和 B 中均有公有的数据成员 i,在派生类中都可以通过对象 c 来访问,但是这种访问形式系统无法辨认是基类 A 的成员还是基类 B 的成员。可以通过作用域运算符来访问:c.A:i=3;或 c.B:i=3;的形式进行。7运行结果:Aconstructing ,data not evaluatedAconstructing ,data not evaluatedB constructing ,data not evaluatedAconstructing ,d

29、ata evaluatedAconstructing ,data not evaluatedB constructing ,AevaluatedAconstructing ,data evaluatedAconstructing ,data not evaluatedB constructing ,data evaluatedB destructingAdestructingAdestructingB destructingAdestructingAdestructingB destructingAdestructingAdestructing四、请参阅教材进行理解,答案略。五、编程题1程序如

30、下:#include #include using namespace std;class Studentpublic:Student()Student(string n,int no,int a,string m)name=n;id=no;age=a;major=m;void Display()coutName:nameendl;coutID:idendl;coutAge:ageendl;coutMajor:majorendl;private:string name;int id,age;string major;class Master:public Studentpublic:Maste

31、r(stringname1,intid1,intage1,stringmajor1,stringadvisor1):Student(name1,id1,age1,major1)advisor=advisor1;void Display()Student:Display();coutAdvisor:advisorendl;private:string advisor;int main()Master person(Mia,1001,22,Computer Science,Prof. Smith);person.Display();return 0;2程序如下:#include #include

32、using namespace std;class Vehiclepublic:Vehicle(int wh,double we)wheels=wh;weight=we;int GetWheels()return wheels;double GetWeight()return weight;void Display()coutWheels:wheelsendl;coutWeight:weightendl;private:int wheels;double weight;class Car:public Vehiclepublic:Car(int wh,double we,int pa):Veh

33、icle(wh,we)passenger_load=pa;int GetPassenger()return passenger_load;void Display()coutThe car is:endl;Vehicle:Display();coutPassenger load:passenger_loadendl;private:int passenger_load;class Truck:public Vehiclepublic:Truck(int wh,double we,int pa,double load):Vehicle(wh,we)passenger_load=pa;payloa

34、d=load;int GetPassenger()return passenger_load;double GetPayload()return payload;void Display()coutThe truck is:endl;Vehicle:Display();coutPassenger load:passenger_loadendl;coutPay load:payloadendl;private:int passenger_load;double payload;int main()Car c(4,2,5);Truck t(6,5,3,10);c.Display();t.Displ

35、ay();return 0;3程序如下:#include #include using namespace std;class Studentpublic:Student()Student(string n,int no)name=n;id=no;void Display()coutName:nameendl;coutID:idendl;private:string name;int id;class Teacherpublic:Teacher()Teacher(string u)unit=u;void Display()coutUnit:unitendl;private:string nam

36、e,unit;classAssistant:public Student,public Teacherpublic:Assistant(string n,int i,string u,string c):Student(n,i),Teacher(u)course=c;void Display()Student:Display();Teacher:Display();coutCourse:courseendl;private:string course;int main()Assistant person(Mia,1001,Computer Science,C+ Programming);per

37、son.Display();return 0;4程序如下:#include #include using namespace std;const double pi=3.14;class Circlepublic:Circle(double a)r = a;double Area()return pi * r * r;private:double r;class Tablepublic:Table(double h,string c)height=h;color=c;void Display()coutHeight:heightendl;coutColor:colorendl;private:

38、double height;string color;class Roundtable:public Circle,public Tablepublic:Roundtable(double r,double h,string c):Circle(r),Table(h,c)void Display()Table:Display();coutArea:Area()endl;int main()Roundtable t(0.8,0.6,Yellow);t.Display();return 0;5程序如下:#include #include using namespace std;class Pers

39、onpublic:Person()Person(string n,int a)name=n;age=a;void Display()coutName:nameendl;coutAge:ageendl;private:string name;int age;class Leader:virtual public Personpublic:Leader()Leader(string n,int a,string po,string u):Person(n,a)position=po;unit=u;void Display()Person:Display();coutPosition:positio

40、nendl;coutUnit:unitendl;private:string position,unit;class Engineer:virtual public Personpublic:Engineer()Engineer(string n,int a,string t,string m):Person(n,a)title=t;major=m;void Display()Person:Display();coutTitle:titleendl;coutMajor:majorendl;private:string title,major;class Chairman:public Lead

41、er,public Engineerpublic:Chairman()Chairman(stringn,inta,stringpo,stringu,stringt,stringm):Person(n,a),Leader(n,a,po,u),Engineer(n,a,t,m)void Display()Leader:Display();Engineer:Display();int main()Chairman vip(John,45,Dean,IT Department,Proessor,IT Management);vip.Display();return 0;习题七习题七一、填空题1重载多态

42、、强制多态、包含多态、类型参数化多类2成员函数、友元函数3编译时多态、运行时多态4静态联编、动态联编、静态联编、动态联编5纯虚函数、抽象类的对象、抽象类指针、抽象类引用6virtual7名字、返回值、参数、virtual、重载二、选择题三、程序阅读1运行结果:Virtual function Fun in classAVirtual function Fun in class BVirtual function Fun in classAVirtual function Fun in class BVirtual function Fun in class B2运行结果:A:Fun calle

43、d.B:Fun called.3错误语句:pb-Fun();派生类对象不能直接访问私有成员函数,可以将该成员函数改为共有属性。4错误语句:Aa;不能创建抽象类对象,可以通过定义抽象类指针或引用来访问。5运行结果:In B Print.In C print.四、请参阅教材进行理解,答案略。五、编程题1程序如下:#include #include using namespace std;class Vehiclepublic:Vehicle(int wh,double we)wheels=wh;weight=we;int GetWheels()return wheels;double GetWei

44、ght()return weight;virtual void Display()coutWheels:wheelsendl;coutWeight:weightendl;private:int wheels;double weight;class Car:public Vehiclepublic:Car(int wh,double we,int pa):Vehicle(wh,we)passenger_load=pa;int GetPassenger()return passenger_load;void Display()coutThe car is:endl;Vehicle:Display();coutPassenger load:passenger_loadendl;private:int passenger_load;class Truck:public Vehiclepublic:Truck(int wh,double we,int pa,double load):Vehicle(wh,we)passenger_load=pa;pay

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论