C++复习(2013秋)_第1页
C++复习(2013秋)_第2页
C++复习(2013秋)_第3页
C++复习(2013秋)_第4页
C++复习(2013秋)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

C+等级考试复习一、选择题1.(2001年秋) 设有说明: int x=10,y=4,f;float m; 执行表达式f=m=x/y后,则f、m的值分别为 。 A. 2, 2.5 B.3, 2.5 C. 2.5, 2.5 D. 2, 2.02. (2003秋)设有说明语句:char s = ef0123n89;sizeof(s)的值是 。 A. 2 B. 9 C. 11 D. 153. (2002年春) 实型变量x 的取值范围为闭区间 -2,10或开区间(15,34),则正确表示x取值范围的逻辑表达式是 。A.-2=x =10|15x40 B. (-2=x & x=10)|(15x& x34) C. -2=x =10&15x40 D. (-2=x & x=10)&(15x& x34)4. (2003秋)设x为整数,C+中能正确地表达数学式0x 5的是 。 A. 0=x=0|x5D. !(x=5)5. (2009年春) 以下关于break语句的描述中,不正确的是 。Abreak语句可用在循环语句中,其作用是结束本层循环的执行Bbreak语句可用switch语句中,其作用是结束该switch语句的执行Cbreak语句可用if语句中,其作用是结束该if语句的执行Dbreak语句在同一循环体中可以多次使用6. (2011秋)C+的break语句 。A用在能出现语句的任意位置 B只能用在循环体内C只能用在循环体内或switch语句中D能用在任一复合语句中7. (2003秋)以下四组函数原型说明中,满足C+函数重载规则的是 。A. float f(float x);void f(float y); B. float f(float x);void f2(float x,float y);C. float f(float x, int y);void f(float y); D. float f(float y); float f(float y);8.(2005秋)函数重载是指 。 A函数名相同,但函数的参数个数不同或参数的类型不同 B函数名相同,但函数的参数个数不同或函数的返回值的类型不同C函数名不同,但函数的参数个数和参数的类型相同 D函数名相同,但函数的参数类型不同或函数的返回值的类型不同9.(2011春)下述关于函数重载的描述中,不正确的是 。A两个或两个以上的函数取相同的函数名,但形参的个数不同B两个或两个以上的函数取相同的函数名,各函数的返回值的类型必须不同C两个或两个以上的函数取相同的函数名,形参的个数相同但类型不同D两个或两个以上的函数取相同的函数名,形参的个数不同或类型不同10. (2012春)C+中,函数重载是指两个或两个以上的函数,其函数名 。A不同,但形参的个数或类型相同B相同,但返回值类型不同C相同,但形参的个数或类型不同D相同,形参的个数相同,但其类型不同11.(2002秋)下列关于类的构造函数和析构函数的叙述中,不正确的是 。 A. 类的析构函数可以重载 B. 类的构造函数可以重载 C. 定义一个类时可以不显式定义构造函数 D. 定义一个类可以不显式定义析构函数12.(2003春)以下有关对象的叙述中,不正确的是 。A. 产生对象时必定要调用构造函数 B. 撤消对象时必定要调用析构函数 C. 对象被保护,其私有成员不能任意访问 D. 对象可以没有构造函数或析构函数13.(2011春) 以下有关this指针的叙述中,不正确的是 。A当调用对象的非静态成员时,总存在一个this指针B非静态成员函数调用类中的成员时,可直接使用this指针Cthis指针隐含地指向要用到的当前对象D静态成员函数也存在this指针14.(2010春)类的成员函数中,没有this指针的是 。 A构造函数B析构函数C虚函数D静态成员函数15.(2003秋)下面有关运算符重载的叙述中,正确的是 。 A. 非静态成员函数重载运算符时带有this指针 B. 友元函数重载运算符时带有this指针C. 成员函数与友元函数重载运算符时都不带有this指针D. 用成员函数或友元函数重载同一运算符时,两者的参数类型与参数个数相同16.(2004春) 以下有关析构函数的叙述中,正确叙述的是 。 A. 析构函数可以有一个或多个参数 B. 可以重载析构函数 C. 析构函数可以定义为虚函数 D. 必须显式地自定义析构函数17.(2004春)下面有关基类与其派生类的的叙述中,正确的是 。A. 派生类对象不能赋给基类对象B. 派生类对象的地址不能赋给其基类的指针变量C. 基类对象不能赋给派生类对象D. 基类对象的地址能赋给其派生类的指针变量18.(2006秋) 下列关于赋值兼容规则的叙述中,不正确的是 。A. 派生类的对象可以赋值给基类的对象 B. 基类的对象可以赋值给派生类的对象C. 派生类的对象可以初始化其基类的引用D可以将派生类对象的地址赋值给其基类的指针变量19.(2011秋) 在C+中,没有this指针的函数是 。A静态成员函数B构造函数C析构函数D非静态的内联成员函数20.(2011秋)以下关于C+类的叙述中,不正确的是 。 A.类可以动态地描述和动态地产生B. 虚基类可以解决多重继承中的二义性C.类是具有相同行为的若干对象的统一抽象D类是创建对象的一个模板二、填空题1.(2006秋)当一个类的非静态成员函数被调用时,该成员函数的 指向调用它的对象。2.(2008春)在C+中,重载赋值运算符“=”和下标运算符“ ”等只能用 实现,而重载插入运算符“”等只能用 实现。 (成员函数,友元函数)3.(2001年秋)多态性分为两种:静态多态性和动态多态性。函数重载属于二种多态性中的哪一种: 。4.(2002秋)设有语句: int a=6,b=3;float x=8,y; y=b/a*x/2; 则y的值为 。5.(2003春)设有语句:char s=China0Nanjin;int m=strlen(s); 则m的值为 。(引号,ASCII值,换行符)6.(2003春)在C+中函数的参数传递方式有三种:第一种是值传递,第二种是指针传递,第三种是 传递。7.(2004春)函数重载是指函数名相同,但函数的(1) 不同或函数的(2) 不同。8. 程序(2002年春)#include void s(int a, int &b) int t=a; a=b; b=t;void main(void) int x=500,y=1000; coutxtyn; s(x , y); coutxtyn;程序的第一行输出为 (1) ,第二行输出为(2) 。9. 程序(2004春)(全局变量通过指针传递)#include int z;void fun(int x, int &y)z=x; x=x+y; y=y+z;coutx,y,zendl;void main(void)int x=5,y=10; z=15;fun(x,y);coutx,y,zendl;程序的第一行输出为 (1) ,第二行输出为(2) 。10. 程序(2004秋)(内部循环)#include void fun(int *a, int *b)(*a)+; *b+; *a+; (*b)+;cout*at*bendl;void main (void)int c13=10,20,30, c23=40,50,60;fun(c1, c2);coutc10tc11endl;coutc20tc21endl;程序的第一行输出为 (1) ,第二行输出为(2) ,第三行是 (3) 。11. 程序 (2002秋)#include class A int x, n; int mul;public:A(int a, int b) x=a; n=b; mul =1; virtual int power(void) mul=1; for(int i=1;i=n;i+) mul*=x; return mul; void show(void) cout mult; ;class B:public A int y, m; int p;public:B(int i, int j, int k, int h): A(i, j) y=k; m=h; p=10; int power(void) p=1; for(int i=1;i=m;i+) p*=y; return p; void show(void) A:show(); coutpn; ;void fun(A *f) coutpower()n; void main( )A a(5, 3); B b(2, 4, 3, 3); fun(&a); fun(&b); b.show();程序输出的第一行和第三行分别是 (1) , (2) 。12. 程序(2003秋)#include int s(int (*f)( int ), int m, int n) int k, sum=0; for(k=m; k=n;k+) sum+=f(k) + f(k); couts=sumendl; return sum;int f1(int x) return x+=2;int f2(int x) return x-=2;void main(void) coutresult=(s(f1,1,2)+s(f2,1,2)endl; 程序输出的第一行是 (1) ,第三行是 (2),第五行是 (3)。13. 程序(2003年春)#includeclass Shape public:Shape() virtual float Area( )=0;class Circle:public Shape float r;public:Circle(float c) r=c; float Area() return 3*r*r; ;class Rectangle:public Shape float h,w;public:Rectangle(float c, float d) h=c; w=d; float Area() return h*w; ;void fun(Shape *s) coutArea()n; void main(void)Circle c(4);fun(&c);Rectangle r(5,2); fun(&r);程序输出的第一行是 (1) ,第二行是 (2) 。14. (2003年春) 以下程序的功能是求三角函数sinx的近似值。求sinx近似值的计算公式为: 。其中x的值为弧度。当输入的x值为度数时,要求出sinx的近似值,必须将度数转换为弧度。转换公式为:y=3.1415926x/360要求计算精度达到0.000001。程序 #include#includedouble sin(double x, double eps)double term,sum,y;int n = 1 ;y=x*x;term= (1) ; / xsum = 0;while( fabs(term) =eps)sum += (2) ;/ termn+;term=term*y/ (3) ; / (2*n-2)*(2*n-1)term *= -1;return (4) ;/ sum+term 或 sumvoid main(void)double x,y;coutx;while(x360) x-=360;y=3.1415926*x/180;cout度数为:x;cout其sin值为:sin(y,1e-6)next!=NULL)p1=p;p2=p-next;while(p2!=NULL) if( (1) )/ p2-data datap1=p2;p2=p2-next;if(p!=p1)int t;t=p-data; p-data = (2); / p1-data(3) = t;/ p1-data(4);/ p=p-nextreturn head;16.(2008年春)在以下程序中,函数CreateLink()根据键盘输入的数据建立一个单向无序链表,链表上的每一个结点包含一个整型数;函数SortLink()通过改变结点在链表中的位置将链表调整为一条有序链表;函数PrintLink()将链表上的数据输出;函数DeleteLink()将链表删除。程序 #include struct node int data; node *next; ;node *CreateLink(void) /创建无序链表node *p1, *p2, *head=0;int a;cout a; while (a!= -1)p1 =new node;p1-data = a;if (head=0) head=p1; p2=p1; else (1) / p2-next=p1;p2=p1; cout a;p2-next=0;return (head);void SortLink(node *&head) /通过移动每个节点的指针来完成链表排序 node *q,*tq,*p,*tp;int flag=0; if (!head) return; for (q=head,tq=0; q; q=q-next) for (tp=q,p=q-next;p;tp=p,p=p-next) if (q-data=p-data) /将p和q指向的两个节点所处位置互换 (2) /tp-next=p-next;p-next=q;q=p;p=tp; if (!tq) head=q; else tq-next=q; tq=q; void PrintLink(node *head) / 打印链表node *p = head ; cout 链上各结点的数据为:n; while ( p!= NULL) cout data next; cout next; (4) /delete p1;void main(void) node *head=0;head=CreateLink(); PrintLink(head); SortLink(head);PrintLink(head);DeleteLink(head);17.(2011春)在以下程序中,函数create()根据键盘输入的整数建立一条单向无序链表,链表上的每一个结点包含一个整数;函数sort()根据链表结点的数据按从小到大的顺序将链表调整为一条有序链表;函数print()将链表上的整数依次输出;函数del()将链表删除。排序算法提示:(1)初始时,使p指向链表的首结点,(2)从p之后的所有结点中找出data值最小的结点,(3)让p1指向该结点,并将p指向结点的data值与p1指向结点的data值进行交换,让p指向下一个结点,(4)重复步骤(2)和(3),直至p指向链表的最后一个结点为止。程序 #include参考答案:1. p2=p-next或 p2

温馨提示

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

评论

0/150

提交评论