C,C++考试试题.doc_第1页
C,C++考试试题.doc_第2页
C,C++考试试题.doc_第3页
C,C++考试试题.doc_第4页
C,C++考试试题.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

密级:机密嵌入式事业部第一开发中心2008年C/C+中级考试试题时间:150分钟 姓名: 项目组: 成绩:一、单项选择题(每题2分,共30分)(1)下面对静态数据成员的描述中,正确的是( )(A) 静态数据成员可以在类体内进行初始化 (B) 静态数据成员不可以被类的对象调用(C) 静态数据成员不能受private控制符的作用(D) 静态数据成员可以直接用类名调用(2)对以下const的使用方法不正确说明是( ) (1)const int* AA(); (2)int BB(int* const pa); (3)int CC(const int* pa); (4)int D:DD(void) const; (A)(1)的作用是防止AA函数返回的int*被修改; (B)(2)的作用是防止在BB函数内参数pa的值被修改; (C)(3)的作用是防止在CC函数内参数*pa的值被修改; (D) (4)的作用是防止DD函数在执行过程中修改DD类的数据成员或者调用非const函数;(3)设有以下宏定义:#define N 3 #define Y(n) (N+1)*n) 执行语句z=2*(N+Y(5+1);后,z的值为( )。 (A)出错 (B)42 (C)48 (D)54(4)有以下程序 main() int x8=8,7,6,5,0,0, *s; s=x+3; printf(%dn,s2); 执行后输出结果是( )(A) 随机值 (B) 0 (C) 5 (D) 6 (5)一个栈的入栈序列是A,B,C,D,E,则栈的不可能的出栈序列是( ) (A)EDCBA (B)DECBA (C)DCEAB (D)ABCDE(6)有如下定义int a10;int *pa;pa = a;则元素a1的地址可以表示为( )(A)pa+1(B)pa+2(C)pa+4(D)a+2(7)阅读下面代码后回答问题int a, b, c; int res1,res2;double d,e,f;double res3,res4;res1 = a * b / c; res2 = a / c * b;res3 = d * e / f;res4 = d / f * e;关于res1与res2的关系、和res3与res4的关系描述正确的是( )A) res1与res2一定相等,res3与res4一定相等;B) res1与res2不一定相等,res3与res4一定相等;C) res1与res2不一定相等,res3与res4不一定相等;D) res1与res2一定相等,res3与res4不一定相等;(8)在一个单链表中,已知p所指向是当前结点,若在当前结点之后插入结点q ,则应该这样做( )。(A) p-next = q;q-next = p;(B) q-next = p-next; p-next = q;(C) p-next = q;q-next = p-next; (D) q-next = p-next;p-next = p;(9)下列关于C语言的局部变量和全局变量所采取的存储类别的描述中,错误的是( ) (A)动态局部变量一旦离开函数,其值就消失(B)静态局部变量离开函数,其值仍保留(C)寄存器变量一旦离开函数,其值就消失(D)静态外部变量既可以在本文件引用,也可以在其他文件引用(10)设x,y,t都是int型变量,则执行语句后x =5;y =3;t = +x | +y;y的数值为( )(A) 5 (B) 6 (C) 3 (D)4(11)下面代码被执行后,正确的一组数值是( )int Data = 1;int &Ref = Data;int *pData = &Data;Ref+;pData+;(A) Data的数值是2,Ref的数值是2,*pData的数值是3;(B) Data的数值是1,Ref的数值是2,*pData的数值是不确定的数值;(C) Data的数值是2,Ref的数值是2,*pData的数值是不确定的数值;(D) Data的数值是3,Ref的数值是3,*pData的数值是3;(12)以下程序的输出结果是( ) func () char *s = 121; int k = 0, a = 0, b = 0; do k+; if (k % 2 = 0) a = a+sk - 0; continue; b = b+sk- 0; a = a+sk- 0; while (sk+1); printf(k=%d, a=%d, b=%dn, k, a, b);(A)k=3, a=2, b=3(B)k=3, a=3, b=2(C)k=2, a=3, b=2(D)k=2, a=2, b=3(13) 已知类实现如下:enum ShapeColorRED, GREEN, BLUE;一个表示几何形状的类class Shape public:virtual void Draw(ShapeColor color = RED) = 0;class Rectangle : public Shape public:virtual void Draw(ShapeColor color = GREEN);class Circle : public Shape public:virtual void Draw(ShapeColor color );.Shape*pc = new Circle;Shape*pr = new Rectangle;pc-Draw(); pr-Draw(); 下面说法正确的是( )(A)pc-Draw() 实现是Circle:draw(RED),pr-Draw() 实现是Rectangle:draw(GREEN);(B)pc-Draw() 实现是Circle:draw(RED),pr-Draw() 实现是Rectangle:draw(RED);(C)pc-Draw() 实现是Circle:draw(GREEN),pr-Draw() 实现是Rectangle:draw(GREEN);(D)pc-Draw() 实现是Circle:draw(GREEN),pr-Draw() 实现是Rectangle:draw(RED);(14)设有以下程序段: int x=0,s=0; while(!x!=0)s+=+x; printf(%d,s); 则 ( )(A)运行程序段后输出0 (B)运行程序段后输出1 (C)程序段中的控制表达式是非法的 (D)程序段执行无限次(15)有如下代码,执行后的输出是( )class CParent public:.virtual int WhoLikeThisGame(int x);private:char *m_pcData;int CParent:WhoLikeThisGame (int x).Cout”Parent Like This Game”;.class CChild : public CParent public:.virtual int WhoLikeThisGame(char x);private:char *m_piValue;.int CChild: WhoLikeThisGame (char c).Cout WhoLikeThisGame(10);输出选项:(A)Parent Like This Game(B)Child Likes This Game(C)Child Likes This Game Parent Like This Game(D)Parent Like This Game Child Likes This Game二、阅读程序并补全(每空3分,共15分)类MyString有如下定义。请按要求将程序补充完整。(1)每空是一小段程序。(2)类中请用new和delete进行内存的管理;(3)函数Reverse()的作用是将MyString的内容进行翻转,例如;“ABC”翻转后是“CBA”。在翻转过程需要在MyString本身上做,不能额外分配空间。(4)函数toInt()的作用是将Mystring的内容转化成整数,成功返回整数值,否则返回-1。转化过程中忽略负数的情况。例如:“123”转化后是123,“asd123”,“-123”都转化成-1.(5)禁止使用库函数。class MyStringpublic: MyString(); MyString(const char * cstr); MyString& operator=(const MyString& str); MyString(); void Reverse(); int toInt(); private: char* m_data;MyString:MyString() m_data = NULL;MyString:Mystring(const char* cstr) 1 _MyString& MyString:operator=(const MyString& str) 2 _MyString:MyString() 3 _void MyString:Reverse() 4 _ int MyString:toInt() 5 _三、说明以下程序中有哪些错误,并改正(每题4分,共20分)1、void foo() char *p = NULL; char *q = ABCDEF; p = malloc(sizeof(q); strcpy(p,q);2、char *func(int n) char *str = True, False; char *p = NULL; if (n 0) p = str0; else p = str1; return p;3、#include stdio.hclass Printer public: void Print(int n) printf(This number is %dn, n);class MyClass private: Printer *printer;public: MyClass() printer = new Printer; ; MyClass() if (printer) delete printer; printer = NULL; ; Printer *GetPrinter() return printer; ;4、enum EM_STARTMODE BREW_START_IMP_MENU = 0, BREW_START_IMP_REMOCON, BREW_START_IMP_BROWSER, BREW_START_IMP_MAILER, BREW_START_IMP_IDLE, BREW_START_IMP_BROWSIMP, BREW_START_IMP_SP, BREW_START_IMP_DF, BREW_START_IMP_END;static const char * const fromid= mainmenu, remocon -bgm, browser, mailer, idle, brows_imp, df, ;void makeStr(char *buff, enum EM_STARTMODE StartMode) strcpy(buff, -from=); strcat(buff, fromidStartMode);5、void foo() int a = 1; int b = 2; int c = 3; int *p; p = &a;#ifdef DEBUGIT printf(a = %dn, *p); printf(b = %dn, *(p + 1); printf(c = %dn, *(p + 2);#endif四、简答题(每题3分,共15分)1在C+ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?2. 问运行下面几个Test函数会有什么样的结果,并说明原因。(1)void func(char *p) p = (char *)malloc(100);void Test(void) char *str = NULL; func(str); strcpy(str, hello world); printf(str);(2)Void func(char *p, int num) *p = (char *)malloc(num);void Test(void) char *str = NULL; func(&str, 100); strcpy(str, hello); printf(str); (3)void Test(void) char *str = (char *) malloc(100); strcpy(str, “hello”); free(str); if(str != NULL) strcpy(str, “world”); printf(str); 3 请改写以下程序,达到代码优化的目的(提示:可以拆成多个函数实现),并说明优化的原因void ABadFunction() TBigObject Object1; TBigObject Object2; TBigObject Object3; GetTwoObjectValues(Object1,Object2); Object3=SumObjects(Object1,Object2); FunctionWithUnknownStackOverhead(Object3);五、编程题(每题10分,共20分。本题请答在卷纸

温馨提示

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

评论

0/150

提交评论