资源描述
中国地质大学(武汉)20112012学年第一学期高级语言程序设计(VC+)考试笔试卷A使用班级:考试日期:2011.12.08一、 选择题(在A、B、C、D中选择一个正确的,每题1分,共30分。用答题纸答题,答案依次填在130答题号内)1.以下各标识符中,合法的用户标识符组为 1 。 A)PAd,P#d,b-b,abc,_0123,ssiped B)cin,a10,CPP,float,del_word,signed C)void,max,hiy,list,*jer D)a,temp,_isw,INT,keep,wind2.在VC+中,以下语句的输出为 2 。 short int k=-1; cout k , (unsigned short)k endl; A)-1,-1 B)-1,32767 C)-1,32768 D)-1,655353.若a,b均为int型变量,为了将10赋给a,将20赋给b,则对应以下cin语句的正确输入方式为 3 。(代表回车换行,代表空格)。 cin a b; A)1020 B)10_20 C)10,20 D)20_104.若给出以下程序,其输出为 4 。 #include void main(void) int a=4,b=7; cout (a=a+1,b+a,b+1) endl; A)5 B)8 C)11 D)程序有错误,无法运行5.在以下关于C+语言的注释的叙述中,不正确的是 5 。 A)在C+程序中,注释可用/*、*/形式表示,也可用/形式表示 B)C+编译器在编译一个程序时,将跳过注释,不对其进行处理 C)C+编译器在编译一个程序时,可发现注释中的单词拼写错误 D)程序中注释的多少不会影响所生成的可执行文件的长度6.若给定条件表达式(m)?(a+):(a-),则其中表达式m 6 。 A)和(m=0)等价 B)和(m=1)等价 C)和(m!=0)等价 D)和(m!=1)等价7.在C+语言的if语句中,用作判断的表达式为 7 。 A)关系表达式 B)逻辑表达式 C)算术表达式 D)任意表达式8.设i和k都是int类型,则以下for循环语句 8 。 for(i=0,k=-1;k=1;i+,k+) cout *n; A)判断循环结束的条件不合法 B)是无限循环 C)循环体一次也不执行 D)循环体只执行一次9. 字符串”EOF=-61”的长度是 9 。A) 8 B) 9 C) 12 D) 非法字符串10. 已知int a32=3,2,1; 则表达式“a00/a01/a02”的值是 10 。A) 0.166667 B) 1 C) 0 D) 错误的表达式11. 已知char a 20=“Beijing”, “shanghai”, “tianjin”, “chongqing”; 语句cout0?sin(x):-sin(x) B. sqrt(fabs(sinx) C. sqrt(sqrt(sinx*sinx) D. fabs(sqrt(sin(x)22. 设int a=1,2,3,4,*p=a; 则 22 不能正确计算数组a的元素个数。 A. sizeof(a)/sizeof(int) B. sizeof(a)/sizeof(a0) C. sizeof(p)/sizeof(int) D. sizeof(a)/sizeof(1)23. 以下叙述不正确的是 23 。 A. 在C+程序中,严格区分大小写字母 B. 一个C+源程序有且仅有一个main函数 C. 在C+程序中,注释只能位于一条语句的后面 D. 一个C+程序总是从main函数开始执行24. 在C+语言程序中,当调用函数时, 24 。 A. 形、实参各占一个独立存储单元 B. 形、实参可以共用存储单元 C. 可由用户指定是否共用存储单元 D. 由系统自动确定是否共用存储单元25. 若有以下说明和语句,则 25 是对a数组元素的错误引用。 int a12=0,*p3,*pp=p,i; for(i=0;i3;i+) pi=&ai*4; A. a12 B. p23 C. a10 D. pp0126. 下列叙述中,不正确的是 26 。 A. 类的构造函数可以重载 B. 类的析构函数可以重载 C. 一个类可以不定义构造函数 D. 一个类可以不定义析构函数27. 下列叙述中,不正确的是 27 。 A. 含纯虚函数的类为抽象类 B. 不能直接由抽象类建立对象 C. 抽象类不能作为派生类的基类 D. 纯虚函数不能定义其实现部分28. 下列叙述中,不正确的是 28 。 A. this指针是指向当前调用成员函数的对象的指针 B. this指针可用于类中非静态的数据成员和函数成员 C. this指针破坏了类的封装性 D. this指针的类型与所指对象的类型相同29. 若有以下语句,则输出结果为 29 。 int a=2,b=1; cout b?a大于b:a小于b endl; A. a大于b B. a小于b C. 1 D. 输出语句有错30. 已知宏定义: #define N 3 #define Y(n) (N+1)*n)执行语句z=2*(N+Y(5+1); 后,变量z的值是 30 。 A. 42 B. 48 C. 52 D. 出错二、填空题(每个空格1分,共30分。请将答案填写在答题纸的相应答题号内,每个答案只占一行)基本概念题,共5分1. 执行语句coutx86082n;后,输出结果为 1 。2. 用new运算符申请动态对象时,系统将自动调用该对象的 2 。3. 定义内联函数的方法是在函数的返回值类型之前增加关键字 3 。4. 在多重继承时,若欲使公共基类只在派生类中产生一个拷贝,则应在派生类中将该基类用关键字 4 。5. 在C+的I/O流类库中,预定义了4个流,即cin、cout、cerr和clog,其中 5 不可重定向。阅读程序题,共13分6. 程序(2分) #include int m33= 1, 2, 3 , n33= 1, 2, 3 ; void main(void) coutm10+n00nm01+n10n; 程序的输出第一行是 6 ,第二行是 7 。7. 程序(2分) #include int f(char *s) char *p=s; while(*p) p+; return p - s; void main(void) coutf(“ABCDEF”); 程序的输出是 8 ,函数f的功能是 9 。8. 程序(2分) #include void f(int *s) static int j; do sj+=sj+1; while(+j2); void main(void) int k, a10=1, 2, 3, 4, 5;for(f(a),k=0; k5; k+) coutak; coutendl; for(f(a),k=0; k5; k+) coutak; coutendl; 程序输出的第一行是 10 ,程序输出的第二行是 11 。9. 程序(3分) #include int k=1; void f(int m) m+=k; k+=m; char k=B; cout k - A n; coutm,kn; void main(void) int i=4; f(i); couti,kn; 程序的输出第一行是 12 ,第二行是 13 ,第三行是 14 。10. 程序(2分) #include class A protected: int x; public: int& Access() return x; ; class B protected: int x; public: int& Access() return x; ; class C:public A,public B int y; public:C(int a,int b,int c) A:x=a; B:x=b; y=c; int& Accessy() return y; ; class D:public C int z; public: D(int a,int b,int c,int d):C(a,b,c) z=d; int& Accessz() return z; ; void main() D d(35,100,300,500);d.A:Access()+=20; d.B:Access()+=d.B:Access();coutd.A:Access(),d.B:Access()n;coutd.Accessy(),d.Accessz()n; 程序的输出第一行是 15 ,第二行是 16 。11. 程序(2分) #include class Shape public: Shape() virtual int Area()=0; ; class Circle:public Shape int r; public: Circle(int c) r=c; int Area() return int( 3.1415*r*r); ; class Rectangle:public Shape int h,w; public: Rectangle(int c, int d) h=c; w=d; int Area() return h*w; ; void fun(Shape &s) couts.Area()endl; void main() Circle c(4);fun(c); Rectangle r(10,2); fun(r); 程序的输出第一行是 17 ,第二行是 18 。完善程序题,共12分12. 下面的程序是统计学生中A类学生与B类学生各多少。A类学生的标准是平均分在80分以上,其余都是B类学生。程序(5分) #include int& level( 19 ,int size, 20 , 21 ) int i,sum; for(i=0,sum=0;i=80) return tA; else return tB; void main() int a4=60,80,90,75,75,85,65,77,80,88,90,98, 89,100,78,81,62,68,69,75,86,85,77,91; int i,A=0,B=0; for(i=0;isizeof(a)/ 23 ;i+) level(ai,4,A,B)+; coutA类学生人数为Aendl; coutB类学生人数为Bendl; 13. 以下程序中,数组类DArr通过重载运算符“”实现数组元素的顺序查找。 顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或查找到数组尾部时结束。若找到,返回此元素的下标;否则返回-1。#includeclass DArrint *a,n;/分别为动态数组的指针和元素个数public:DArr(const int*b=0,const int m=0)if(b)a=new int 24 ;for(int i=0;in;i+) ai=bi;else a=0,n=0;DArr() delete a; int& Elem(int i) return ai; int operator(int f)/在当前对象中顺序查找值为f的元素for(int i=0;in;i+)if( 25 ) return i;return -1;void main(void)int i,a5=1,2,5,0,-1;DArr d(a,5);if(i=d2)!=-1)/在d中查找值为2的元素cout找到指定元素,其下标为i,值为 26 endl;elsecout未找到指定元素n;14. 下列程序使用递归算法实现单向链表操作,具有创建、显示、释放链表的功能。#includestruct Lnodedouble data;Lnode* next;void ShowList(Lnode* list)if(list)coutdatanext) 27 ;void AddToEnd(Lnode* New,Lnode*&head)if(head=NULL)head=New;elseAddToEnd(New, 28 );void DeleteList(Lnode*& head)Lnode* p=head;if(p)head= 29 ;delete p;if(head) 30 ;void main()Lnode* head=NULL,*temp;temp=new Lnode;while(temp)temp-next=NULL;couttemp-data;if(temp-data0)AddToEnd(temp,head);else break;temp=new Lnode;ShowList(head);DeleteList(head); 20112012学年第一学期高级语言程序设计(VC+)考试笔试卷A参考答案一、选择题(每题1分,共30分)1D2D3B4B5C6C7D8B9A10B11C12A13C14C15D16C17B18C19C 20D21A22C23C24A 25A26B27C28C29D30B二、填空题(每个空格1分,共30分)1 x86 2 构造函数 3 inline 4 virtual 5 cerr和clog 6 3 7 0 8 6 9 求字符串的长度 10 35345 11 35745 12 1 13 5,6 14 4,6 15 55,200 16 300,500 17 50 18 20 19 int grade或int *grade 20 int &tA 21 int&tB 22 size 23 sizeof(a0) 24 n=m 25 ai=f 26 d.Elem(i) 27 ShowList(list-next ) 28 head-next 29 p-next 30 DeleteList(head)
展开阅读全文