C++课后习习题答案_第1页
C++课后习习题答案_第2页
C++课后习习题答案_第3页
C++课后习习题答案_第4页
C++课后习习题答案_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、第1章 C+及其开发环境概述一、问答题1结构化程序设计主要有哪些劣势【答案】(1)程序的开发效率低下(2)程序的可重用性差(3)程序的维护成本高(4)无法适应信息的快速膨胀和多样化2面向对象的程序设计有哪些优点【答案】(1)程序的开发效率高(2)程序代码的可重用性高(3)程序易于维护3C+的发展经历了哪些阶段【答案】C+语言起源于C语言。1980年初期,美国贝尔实验室的Bjarne Stroustrup博士及其同事在C语言的基础上,从Simula67中引入面向对象的特征,开发出一种过程性与对象性相结合的程序设计语言,最初称为“带类的C”,1983年正式取名为C+。后来,Stroustrup和他

2、的同事陆续将运算符重载、继承、虚函数等特性引入C+,1989年后推出AT&T C+ 版,并经过多次改进和完善,发展成为现在的C+。4C+主要有哪些特点【答案】(1)C+可以被看成C语言的一个超集,是对C的增强和扩展。因此,许多C代码可以不经修改即可为C+所用。自然,也可以利用C+开发环境来开发C程序。(2)C+几乎支持所有面向对象的程序设计特征,因此,利用C+不仅可以进行传统的结构化程序设计,而且可以较好地进行面向对象的程序开发。(3)C+很好地保持了C的简洁、高效、灵活和接近汇编语言的特点,因此,C+程序的执行效率也很高。5一个C+程序一般由哪几部分构成【答案】 预处理命令。C+提供

3、了三种预处理命令,即宏定义命令、文件包含命令和条件编译命令。 全局声明部分。此部分内容通常会给出用户自定义的数据类型声明,以及程序中所涉及变量的定义,例如类的声明。 函数。一个程序中可包含一个或多个函数,它们是执行用户指定操作的主要部分。6使用Visual C+ 开发C+程序时一般要经过哪几个步骤每个步骤的作用是什么相应地产生哪些文件【答案】(1)编写程序C+是一种高级语言,所以用其编写的程序称为“源程序”,以.cpp做为后缀。我们可以利用Visual C+、Turbo C+等编译软件来编写C+源程序。(2)编译程序计算机不能识别高级语言,为了将源程序翻译成计算机可识别的二进制指令,需将源程序

4、进行编译,编译之后的文件称作“目标文件”,以.obj作为后缀。编译时以每个源程序单元为单位,每一个源程序文件编译成一个目标文件。因此,如果一个工程中有多个源程序单元,系统会分别将其编译成多个目标文件。另外,编译时系统会自动进行错误检查,一旦检查出有错误,便不会生成目标文件,需改正后重新编译。(3)连接目标文件一个程序中可能会包含很多文件,编译后会生成很多独立的目标文件,此时系统的“连接程序”将这些目标文件和库文件以及系统提供的其他信息连接起来,形成二进制可执行文件,以.exe为后缀。(4)运行程序运行二进制可执行文件,得到运行结果。如运行结果不正确,则需修改源文件,之后重新编译运行。二、分析运

5、行结果1#include <iostream>using namespace std;int main( )cout<<"My "<<"sister "cout<<"is "<<"a "cout<<"beautiful girl!"<<endl;return 0 ;运行结果为:My sister is a beautiful girl!2#include <iostream>using namespa

6、ce std;int main( )int a,b,c;cin>>a>>b;c=a+b;cout<<"a+b="<<a+b<<endl;return 0;运行结果为:2 3a+b=5第2章 C+程序设计基础(上)一、选择题(1)在一个C+程序中,main函数的位置( )。A必须在程序的开头 B必须在程序的后面C可以在程序的任何地方 D必须在其他函数中间【答案】C(2)用C+语言编写的源程序要变为目标程序必须要经过( )。A解释 B汇编 C编辑 D编译【答案】D(3)C+程序基本单位是( )。A数据 B字符 C函数

7、D语句【答案】C(4)C+程序中的语句必须以( )结束。A冒号 B分号 C空格 D花括号【答案】B(5)下列选项中,全部都是C+关键字的选项为( )。Awhile IF static Bbreak char go Csizeof case extern Dswitch float integer【答案】C(6)下列正确的八进制整型常量表示是( )。A0a0 B015 C080 D 0x10【答案】B(7)在下列运算符中,( )优先级最高。A<= B*= C+ D*【答案】D(8)在下列运算符中,( )优先级最低。A! B&& C!= D:【答案】D(9)设i=1,j=2,

8、则表达式i+j的值为( )。A1 B2 C3 D4【答案】C(10)设i=1,j=2,则表达式+i+j的值为( )。A1 B2 C3 D4【答案】D(11)在下列表达式选项中,( )是正确。A+(a+) Ba+b Ca+b Da+b【答案】C(12)已知i=0,j=1,k=2,则逻辑表达式+i|-j&&+k的值为( )。A0B1 C2 D3【答案】B(13)执行下列语句后,x的值是( ),y的值是( )。int x,y;x=y=1;+x|+y;A不确定B1,1 C2,1 D2,2【答案】C(14)已知x=5,则执行语句x+=x-=x*x;后,x的值为( )。A25B40C-40

9、D20【答案】C(15)设a=1,b=2,c=3,d=4,则条件表达式a<ba:c<dc:d的值为( )。A1B2C3D4【答案】A(16)逗号表达式(x=4*5,x*5),x+25的值为( )。 A25B20C100D45【答案】C二、写出下列数学表达式的C+算术表达式(1) (2)xxx(ax+b)+c+d+e(3) (4)(5) (6)log10(a2+ab+b2) 【答案】(1)1/(1+1/(1+1/(x+y)(2)x*(x*(x*(a*x+b)+c)+d)+e(3)log(1+pow(fabs(a+b)/(ab),10)(4)sqrt(1+2*cos(48*180)(5

10、)1/tan(1-x*x)/(1+x*x)或者cos(1-x*x)/(1+x*x)/sin(1-x*x)/(1+x*x)(6)log10(a*a+a*b+b*b)三、用关系表达式或逻辑表达式表示下列条件(1)i整除j(2)n是小于正整数k的偶数(3)1<=x<10(4)x,y其中有一个小于z(5)y100,10,并且y10,100(6)坐标点(x,y)落在以(10,20)为圆心,以35为半径的圆内(7)三条边a,b和c构成三角形(8)年份Year能被4整除,但不能被100整除或者能被400整除【答案】(1)i%j=0(2)(n<k)&&(n%2=0)(3)1&

11、lt;=x&&x<10 (4)x<z|y<z(5)!(y>=-100&&y<=-10)&&!(y>=10&&y<=100)(6)sqrt(pow(x-10),2)+pow(y-20),2)<35(7)a+b>c&&b+c>a&&c+a>b(8)(year%4=0)&&(year%100!=0)|(year%400=0)四、阅读下列程序,写出执行结果(1)#include <iostream>using na

12、mespace std;void main()int a=1,b=2,x,y;cout<<a+ + +b<<endl;cout<<a%b<<endl;x=!a>b;y=x- &&b;cout<<x<<endl;cout<<y<<endl;【答案】4 2 -1 0 (2)#include <iostream>using namespace std;void main()int x,y,z,f;x=y=z=1;f=-x|y-&&z+;cout<&l

13、t;"x="<<x<<endl;cout<<"y="<<y<<endl;cout<<"z="<<z<<endl;cout<<"f="<<f<<endl;【答案】x=0y=0z=2f=1五、编程题(1)输入一个三位整数,将它反向输出。【解答】#include <iostream>using namespace std;void main() int x,i,j,k; cout

14、<<"please input x:" cin>>x; i=x/100; j=(x-i*100)/10; k=x-i*100-j*10; cout<<k<<j<<i<<endl;(2)输入平面上某点横坐标x和纵坐标y,若该点在由图2-8表示的方块区域内,则输出1;否则,输出0。图2-8 正方形【解答】#include <iostream>using namespace std;void main() float x,y,b; cout<<"please input x,

15、y:" cin>>x>>y; b=(-2<=x)&&(x<=2)&&(-2<=y)&&(y<=2); cout<<b<<endl;第3章 C+程序设计基础(下)1设有函数关系为,下面选项中能正确表示上述关系的语句为( )。Ay=1; By=1;if(x>=)0 if(x!=0)if(x=0)y=0; if(x>0)y=1;else y=1; else y=0Cif(x<=0) Dy=1;if(x<0)y=1; if(x<=0)else

16、y=0; if(x<0)y=1;else y=1; else y=1;【答案】C2假设i=2,执行下列语句后i的值为( )。switch(i) case 1:i+;case 2:i-;case 3:+i;break;case 4:-i;default:i+;A1B2C3D4【答案】B3已知int i=0,x=0;下面while语句执行时循环次数为( )。while(!x && i<3)x+;i+;A4B3C2D1【答案】D4已知int i=3;下面dowhile语句执行时循环次数为( )。doi-;cout<<i<<endl;while(i!

17、=1);A1B2C3D无限【答案】B5下面for语句执行时循环次数为( )。for(int i=0,j=5;i<=j;)cout<<i<<j<<endl;i+;j-;A0B1C3D5【答案】C6以下程序段为死循环的是( )。Afor(int x=0;x<3;)x+; Bint k=0; do+k;while(k>=0);Cint a=5;while(a)a-; Dint i=3;for(;i;i-);【答案】B二、阅读下列程序,写出执行结果1#include <>void main()int a,b,c,d,x;a=c=0;b=

18、1;d=20;if(a)d=d-10;else if(!b)if(!c)x=15;else x=25;cout<<d<<endl;【答案】202#include <>void main()int a=0,b=1;switch(a)case 0:switch(b)case 0:cout<<"a="<<a<<" b="<<b<<endl;break;case 1:cout<<"a="<<a<<" b

19、="<<b<<endl;break;case 1:a+;b+;cout<<"a="<<a<<" b="<<b<<endl;【答案】a=0 b=1a=1 b=23#include <>void main()int i=1;while(i<=10)if(+i%3!=1)continue;else cout<<i<<endl;【答案】47104#include <>void main()int i=0,j=5;do

20、i+; j-;if(i>3)break;while(j>0);cout<<"i="<<i<<'t'<<"j="<<j<<endl;【答案】i=4j=15#include <>void main()int i,j;for(i=1,j=5;i<j;i+)j-;cout <<i<<'t'<<j<<endl;【答案】336#include <>void main()int

21、 i,s=0;for(i=0;i<5;i+)switch(i)case 0:s+=i;break;case 1:s+=i;break;case 2:s+=i;break;default:s+=2;cout<<"s="<<s<<endl;【答案】s=77#include <>void main()int i,j,x=0;for(i=0;i<=3;i+)x+;for(j=0;j<=3;j+)if(j%2)continue;x+;x+;cout<<"x="<<x<&

22、lt;endl;【答案】x=16三、编程题1输入三个整数,再将这三个整数按从小到大的顺序输出。【解答】#include <>void main()int a,b,c,t; cout<<"a,b,c=" cin>>a>>b>>c; if(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<<a<<'t'<<b<<'t'<<c<<

23、;endl;2模拟剪刀、石头和纸游戏,用s表示剪刀,r表示石头,p表示纸。游戏规则为:剪刀剪纸,石头砸剪刀,纸包石头。两名游戏者分别输入s、r或p,按照游戏规则输出结果。【解答】#include <>void main()char first,second; cout<<"First input(s,r or p):" cin>>first; cout<<"Second input(s,r or p):" cin>>second; switch(first) case 's':

24、switch(second)case 's':cout<<"Scissor ties scissor."<<endl;goto end; case 'r':cout<<"Scissor is crushed by rock."<<endl;goto end; case 'p':cout<<"Scissor cuts paper."<<endl;goto end; default :cout<<"

25、second input error!"<<endl;goto end; case 'r': switch(second)case 's': cout<<"Rock crushes scissor."<<endl;goto end; case 'r': cout<<"Rock ties rock."<<endl;goto end; case 'p': cout<<"Rock is wrapped by

26、 paper."<<endl;goto end; default : cout<<"second input error!"<<endl;goto end; case 'p': switch(second) case 's':cout<<"Paper is cut by scissor."<<endl; goto end; case 'r':cout<<"Paper wraps the rock."<

27、<endl; goto end; case 'p':cout<<"Paper ties paper."<<endl; goto end; default :cout<<"second input error!"<<endl; goto end; default:cout<<"First input error!"<<endl;goto end; end:;3输入一个整数,输出该整数的所有素数因子。例如,输入120,输出为2、2、2、3和5。【

28、解答】#include <>void main()int m,i = 2;cout << "please input m:"cin >> m;while( i<=m )if( m % i = 0 )cout << i << " "m = m / i;else i+;cout <<endl;4找出100到200之间满足用3除余2且用5除余3且用7除余2的所有整数。【解答】#include <>void main()int i;for( i=100; i<=200

29、; i+ )if ( ( i % 3 = 2) && ( i % 5 = 3 ) && ( i % 7 = 2 ) )cout << i << endl;5如果一个整数恰好等于它的所有因子之和,则这个数称为完数。例如,6=1+2+3,所以6为完数。求1000之内的所有完数。【解答】#include <>void main()int i,j,s;for( i=1; i<=1000; i+ )s = 0;for( j=1; j<i; j+ )if ( i % j = 0 ) s = s + j;if ( i = s )

30、 cout << i << endl;6在屏幕上输出如下图案:* * * * * * * * * * * * * * * * * * * * *【解答】#include <>void main()int i,j,k;for( i=1; i<=5; i+ )for( k=1; k<=5-i; k+ ) cout << " "for( j=1; j<=2*i-1; j+ ) cout << "*"cout << endl;第4章 函数的应用1选择题(1)下面关于C+语言

31、说法不正确的是( )。A具有函数式的程序结构,其程序至少由一个函数构成,不论是主函数,还是其他函数B变量的数据类型丰富,而且使用不同的存储类别C具有编译预处理的功能,为程序的设计与修改、调试、移植带来方便D既是面向结构的程序设计语言,又是面向对象的程序设计语言答案:A若只有一个函数,则只能是主函数,否则程序不知从何处开始执行。(2)所谓模块化程序设计是指,在程序设计中把功能相对独立、单一的模块用一个函数实现,再由若干个函数组成完整程序的程序设计方法。对于函数,下列说法不正确的是( )。A函数结构独立、功能单一,便于编写、调试和修改B可以并行开发,加快软件开发速度,缩短开发周期C函数的重复使用性

32、好,提高开发效率D所有函数都可用于整个程序,即使该程序包含了多个文件答案:D(3)关于函数调用,下面不正确的是( )。A由于程序总是从主函数开始执行,所以函数的调用总是在主函数和其他函数之间进行B函数的调用可以在任意函数之间进行C一个函数可以自己调用自己D函数返回时可以不必带回值,这时函数类型应为void答案:A(4)关于函数的声明与定义,正确的是( )。A函数的声明是必须的,只有这样才能保证编译系统对函数参数进行检测,以确保参数传递正确B函数的声明并非必须,即可以只给出函数定义C声明函数时参数标识符可省略,但参数的类型、个数必须相同且顺序不能颠倒D一个函数可以在另一个函数内定义答案:C函数的

33、声明并非必须,可以只要函数定义而不要声明但要注意符合一定条件。函数不可嵌套定义。(5)关于函数的返回值,正确的是( )。Areturn语句只返回一个值,该值的类型在函数定义时已确定B返回值类型由返回变量类型决定C如果不定义函数类型,表示该函数没有返回值D函数调用一定要有返回值,否则调用就没有意义了答案:A(6)下列关于形参的说法,正确的是( )。A函数的形参并非是必须的,有时可以什么都没有B函数的形参可以是表达式C函数在定义时,形参是不占用存储空间的,只有在被调用时系统才会为其分配存储空间,调用结束时,该空间将被释放D形参的名称、类型、数量和顺序必须与实参相同,否则实参不会把信息正确地传递给形

34、参答案:C(7)关于函数的返回,不正确的是( )A使程序的执行重新返回到主调函数,使程序继续往下执行B释放调用函数时临时分配的存储单元C一定要返回一个值给主调函数D其返回值可有可无答案:C被调用函数可以不返回任何值,仅完成某功能。二、阅读下列程序,写出执行结果(1)#include <iostream>using namespace std;void incx();void incy();void main()incx();incy();incx();incy();incx();incy();void incx()int x=0;cout<<"nx="

35、;<<+x;void incy()static int y=0;cout<<"ny="<<+y;【答案】x=1y=1x=1y=2x=1y=3(2)#include <iostream>using namespace std;int i=3;int fun1(int n)cout<<i+n<<endl;return 0;int fun2(int n)static int i=2;cout<<i+n<<endl;return 0;void main()int i=1;int fun1

36、(int);int fun2(int);cout<<i;fun1(i);fun2(i);【答案】143三、编程题(1)编写函数,定义两个unsigned short int型的参数,返回两个参数的商,其数据类型为short int。如果第二个参数为0,输出错误提示信息。【源程序】#include <>short int Divider(unsigned short int a, unsigned short int b)if (b = 0)return -1;elsereturn a/b;int main()unsigned short int one, two;sho

37、rt int answer;cout << "Enter two numbers.n Number one: "cin >> one;cout << "Number two: "cin >> two;answer = Divider(one, two);if (answer > -1)cout << "Answer: " << answer;elsecout << "Error, can't divide by zero!&qu

38、ot;return 0;运行结果为:Enter two numbers.Number one:8Number two:2Answer: 4(2)编写函数,输入一个华氏温度,将华氏温度转换为摄氏温度输出,公式为C(F32)*5/9,其中F为华氏温度,C为摄氏温度。【源程序】#include<>#include<>void main() double f,c,b; cout<<"请输入华氏温度:"<<endl; cin>>f; cout<<"对应的摄氏温度为:"<<endl;

39、 c=f-32; b=9; c=b*c; cout<<setprecision(4)<<"C="<<c<<endl;运行结果为:请输入华氏温度:80对应的摄氏温度为:(3)编写函数,判断一个数是否是质数。【源程序】#include <>#include <>int prime(int i); 10xpTHIS IS A BOOK.答案:(1)char *a或char a80(2)ai或ai!='0'(3)ai=ai32或ai-=32 分析:(1)由指针和字符串关系知:当实参是数组,形参可

40、以是字符串变量,也可以是字符指针变量。(2)循环语句结束条件是字符标记0。(3)大写字母的ASCII码比小室字母的ASCII码小32。(2)下列函数sort实现对字符串按字典顺序由小到大排序,请填空。#include<>#include<>void sort( )char ;int i,j;for(i=0;i<n-1;i+)for(j=0;j<n-1-i;j+)if( )temp=pj; ;pj+1=temp;void main()char *a5="student","worker","cadre"

41、;,"soldier","apen"sort(a,5);for(int i=0;i<5;i+)cout<<ai<<endl;运行结果:apencadresoldierstudentworker答案:(1)char *p,int n (2)*temp(3)strcmp(pj,pj+1)>0(4)pj=pj+1分析:(1)由实参得知函数sort()有两个形参,根据上题得char *p,int n。(2)有下面语句temp=pj可以得到temp是字符中指针。(3)根据冒泡排序方法和字符串比较函数得到pj,pj+1)>0

42、。(4)字符串指针可以通过赋值语句传递值,字符串变量不能够使用赋值语句传递值。四、编程题(1)编写程序,使用指针实现两个字符串的首尾连接(提示:将字符串str2接到str1的后面时,str1后面的'0'被取消)。#include <>void strcat(char *str1,char *str2)int i,m=0;while(str1m!='0') m+; o(4)若有语句enuma,b=2,c,d=4,ek;k=a;则k的值是_。0(5)将以下程序的空白处补充完整,程序实现的功能是:查找分数最高和最低的同学,分别输出其姓名和成绩。#inclu

43、de<>void main()int max,min,i;static structchar name8;int score;stud5="赵萍",92,"钱兵",72,"孙洋",83,"李虎",88,"周金",95;max=min=0;for(i=1;i<5;i+)if(_)max=i;else if(_)min=i;cout<<"最高分"<<_<<","<<_<<endl;c

44、out<<"最低分"<<_<<","<<_<<endl;studi.score>studmax.scorestudi.score<studmax.score studmin.score三、阅读下列程序,写出执行结果(1)#include<>struct treeint x;char *s;t;func(struct tree t)=10;="computer"return(0);

45、void main()=1;="minicomputer"func(t);cout<<<<","<<<<endl;运行结果为:1,minicomputer(2)#include<>void main( )struct studentchar name10;float k1;float k2;float k3;a2="zhang",100,70,90,"wang",70,80,90,*pa=a;cout<<pa->name<<&

46、quot;:"<<pa->k1+pa->k2+pa->k3<<endl;cout<<<<":"<<a1.k1+a1.k2+a1.k3<<endl;运行结果为:zhang:260wang:240三、编程题(1)编写程序,实现从终端输入学生信息,根据学号查询并输出相应学生的信息。学生信息包括:学号no、姓名name、政治分数politic、数学分数maths、英语分数english和专业课分数special。【参考代码】结构体类型数组及指针的应用。#include&

47、lt;>struct stuunsigned no;char name10;int politic;int maths;int english;int special;void input(struct stu *q,int i)cout<<"input student information:"<<endl;for(int k=0;k<i;k+,q+)cin>>q->no;cin>>q->name;cin>>q->politic;cin>>q->maths;cin&

48、gt;>q->english;cin>>q->special;void enquire(struct stu *q,int j,unsigned a)for(int i=0;i<j;i+,q+)if(q->no=a)cout<<q->no<<" "cout<<q->name<<" "cout<<q->politic<<" "cout<<q->maths<<" &qu

49、ot;cout<<q->english<<" "cout<<q->special<<" "void main()struct stu stud30,*p=stud;unsigned num;input(p,30);cout<<"input enquiring no:"<<endl;cin>>num;enquire(p,30,num);(2)假设某公司有员工200人,员工的信息包括编号、姓名、基本工资、补贴、奖金和应扣款。编写程序,实现对员工

50、工资信息的管理,包括查询和打印工资明细、应发工资和实发工资。参考代码如下:本题是在上题的基础上,加了一些控制功能,由此可见程序的编写其实是很实际简单的事。#include<>struct memberunsigned no;char name10;float basewage;float extrawage;float bonus;float decrease;void input(member *q,int j)cout<<"input member wage information:"<<endl;for(int i=0;i<j

51、;i+,q+)cout<<"no.:"cin>>q->no;cout<<endl;cout<<"name:"cin>>q->name;cout<<endl;cout<<"basewage:"cin>>q->basewage;cout<<endl;cout<<"extrawage:"cin>>q->extrawage;cout<<endl;cout&l

52、t;<"bonus:"cin>>q->bonus;cout<<endl;cout<<"decrease:"cin>>q->decrease;cout<<endl;void enquire(member *q,int j,unsigned a)"<<endl;cin>>m;enquire(p,200,m);else if(n='p')int l;cout<<"all or one(0 or one's

53、 no.):"cin>>l;print(p,200,l);elsecout<<"WRONG OPERATOR!"(3)编写程序,实现对学生和教师信息的输入、查询、删除和更新等操作。其中,学生信息包括学号、姓名、性别、班级和院系,教师信息包括编号、姓名、性别、职称、院系。参考代码如下:该数组长度设置应足够大,以便插入元素,删除元素只学号或代号置零,并不真正删除,相应的一些操作加浏览等要有条件判断使为零的学号或代号不显示。本题的插入操作是一次性的,可以试着更改程序,使其需要时再插入。#include <>struct memberu

54、nsigned no;char name10;char sex;char dep20;union加对象成员名。(3)类的静态数据成员与其他数据成员的最大区别是什么答:静态数据成员是所有对象共享的成员,所有对象都可以访问它。静态数据成员不属于某一个对象,它在内存中占据一个公共的存储空间,所有对象都可以直接访问该存储空间。而不同对象的非静态数据成员占据不同的存储空间,该空间是不能共享的。(4)类的静态成员函数有什么特点答:静态成员函数只能用来访问类中静态数据成员,而不能直接访问类中非静态数据成员。与静态数据成员类似,我们也可以利用“类名:静态成员函数名(参数列表);”形式来直接调用它。要在静态成员

55、函数中访问非静态数据成员,可将该类对象作为静态成员函数的参数。三、编程题(1)构造一个日期时间类Timedate,实现对日期(年、月、日)、时间(时、分、秒)的设置及输出。解: #include <>#include <>enum YRY2000,Y2001,Y2002,Y2003,Y2004,Y2005;enum MTJan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec;class Timedateprivate:YR year;MT month;int date;int hh;int mm;int ss;public:Tim

56、edate()year=Y2000;month=Jan;date=1;hh=0;mm=0;ss=0;Timedate(YR a,MT b,int c)year=a;month=b;date=c;hh=12;mm=30;ss=0;void getdate(YR &,MT &,int &);Circumference=2*r*3.;Circle:Circle(Circle & cl)r=;Area=;Circumference=;void Circle:SetR(double R)r=R;Area=r*r*3.;Circumference=2*r*3.;int ma

57、in()Circle cl1(2),cl2,cl3=cl1;cout<<"圆半径:"<<()<<'t'<<"圆周长:"<<()<<'t'<<"圆面积:"<<()<<endl;(4);cout<<"圆半径:"<<()<<'t'<<"圆周长:"<<()<<'t'

58、;<<"圆面积:"<<()<<endl;return 0;运行结果:圆半径:2圆周长:圆面积:圆半径:4圆周长:圆面积:(4)构造一个学校在册人员类Person,数据成员包括身份证号(IdPerson),姓名(Name),性别(Sex),生日(Birthday)和家庭住址(HomeAddress),实现对人员信息的录入和显示。解:为指出构造函数等的调用,加了一些提示语句。#include<>#include<>enum Tsexmid,man,woman;class Personchar IdPerson19;.;或class 派生类名:访问限定符 virtual 基类类名.;virtual 关键字只对紧随其后的基类名起作用。三、编程题(1)先定义一个点类Point,包含数据成员x和y(坐标点)。以Point类为基类,派生出矩形类Rectangle和圆类Circle。假设矩形水平放置,在Rectangle类中,继承来的基类中的点作为矩形左下方的顶点,在派生类中增加数据成员长和宽;在Circle类中,继承来的基类中的点作为圆心,在派生类中增加数据成员半径。要求判断给定点位于矩形和圆的什么位置。解:#include <>#include <>const

温馨提示

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

评论

0/150

提交评论