1、程序设计基础(C+)试卷(A)考试时间为120分钟 考试形式:闭卷 题号一二三四总 分得分阅卷人合分人请同学们将答案填写在后面的答题卡中,注意相应的题号一、 单项选择题(本大题共10小题,每小题2分,共20分)1、若有以下定义,int a=100,*p=&a ; 则说法错误的是( D )。 A声明变量p,其中*表示p是一个指针变量 B变量p经初始化,获得变量a的地址C变量p只可以指向一个整型变量 D变量p的值为1002、假定建立了链表结构,指针p,q分别指向相邻的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是( )。Adelete q; p-next=q-next; B. (*
2、p).next=(*q).next; delete q;Cq=(*q).next; (*p).next=q;delete q; Dq=q-next; p-next=q; p=p-next; delete q;3、.若有下面的说明和定义:struct test int ml; char m2; float m3; union uuchar ul5; int u22; ua;myaa;则 sizeof(struct test)的值是( )。A12 B14 C17 D94、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。AMyClass &(MyClass x) BMyClass
3、 (MyClass x)CMyClass (MyClass &x) DMyClass (MyClass *x)5、下面对于友元函数描述正确的是( )。A友元函数不破坏类的封装性,可尽量使用 B友元函数是类的成员函数C友元函数可以是一般函数,也可以是另一个类的成员函数 D友元函数不能访问类的所有数据成员6、类的析构函数是在( )时候系统自动调用的?A类创建时 B创建对象时 C删除对象时 D不自动调用7、若有BOX类的对象s1,用s1复制另一个对象s2,正确的是( )A.s2=s1; B.BOX s2(s1); C.BOX s1(s2); D.s2=new(s10);8、下列有关运算符重载的描述中
4、,( )是正确的。A运算符重载可改变其优先级 B运算符重载不改变其语法结构 C运算符重载可改变其结合性 D运算符重载可改变其操作数的个数9、在C+语言程序中,对象之间的相互通信通过( ). A.继承实现 B.调用成员函数实现 C.封装实现 D.函数重载实现10、以下( )成员函数表示虚函数。 Aint virtual vf(); Bvoid vf(int)=0; Cvoid vf()=0; Dvirtual void vf(int);二、填空题(本大题共10小题,每小题1分,共10分)11、定义 int y为x的引用,则定义语句为【 】。12、设 union int a; char c99;
5、b; 则sizeof(b)的值是【 】。13、假定类AB中有一个公用属性的静态成员bb, 在类外不通过对象名访问该成员 bb 的写法为【 】。14、若需要把一个函数 void f( ); 定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句【 】。15、生成一个派生类对象时,先调用【 】的构造函数,然后调用派生类的构造函数。 16、派生类构造函数的初始化列表中包含【 】。17、动态联编调用函数操作是指向对象的【 】或对象引用。18、 语句ofstream f (SALARY. DAT,ios:app);的功能是建立流对象f, 试图打开文件SAL:aRY. DAT并与之连接,ios:ap
6、p文件操作方式为【 】。19、文件访问方式有两种,顺序访问和【 】。20、已知enum colorred,yellow=5,white,black;则执行coutred+black后的值是【 】。三、程序分析、运行题(本大题共6小题,共30分,每小题5分)21、分析程序,写运行结果。#includeusing namespace std;void fun(int *p,int m) int i; for( i=0;im;i+) *p+=i*i+1;void main() int i,*b=new int5; fun(b,5); for( i=0;i5;i+) coutbi ; coutendl
7、; delete b;22、下列函数sort用冒泡法实现对字符串按字典顺序由小到大排序,程序填空。void sort(char *p,int n) / 定义指针数组 p, n个字符串char ; /第1空 int i,j; for(i=0;in-1;i+) for(j=0;j0 ) / 第 2空 temp=pj; pj=pj+1 ; pj+1=temp; 23、下面是包含子对象的派生类的构造函数。写出运行结果。#include #include using namespace std;class Student public: Student(int n, string nam ) num=n
8、; name=nam; void display( ) coutnum:numendlname:nameendl;protected: int num; string name;class Student1: public Student public: Student1(int n, string nam,int n1, string nam1,int a, string ad) :Student(n,nam),monitor(n1,nam1) age=a; addr=ad; void show( ) coutThis student is:endl; display(); coutage:
9、 ageendl; coutaddress: addrendlendl; void show_monitor( ) coutendlClass monitor is:endl; monitor.display( ); private: Student monitor; int age; string addr;int main( ) Student1 stud1(10010,Wang-li,10001,Li-sun,19,115 Beijing Road,Shanghai); stud1.show( ); /输出学生的数据stud1.show_monitor(); /输出子对象的数据retur
10、n 0;24、下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离。程序填空。#include #inlclude using namespace std;class Point public: /第1空Point(float a,float b) X=a; Y=b;void Print()cout”X=”Xendl; cout”Y=”Yendl; private: float X,Y; ;class Distance public: float Dis(Point & p,Point & q); ;float Distance:Dis(Point & p,Poin
11、t & q) float result; result= /第2空coutresultendl;return result;int main() Point p(10,10), q(20,20); Distance d; d.Dis(p,q); return 0; 25、下面是一个类的测试程序,设计出能使用如下测试程序的类。测试结果:8-5=3void main() Test a; a.init(8,5); a.print(); 26、下列函数功能是输出两个字符串对应位置相等的字符。将代码补充完整。void outstring(char *str1,char *str2) while(*str
12、1!=0&_) /第1空 if (*str1 = *str2) cout*str1endl; str1+;_ _; /第2空四、程序设计题(本大题共4小题,共40分) 27、根据以下链表示意图,设计链表综合操作程序。2个模块分别为:创建动态链表creat()、遍历链表print()。(16分) data nexthead 8 4 3 . #define NULL 0struct listchar data; list *next; ;list *creat( void) return head; void print(list *head)28、将运算符“-”重载为适用于复数加法,重载函数作为
13、成员函数。输出数据函数display()为类的成员函数。(8分)#include using namespace std;class Complex;int main( ) Complex c1(3,4),c2(5,-10),c3;c3=c1-c2;coutc1=; c1.display( );coutc2=; c2.display( );coutc1-c2 =; c3.display( );29、输入3个整数,调用函数实现按由小到大排序(用指针法实现)(8分)#include using namespace std;int main()void sort(int *,int *);couta”,”b”,”ceddl;void sort(int *p,int *q)(30、建立磁盘文件f1.dat(文本文件),从键盘输入20个整数存放在f1.dat中。(8分)#include#includeusing namespace std;int main()注意:按屏幕输出格式写答案得分答 题 卡12345678910得分11121314151617181920得分212223242526得分27得分 : 28得分 : 29得分: 30得分:第 4 页 共 4 页