东南大学 C 第二学期 期末复习二含答案_第1页
东南大学 C 第二学期 期末复习二含答案_第2页
东南大学 C 第二学期 期末复习二含答案_第3页
东南大学 C 第二学期 期末复习二含答案_第4页
东南大学 C 第二学期 期末复习二含答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、一、 选择题:(每题1分,共30分)1 以下程序的输出结果是 C A) 1 B) 7 C) 9 D) 11 #include<iostream.h> void fut (int*s,int p23) *s=p11; void main() static int a23=1,3,5,7,9,11;int *p; p=new int; fut(&p,a); cout<<*p<<endl; 2 执行以下程序后,y的值是_(B)_ A) 17 B) 18 C) 10 D) 20 #include<iostream.h> void main() s

2、tatic int a=2,4,6,8,10; int y=0,x,*p; p=&a1; for(x=0;x<3;x+) y+=*(p+x); cout<<y<<endl; 3 定义一下类: class X int a ;public: X (int x=0 ) a= x ; ;class Y: public X int b;pub lic :Y( int x=0 , int y=0 ) : X (y) b = x ; ; 在下列选项的说明语句中,存在语法错误的是 (C) 。 AX *pa = new Y(1 , 2 ) B X a1 = Y( 1,3 )

3、 ;CX b2 ( 2 ,3 ) ; Y &a2 = b2 ; DY b3 ( 10 ) ; X a3 ( b3 ) ;4 下列关于虚函数描述中正确的是 (B) 。A虚函数可以是一个static类型的静态成员B虚函数可以是一个非静态成员C虚函数实现静态多态性D基类中采用virtual说明一个虚函数后,派生类中定义相同的原型的虚函数时,可不必加virtual说明5 若磁盘上已存在某个文本文件,其全路径文件名为: d:dirtest.txt,下列语句中能以”读文本文件”的方式打开该文件的是(B)。 A ifstream file(“d:dirtest.txt”); Bfstream fil

4、e(“d:dirtest.txt”); Cfstream file(ios:in); file.open(“d:dirtest.txt”); Difstream * file=new ifstream(“d:dirtest.txt”);6 定义如下变量和数组: int i; int x33=1,2,3,4,5,6,7,8,9;则以下语句的输出结果是 (C) 。 for(i=0 ;i<3;i+) cout<<xi2-i;A159 B147 C357 D3697 void g(void*)(int,int,int), int, int)的参数个数是 (A) 。A. 3个 B. 5

5、个 C. 1个 D. 无法确定8 现需要对list类对象使用的逻辑运算符“”重载,以下函数声明(28)是正确的。.list & list:operator=(const list &a);.list list:operator=(const list &a);.bool & list:operator=(const list &a);.bool list:operator=(const list &a);9 若有说明:int t32,*p=t0; 能正确表示t21的一组表达式是_(D)_ A) *(t+2)+1,*(p0+5),*t+3 B) *

6、(t+2+1),*p21,*(t2+1) C) *(t+2)+1,*p5,*(t0+2)+1 D) *(*(t+2)+1),p5,*(t2+1)10 若有说明:int t32,*p=t0; 能正确表示t0的一组表达式是_(27)_ A)*(t+0),p B)*t,*p C)p0,*t D)*t+0,*p011 若有说明:int t32; 则表达式:&t0+1表示_(B)_A)第1行的行指针,一级指针 B) 第1行的行指针,二级指针C)元素t01的地址 D) 元素t10的地址12 设有说明:int *p,*q,*t,x=5; 运行以下程序段,输出结果是_(C)_A) 5 随机数 B) 随

7、机数 5 C) 出错 D) 5 5 p=new int; q=&x; t=p;p=q;q=t; delete p; cout<<*p<<'t'<<*q<<endl;二、 阅读程序题1. 以下程序运行后,输出结果是 (1)(2)(3)(4)。(8分)4*24*4*24*#include <iostream.h>int f(int a,int b) if(a>b) return b+a; else cout<<b*f(+a,-b)<<'*'<<'n&

8、#39;return a*f(a,b);void main()int n;n=f(1,3);cout<<n<<'n'2. 程序#include "iostream.h"void fun(int *s,int n)int f=10;15x=25if(n=1|n=2) *s=1;elsefun(&f,n-2);*s=f*5;cout<<f<<'n'void main()int x=20;fun(&x,5);cout<<"x="<<x<

9、<'n'程序输出的第一行是 4 ,第二行是 5 ,第三行是 6 。3. 程序#include <iostream.h>#include <iomanip.h>Double x,u,v,f(double),g(double),t(double,double (*)(double);void main()x=4.0;u=t(x,f);v=t(x,g);cout<<"u="<<setw(4)<<u<<endl;cout<<"v="<<setw(

10、4)<<v<<endl;double t(double a,double (*f)(double) return (*f) (a*a); double f(double x ) return x+2.0;double g(double x) return x-2.0;程序输出的前2行分别是:_ 7 , 8 u=18 v=144. 程序#include "iostream.h"class baseint i;public:base(int I=0):i(I)virtual int sum()return i;class D: public basein

11、t j;public:D(int I=0,int J=0):base(I),j(J)int sum()return base:sum()+j;void call(base b)cout<<"sum="<<b.sum()<<endl;void main()sum=10sum=10sum=10base b(10),* pb;D d(10,47);pb=&d;call(b);call(d);call(*pb);程度输出的第一行 9 ,是第二行是 10 第三行是 11 。3575. 程序#include<iostream.h>

12、int f(int x)int s=0;for(int j=2;j<=x;j+)if(x%j=0)x/=j;s+=j;return s;void main(void)for(int i=3;i<10;i+)if(i=f(i)cout<<i<<endl;程序运行后输出的第一行是 12 第二行是 13 第三行是 14 。6. 程度#include "iostream.h"void f(int j)if(!j)cout<<j; return; if(j%2) f(j/10); cout<<j%10;else cout&l

13、t;<j%10;f(j/10);void main()f(0);cout<<'n'f(1357);cout<<'n'f(2468);cout<<'n'程序运行后输出的第一行是 第二行是 第三行是 7. 程序#include<iostream.h>class Xpublic:void virtual f()cout<<"X:11"<<endl;void virtual g()cout<<"X:22"<<end

14、l;B:55B:44X:22class A:public Xpublic:void f()cout<<"A:33"<<endl;class B:public Apublic:void f()cout<<"B:44"<<endl;void g(int i=10)cout<<"B:55"<<endl;void main(void)B b;X *px=&b;b.g()px->f(); px->g();程序输出的第一行是 ,第二行是 ,第三行是 _。8

15、. 程序#include<iostream.h>class Ax=1 A_1A_2A_22 AA_23 AA_24 A4 A3 A int x; public: A(int a) x=a; cout<<"x="<<x<<'t'<<"A_1"<<'n' A(A &s) x=s.x+1; cout<<"A_2"<<'n' A()cout<<x<<'t'

16、;<<"A"<<'n'void main(void) A f1(1), f2(f1); f2=A(f1); f1=A(f2); f2=A(f1);程序共输出 行,第一行是 ,第四行是 ,第六行是 。9. 程序x=4, y=10x=4, y=16x=4, y=6i=34x=8, y=7 #include<iostream.h>class Aint y;static int x;public:operator int()return x+y; A operator +(int)return A(x+,y+);A(int x=2

17、,int y=3)A:x=x+x;A:y=y+y;void print()cout<<"x="<<x<<",t"<<"y="<<y<<endl;int A:x=23;void main(void)A a(30,5),b(10,8),c;a.print();b.print();c.print();int i=a+b; cout<<"i="<<i<<endl;c+;c.print();程序输出的第一行是 ,第二行

18、是 ,第三行是 ,第四行是 ,第五行是 。10. #include <iostream.h> int i=1;int fac(int n)static int f=1;66,6f=f*n; return(f);void main()int i,p=0;for(i=1;i<=3;i+)p=fac(i);cout<<p<<endl;p=0;for(i=1;i<=3;i+)p=p+:i+; / Acout<<p<<','p=1;for(i=1;i<=3;i+)p=p*-:i; / Bcout<<

19、p<<endl;问题1:该程序的第一行输出为( ,第二行输出为 11. 下列程序的输出结果是 。#include "iostream.h"int a=100;void fun(int i,int j,int *k)j+=i;*k=j-i;void main() int a,b,c;fun(17,18,&a);fun(19,a,&b);18,18 ,18fun(a,b,&c);cout<<a<<','<<b<<','<<c<<endl;1

20、2. 以下程序运行后,输出结果是 。#include<iostream.h>class Apublic:int i;void print()cout<<i<<" insert A n"class B:public Apublic:virtual void print()cout<<i<<" insert B n"class C:public B3 insert C3 insert A:i3 insert C3 insert A:i10 insert Apublic:C( )A:i=10;int

21、i;void print()cout<<i<<" insert C n"cout<<i<<" insert A:i n"void main()A a;A *pa;B b,*pb;C c,*pc;c.i=1+(b.i=1+(a.i=1);pc=&c;pc->print();pb=&c;pb->print();pa=&c;pa->print();三、 完善程序1.1. 下面程序的功能是:先输入一行字符串,并从输入的字符串中找到最小的字符(其ASCII值最小),用min保

22、存该字符。然后将该字符前的所有字符顺序向后移动一个字符的位置。最后,将保存的字符放在该字符串的第0个位置上。例如:设输入的字符串为“bcdfae”,其中字母a为最小字符,经移动处理后,输出的字符串为“abcdfe”。#include<iostream.h>void fun( ) / char *strchar mun,*q,*p; ; / p=q=strmin = *p+; while(*p!=0)if( )min = *p; q = p ; / *p<minp+;p = q ;While( ) *p = *(p-1); ; /q>str /p-,q-*q = min;

23、void main()char str80;cin.getline(str,80);fun(str); cout<<str<<n;2. 本程序被完善后输出以下结果。C+ languge programmingThe end at this time of day!#include<iostream.h>#include<string.h>class Apublic:static int i;char *ps;A(char ) /*sps=new charstrlen(s)+1;strcpy( ,s); /psA()if( ) cout<&l

24、t;"The end" /i=0else cout<<"at this time of day!n "if(ps) deleteps;i+; A & operator=(A &b)if(b.ps)ps=new charstrlen( )+1; / b.ps strcpy(ps,b.ps);else ps=0;return ; /*this;int A:i;void main()A s1("programming"),s2("C+ languge");cout<<s2.ps&l

25、t;<'t's2=s1;cout<<s2.ps<<'n'3. 以下程序功能是:从一个字符串str中删除或添加一个指定的字符,若指定的字符c出现在str中,则从str中删除第一个值为c的字符;否则把字符c添加到str的尾部。在程序中,函数dele()从字符串中删除一个字符;函数add()添加一个字符到字符尾部;函数search()用于查找指定的字符是否在字符串中,若在,则返回所在位置,否则返回0。 #include <iostream.h>#include<iostream.h>char *sercher(ch

26、ar *s,char ch)while(*s)if(*s+=ch) return ; /s-1return 0;void dele(char *s,char ch)char *p1=search(s,ch),*p2=p1+1;while(*p2) *p1+= /*p2+*p1='0'void add(char *s,char ch)while(*s) s+; =ch;*s='0' /*s+void main()char str80="abc12123",c;cout<<str<<'n'cout<&

27、lt;"输入一个字符"cin>>c;void ;if(search(str,c) fp=dele; /(*p)(char *,char)else fp=add;fp( );cout<<str<<'n' / (str,c)4. 班主任根据全班n个学生某课程的考试成绩建立一个链表,每个节点包括学号、成绩和该成绩在全班的名次。最后按排名顺序输出学号和成绩。程序10分#include<iostream.h>struct node int grade,n; long num; node *point;node *tran

28、s(node *h,int n) /建立含报名者的档案链表 node *p; p=new node; cin>>p->num>>p->grade; p->n=0; ; / node *h=p for(int i=0;i<n-1;i+)p->point=new node; ; /p=p->point;cin>>p->num>>p->grade;p->n=0; p->point=NULL; return h;node *sort(node *head,int n) /按成绩排名次并输出 no

29、de *p,*q; int t=0,k=1; p=head; while(k<=n) p=head;while(p!=NULL)if( &&p->grade>t) /p->n=0t=p->grade; q=p; p=p->point;else p=p->point;q->n=k; ; /k+; ; /t=0;cout<<q->num<<'t'<<q->grade<<'t'<<q->n<<'n'

30、return head;void main()node *student; int n; student=NULL; cin>>n; student=trans(student,n); cout<<"nnumber:"<<'t'<<"grade:"<<'t'<<"排名:n" student=sort(student,n); 5. 以下程序定义了一个二维坐标点类Point,派生矩形类Square。矩形左下角坐标从基类继承,矩形类只定义

31、右上角坐标,还定义表示颜色的字符串。执行下面的主程序将得到结果:矩形s1: x=1 y=3 width=5 , high=6 , color = red 矩形s2: x=1 y=3 width=5 , high=6 , color = redYellow程序10分#include<iostream.h>#include<string.h>class Pointprivate:double x,y;public:Point(double xv=0,double yv=0)x=xv;y=yv;double getx()return x;double gety()return

32、 y;void Show()cout<<"x="<<x<<" y="<<y;/输出对象信息;class Square:public Point /带颜色的矩形(square)类double hx,hy;char *color;public:Square()hx=0;hy=0;Square(double xv,double yv,double hxv,double hyv,char *s): (11)hx=hxv;hy=hyv;color=new char9;strcpy(color,s);Square( )

33、:Point(rr) /拷贝构造函数 / Square&rrhx=rr.hx;hy=rr.hy;color =new charstrlen( )+6; /rr.colorstrcat(strcpy( )," "); /color, rr.color /Yellowvoid Show();void Square:Show() /输出矩形的左下角坐标、宽度、高度和颜色Point: ; /Show()cout<<"twidth="<<hx<<','<<"high="<<hy; cout<<",color="<<color<<'n'void main()Square s1(1,3,6,9,"red"),s2(s1);cout<<"矩形s1:"<<'t' s1.Show(); cout<<"矩形s2:"<<'t' s2.Show();6. 以下程序实现一个由动态数组构成的线性表的类,在

温馨提示

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

评论

0/150

提交评论