C程序设计案例教程习题答案科学出版社

上传人:痛*** 文档编号:137622289 上传时间:2022-08-18 格式:DOC 页数:33 大小:164KB
收藏 版权申诉 举报 下载
C程序设计案例教程习题答案科学出版社_第1页
第1页 / 共33页
C程序设计案例教程习题答案科学出版社_第2页
第2页 / 共33页
C程序设计案例教程习题答案科学出版社_第3页
第3页 / 共33页
资源描述:

《C程序设计案例教程习题答案科学出版社》由会员分享,可在线阅读,更多相关《C程序设计案例教程习题答案科学出版社(33页珍藏版)》请在装配图网上搜索。

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) main()函数应该包含return语句

2、;(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程序如下:#includeusing namespace std;int main()doubl

3、e 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 namespace std;int main()char a100, *p;couta;cou

4、t= 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 (num1)temp=num1;num1=num2;num2=temp;a=num1

5、;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;return 0; 7 程序如下:#includeusing namespace std;

6、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; 习题三一、 填空题1 x2 p=new int(10)3 10、194 new、

7、delete5 b9、b1二、 选择题1D2. D3. B4. B5. B6A三、程序阅读1运行结果:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 12运行结果:intone:5 rsomeref:5 intone:7 rsomeref:73运行结果:BCDEFGHIJKLMNOPQRSTDEFGHIJKLMNOPQRSTTTRRSTPPQRSTNNOPQRST4运行结果:9191930 1 2 3 15 16 17 18 1919 18 17 16 155运行结果:2四、编程题1程序如下:#in

8、clude 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程序如下:#include using namespace std; int main() int a35=0; int b54=0;int c3

9、4=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

10、(float &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请输入一个进制数及要转换的进制数:idec

12、ibase; 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(t

13、emp%2=0) flag+;break; num/=10; if(num=0) break; if(flag) coutNOendl; else coutYESendl; 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;

14、int main()int num,digit;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,

15、t);for(i=0;iN;i+)coutaiendl;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

16、 value);析构函数无参数;(4)析构函数不能重载。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

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

18、rrow=today;tomorrow.Display();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

19、 main()Rectangle r;r.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:

20、Time()hour=0;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

21、 main()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;coutAg

22、e:ageendl;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.GetGende

23、r(sgender);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 s

24、core;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 is Student:Average()endl;return 0;6程序如下:#include #includ

25、e using 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,autho

26、r;int 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 class constructing sub class destructing sub class destructing base class2运行结果:constructing base classn=1constructing base classn=3constructing sub classm=2destructing sub class destructing base class destructing 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运行结果:A constructing ,data not evaluatedA constructing ,data not evaluatedB constructing ,data not evaluatedA constructing ,da

29、ta evaluatedA constructing ,data not evaluatedB constructing ,A evaluatedA constructing ,data evaluatedA constructing ,data not evaluatedB constructing ,data evaluatedB destructingA destructingA destructingB destructingA destructingA destructingB destructingA destructingA destructing四、请参阅教材进行理解,答案略。

30、五、编程题1程序如下:#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 Studentpub

31、lic:Master(string name1,int id1,int age1,string major1,string advisor1):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程序如下:#inc

32、lude #include 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

33、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_

34、load=pa;payload=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.Dis

35、play();t.Display();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;priv

36、ate:string name,unit;class Assistant: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+ P

37、rogramming);person.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:col

38、orendl;private: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

39、 std;class Personpublic: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();coutP

40、osition:positionendl;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 Chair

41、man:public Leader,public Engineerpublic:Chairman()Chairman(string n,int a,string po,string u,string t,string m):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();retu

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

43、s B2运行结果:A:Fun called.B:Fun called.3错误语句:pb-Fun(); 派生类对象不能直接访问私有成员函数,可以将该成员函数改为共有属性。4错误语句:A a; 不能创建抽象类对象,可以通过定义抽象类指针或引用来访问。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()retu

44、rn wheels;double GetWeight()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

45、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;payload=load;int GetPassenger()return passenger_load;double GetPayload()return payload;void Display()

46、coutThe truck is:endl;Vehicle:Display();coutPassenger load:passenger_loadendl;coutPay load:payloadendl;private:int passenger_load;double payload;class Bus:public Vehiclepublic:Bus(int wh,double we,int pa,int no):Vehicle(wh,we)passenger_load=pa;number=no;int GetPassenger()return passenger_load;double

47、 GetNumber()return number;void Display()coutThe bus is:endl;Vehicle:Display();coutPassenger load:passenger_loadendl;coutNo.:numberDisplay();p=&t;p-Display();p=&b;p-Display();return 0;2程序如下:#include #include using namespace std;class Teacherpublic:Teacher()Teacher(string n,string u,int h)name=n;unit=u;hour=h;virtual void TotalSalary()=0;int GetHour()return hour;private:string name,unit;int hour;class Lecturer:

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!