自考C++程序结果及答案.doc_第1页
自考C++程序结果及答案.doc_第2页
自考C++程序结果及答案.doc_第3页
自考C++程序结果及答案.doc_第4页
自考C++程序结果及答案.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1. 给出下面程序输出结果。#includeclass apublic:virtual void print()cout a prog. endl;class b:public a;class c:public bpublic:void print()coutc prog.endl;void show(a *p)(*p).print();void main()a a;b b;c c;show(&a);show(&b);show(&c);答案:a prog.a prog.c prog.解析考查多态性的。a类对象调用本身的虚函数,b类因为没有覆写print,所以仍然调用基类的虚函数。而c类重新定义print虚函数,所以调用c类的print。2. 给出下面程序输出结果。#include #include #include bool fun(long n);void main()long a=10,b=30,l=0;if(a%2=0) a+;for(long m=a;m=b;m+=2)if(fun(m)if(l+%10=0)cout endl;cout setw(5) m;bool fun(long n)int sqrtm=(int)sqrt(n);for(int i=2;i=sqrtm;i+)if(n%i=0)return false;return true;答案:11 13 17 19 23 29解析循环体用来判断n是否是质数的函数,在main函数判断1030之间质数。3. 给出下面程序输出结果。#include class Testint x,y;public:Test(int i,int j=0)x=i;y=j;int get(int i,int j)return i+j;void main()Test t1(2),t2(4,6);int (Test:*p)(int,int=10);p=Test:get;cout(t1.*p)(5)endl;Test *p1=&t2;cout*p)(7,20)endl;答案:15 27解析指向类成员函数的指针的使用,*p指向Test类中有两个参数的函数的一个指针。PTest:get.这样p就和get发生了联系。(t1.*p)(5)等价于调用一个参数的get函数。4. #include #include #include class studentchar name8;int deg;char level7;friend class process; / 说明友元类public:student(char na,int d) strcpy(name,na);deg=d;class process public:void trans(student &s)int i=s.deg/10;switch(i)case 9:strcpy(s.level, 优);break;case 8:strcpy(s.level,良);break;case 7:strcpy(s.level,中);break;case 6:strcpy(s.level,及格);break;default:strcpy(s.level,不及格);void show(student &s)coutsetw(10)setw(4)s.degsetw(8)s.levelendl;void main() student st=student(张三,78),student(李四,92),student(王五,62),student(孙六,88);process p;cout结 果:姓名setw(6)成绩setw(8)等级endl;for(int i=0;i4;i+) p.trans(sti);p.show(sti);答案:结果:姓名成绩等级张三78中李四92优王五62及格孙六88良1. 给出下面程序输出结果。#include class exampleint a;public:example(int b=5)a=b+;void print()a=a+1;cout a;void print()constcoutaendl;void main()example x;const example y(2);x.print();y.print();答案:62解析x是普通对象,调用普通的print函数;而y常对象,调用常成员函数。2. 给出下面程序输出结果。#include void main() int *p1;int *p2=&p1;int b=20;p1=&b;cout*p2endl;答案:20解析p1指向b,而p指向p1的地址。*p2表示p1的地址,p1的地址就是&b,即*p2是&b,所以*p2就是b变量的值。3. 给出下面程序输出结果。#include class Baseprivate:int Y;public:Base(int y=0) Y=y;coutBase(y)n;Base() coutBase()n;void print() cout Y ;class Derived:public Baseprivate:int Z;public:Derived (int y, int z):Base(y)Z=z;coutDerived(y,z)n;Derived() coutDerived()n;void print()Base:print();coutZendl;void main()Derived d(10,20);d.print();答案:Base(10)Derived(10,20)10 20Derived()Base()解析派生类对象,先调用基类构造函数输出Base(10),后调用派生类构造函数输出Derived(10,20),后执行d.print(),调用派生类的print,再调用Base:print()输出10,后返回输出z的值20。后派生类析构,再基类析构。4. 给出下面程序输出结果。#include class Apublic:A()coutA 构造函数n;fun();virtual void fun()coutA:fun() 函数n;class B:public Apublic:B()coutB构造函数n;fun();void fun() coutB:fun() calle函数n;void main()B d;答案:A构造函数A:fun()函数B构造函数B:fun()calle函数解析定义派生类对象,首先调用基类构造函数,调用A类中fun(),然后调用B类的构造函数,在调用B的fun函数。1. 运行程序,写出程序执行的结果。#include void main()int a,b,c;char ch;cinachbc;/从键盘上输入1.5c1020,表示一个空格coutaendlchendlbendlca,.-ch,5-b,空格转换为零给了c。2. 给出下面程序输出结果。#include class Apublic:A()coutAs cons.endl;virtual A()coutAs des.endl;virtual void f()coutAs f().endl;void g()f();class B:public Apublic:B()f();coutBs cons.endl;B()coutBs des.endl;class C:public Bpublic:C()coutCs cons.endl;C()coutCs des.endl;void f()coutCs f().g();delete a;答案:As f().Bs cons.Cs cons.Cs f().Cs des.Bs des.As des.解析定义C类对象时要调用基类构造函数从A到B再到C,调用B的构造函数时,B类没有f(),则指向来自A类的f()函数。同时用基类的指针指向了派生类对象。最后析构函数的执行。1. 给出下面程序输出结果。#includeclass apublic:a(int i=10)x=i;couta:xendl;int x;class b:public apublic:b(int i):A(i)x=i;coutb:x, a:xendl;private:a A;int x;void main()b B(5);答案:a:10a:5b:5,10解析定义对象B,先调用基类构造函数,在b构造函数中使用的是A(i),注意大小写,不是a(i),也就是说调用基类的构造函数时没有实参值,所以采用默认值;在初始化类成员A,即A(i),i5,所以输入为a:5;最后是b类的构造函数,x=5,来自基类x10,输出b:5,10。2. 运行程序,写出程序执行的结果。#includeclass Locationpublic:int X,Y;void init(int initX,int initY);int GetX();int GetY();void Location:init (int initX,int initY)X=initX;Y=initY;int Location:GetX()return X;int Location:GetY()return Y;void display(Location& rL)coutrL.GetX() rL.GetY()init(7,8);for (int i=0;i5;i+)display(*(rA+);答案:7 83 31 17 34 4解析对象数组的使用。使用数组对象修改了A3元素的值,又使用指针修改指针所指向的第一个元素的值,因此修改了A0和A3元素的值。3. 给出下面程序输出结果。#include int a8=1,2,3,4,5,6,7;void fun(int *pa,int n);void main()int m=8;fun(a,m);couta7endl;void fun(int *pa,int n)for (int i=0;in-1;i+)*(pa+7)+=*(pa+i);答案:28解析数组名与指针都表示地址,只是数组名是常地址,不能改变;指针是地址变量,使用时可以当数组名使用。4. 给出下面程序输出结果。#include class Aint *a;public:A(int x=0):a(new int(x)A() delete a;int getA() return *a;void setA(int x) *a=x;void main()A x1,x2(3);A *p=&x2;(*p).setA(x2.getA()+5);x1.setA(10+x1.getA();coutx1.getA()x2.getA()endl;答案:108解析p指向对象x2,x2.getA()+5该值为8 即x2.a8;10+x1.getA()为10,x1.a10。1. 给出下面程序输出结果。#include class Baseprivate:int Y;public:Base(int y=0) Y=y;coutBase(y)n;Base() coutBase()n;void print() cout Y ;class Derived:public Baseprivate:int Z;public:Derived (int y, int z):Base(y)Z=z;coutDerived(y,z)n;Derived() coutDerived()n;void print()Base:print();coutZendl;void main()Derived d(10,20);d.print();答案:Base(10)Derived(10,20)10 20Derived()Base()解析派生类对象,先调用基类构造函数输出Base(10),后调用派生类构造函数输出Derived(10,20),后执行d.print(),调用派生类的print,再调用Base:print()输出10,后返回输出z的值20。后派生类析构,再基类析构。2. 给出下面程序输出结果。#include class testint x;public:test(int i=0):x(i)virtual void fun1()cout test:xxendl;class ft:public testint y;public:void fun1()cout ft:y=yendl;ft(int i=2):test(i),y(i);void main() ft ft1(3);void (test:*p)();p=test:fun1;(ft1.*p)();答案:ft:y=3解析指向函数的指针的使用,p指向fun1函数,(ft1.*p)实际就是调用ft1对象的fun1()函数。1. 给出下面程序输出结果。#include class exampleint a;public:example(int b=5)a=b+;void print()a=a+1;cout a;void print()constcoutaendl;void main()example x;const example y(2);x.print();y.print();答案:62解析x是普通对象,调用普通的print

温馨提示

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

最新文档

评论

0/150

提交评论