1、满分 100 分,考试时间 2 个小时,请在答题纸上作答一、单选题(共10 题,每题1 分,共 10 分).1二、多选题(共5 题,每题2 分,共 10 分).2三、填空题(每空1 分,共 20 分).3四、判断题(共10 题,每题1 分,共 10 分).4五、简答题(共5 题,每题4 分,共 20 分).4六、程序分析题(共2 题,每题5 分,共 10 分).5七、编程题(共2 题,每题 10 分,共 20 分).6一、单选题(共 10 题,每题 1 分,共 10 分)1.break 关键字在哪一种语法结构中不能使用?()A.for 语句B.switch 语句C.if 语句 D.while
2、语句2.C 库函数 strstr 的功能是?()A.查找子串B.计算字符串长度C.字符串比较D.连结字符串3.若要打开A 盘上 user子目录下名为abc.txt 的文本文件进行读、写操作,下面符合此要求的函数调用是:()A)fopen(A:userabc.txt,r)B)fopen(A:userabc.txt,r+)C)fopen(A:userabc.txt,rb)C)fopen(A:userabc.txt,w)4.若有以下说明语句:struct STUDENT int num;char name10;float cj;a1=1001,”liming”,97.5,*p=&a1;不正确的输出语
3、句是:()。A printf(“%f”,a1.cj);B printf(“%f”,p-cj);C printf(“%f”,(*p).cj);D printf(“%f”,*p.cj);5.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为:()。A)log2n B)n2 C)O(n1.5)D)n(n-1)/2 6假定 AB 为一个类,则执行“AB a(4),b3,*p2;”语句时,自动调用该类构造函数的次数为()。A.3 B.4 C.6 D.9 7.关于 virtual void Draw()=0,下面说法正确的有几个()(1)它是纯虚函数(对)(2)它在定义它的类中不能实现(对)(
4、3)定义它的类不可实例化(对)(4)如果一个类要继承一个ADT类,必须要实现其中的所有纯虚函数(错)/可以不实现,派生之后的类仍旧作为一个抽象类.A.1 B.2 C.3 D.4 8.下列关于构造函数的描述中,错误的是()构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行构造函数可以是内联函数;D)构造函数不可以重载9、每个类()构造函数。A、只能有一个B、只可有公有的C、可以有多个D、只可有缺省的10、通过()调用虚函数时,采用动态绑定。A、对象指针B、对象名C、成员名限定D、派生类名二、多选题(共 5 题,每题 2 分,共 10 分)1.在 C 语言中,每个变量必须在使用前进行类型
5、说明或定义,这样可以()()为变量赋初值()规定该变量的取值范围()规定该变量所能进行的运算操作()方便在编译时为其分配存储单元()规定变量的个数2.设有以下说明和定义语句,则下面表达式中值为3 的是()。struct s int i1 struct s*i2;static struct s a3=1,&a1,2,&a2,3,&a0,*ptr;ptr=&a1;(A)ptr-i1+(B)ptr+-i1(C)*ptr-i1(D)+ptr-i1(E)(+ptr)-i1 3.下面哪些运算符不能被重载?()A.做用域运算符“:”B.对象成员运算符“.”C.指针成员运算符“-”D.三目运算符“?:”4.W
6、in32 下的线程的哪一种优先级最高?()A.THREAD_PRIORITY_HIGHEST 高优先级B.THREAD_PRIORITY_IDLE 最低优先级,仅在系统空闲时执行C.THREAD_PRIORITY_TIME_CRITICAL 最高优先级D.THREAD_PRIORITY_ABOVE_NORMAL 高于普通优先级5.下面四个选项中,哪一个不是WinMain 函数的参数?()A.HINSTANCE B.INT C.LPSTR D.WPARAM 三、填空题(每空 1 分,共 20 分)1.某 32 位系统下,C+程序,请计算sizeof 的值char str=“Hello”char*
7、p=str;int n=10;请计算sizeof(str)=_ sizeof(p)=_ sizeof(n)=_ void Foo(char str100)请计算sizeof(str)=_ void*p=malloc(100);请计算sizeof(p)=_ 2.定义 double*a34,则变量占有的内存空间为:_ 3.C+的特性有(、)4.在用 class 定义一个类时,数据成员和成员函数的默认访问权限是5.含有纯虚函数的类称为6.已知 int DBL(int n)return n+n;和 long DBL(long n)return n+n;是一个函数模板的两个实例,则该函数模板的定义是7.
8、定义重载函数时,应在和有所不同8 当建立一个新对象时,程序自动调用。9Windows API 的中文意义是_。10.CSingleLock 是用来11.GDI 的英文全文为,中文译文是。四、判断题(共 10 题,每题 1 分,共 10 分)1、有数组定义int a22=1,2,3;则 a01 的值为 0。()2.int(*ptr)(),则 ptr 是一维数组的名字。()3.指针在任何情况下都可进行,=,=,=运算。()4.switch(c)语句中 c 可以是 int,long,char,float,unsigned int 类型。()5.#define print(x)printf(the n
9、o,#x,is)()6.函数体内声明的静态变量,至多只会被初始化一次。()7.inline函数表示编译器一定会将函数体直接插入到调用此函数的地方,这样可以加快程序的运行速度。()8.将类 A所有构造函数的可访问性都限制为私有的,那么在main 函数中不可能得到类A的实例对象。()9.若在类 Base 和派生类Derived 中,分别声明一个同名的整型成员变量int x;,那么通过Derived类的实例对象,不可能输出基类Base 中的变量 x 的值。()10.虽然抽象类的析构函数可以是纯虚函数,但要实例化其派生类对象,仍必须提供抽象基类中析构函数的函数体。()五、简答题(共 5 题,每题 4
10、分,共 20 分)1.什么是“引用”?申明和使用“引用”要注意哪些问题?2.结构与联合有和区别?3列举几种进程的同步机制,并比较其优缺点。4进程和线程的差别。六、程序分析题(共 2 题,每题 5 分,共 10 分)1.求下面函数的返回值int func(x)int countx=0;while(x)countx+;x=x&(x-1);return countx;假定 x=9999。2写出下面程序的输出结果#include class A public:void FuncA()printf(FuncA calledn);virtual void FuncB()printf(FuncB calle
11、dn);class B:public A public:void FuncA()A:FuncA();printf(FuncAB calledn);virtual void FuncB()printf(FuncBB calledn);void main(void)B b;A*pa;pa=&b;A*pa2=new A;b.FuncA();(1)b.FuncB();(2)pa-FuncA();(3)pa-FuncB();(4)pa2-FuncA();(5)pa2-FuncB();delete pa2;七、编程题(共 2 题,每题 10 分,共 20 分)1.Windows下,写一函数void htonl(int*i),将一个整型变量的第一个字节和第四个字节交换,第二个字节和第三个字节交换。2编写类 String的构造函数、析构函数和赋值函数,已知类String的原型为:class String public:String(const char*str=NULL);/普通构造函数String(const String&other);/拷贝构造函数String(void);/析构函数String&operator=(const String&other);/赋值函数private:char*m_data;/用于保存字符串;