1、程序设计基础(C++)试卷(A) 考试时间为120分钟 考试形式:闭卷 题号 一 二 三 四 总 分 得分 阅卷人 合分人 请同学们将答案填写在后面的答题卡中,注意相应的题号 一、 单项选择题(本大题共10小题,每小题2分,共20分) 1、.若有以下定义,int a=100,*p=&a ; 则说法错误的是( D )。 A.声明变量p,其中*表示p是一个指针变量 B.变量p经初始化,获得变量a的地址 C.变量p只可以指向一个整型变量 D.变量p的值为100 2、假定建立了链表结构,
2、指针p,q分别指向相邻的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是( )。 A.delete q; p->next=q->next; B. (*p).next=(*q).next; delete q; C.q=(*q).next; (*p).next=q;delete q; D.q=q->next; p->next=q; p=p->next; delete q; 3、.若有下面的说明和定义: struct test{ int ml; char m2; float m3; union uu{char ul[5]; int u
3、2[2]; } ua; }myaa; 则 sizeof(struct test)的值是( )。 A.12 B.14 C.17 D.9 4、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。 A.MyClass &(MyClass x) B.MyClass (MyClass x) C.MyClass (MyClass &x) D.MyClass (MyClass *x) 5、下面对于友元函数描述正确的是( )。 A.友元函数不破坏类的封装性,可尽量使用 B.友元函
4、数是类的成员函数 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、下列有关运算符重载的描述中,( )是正确的。 A.运算符重载可改变其优先级 B
5、.运算符重载不改变其语法结构 C.运算符重载可改变其结合性 D.运算符重载可改变其操作数的个数 9、在C++语言程序中,对象之间的相互通信通过( ). A.继承实现 B.调用成员函数实现 C.封装实现 D.函数重载实现 10、以下( )成员函数表示虚函数。 A.int virtual vf(); B.void vf(int)=0; C.void vf()=0; D.virtual void vf(int); 二、填空题(本大题共10小题,每小题1分,
6、共10分) 11、定义 int y为x的引用,则定义语句为【 】。 12、设 union { int a; char c[99]; }b; 则sizeof(b)的值是【 】。 13、假定类AB中有一个公用属性的静态成员bb, 在类外不通过对象名访问该成员 bb 的写法为【 】。 14、若需要把一个函数 void f( ); 定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句【 】。 15、生成一个派生类对象时,先调用【 】的构造函数,然后调用派生类的构造函数。 16、派生类构造函数的初始化列表中包含【 】。 17、动态联编调用函数操作是指向对象的【
7、 】或对象引用。
18、 语句ofstream f ("SALARY. DAT",ios::app);的功能是建立流对象f, 试图打开文件SAL:aRY. DAT并与之连接,ios::app文件操作方式为【 】。
19、文件访问方式有两种,顺序访问和【 】。
20、已知enum color{red,yellow=5,white,black};则执行cout<
8、fun(int *p,int m) {
int i;
for( i=0;i 9、① ; //第1空
int i,j;
for(i=0;i 10、>
using namespace std;
class Student
{public:
Student(int n, string nam ) {num=n; name=nam; }
void display( ) {cout<<"num:"< 11、
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( ) {cout<<"This student is:"< 12、show_monitor( ) {
cout< 13、 //输出学生的数据
stud1.show_monitor(); //输出子对象的数据
return 0;
}
24、下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离。程序填空。
#include 14、Y=b;}
void Print(){cout<<”X=”< 15、turn result;
}
int main(){
Point p(10,10), q(20,20);
Distance d;
d.Dis(p,q); return 0;
}
25、下面是一个类的测试程序,设计出能使用如下测试程序的类。测试结果:8-5=3
void main(){
Test a;
a.init(8,5);
a.print();
}
26、下列函数功能是输出两个字符串对应位置相等的字符。将代码补充完整。
void outstring(char *str1,char *str2) {
while 16、str1!=′\0′&&__①______) //第1空
{
if (*str1 == *str2) cout<<*str1< 17、 3 ..
#define NULL 0
struct list{char data; list *next;} ;
list *creat( void)
{
return head;
}
void print(list *head)
{
}
28、将运算符“-”重载为适用于复数加法,重载函数作为成员函数。输出数据函数display()为类的成员函数。(8分)
#include 18、class Complex
{
};
int main( )
{ Complex c1(3,4),c2(5,-10),c3;
c3=c1-c2;
cout<<"c1="; c1.display( );
cout<<"c2="; c2.display( );
cout<<"c1-c2 ="; c3.display( );
}
29、输入3个整数,调用函数实现按由小到大排序(用指针法实现)(8分)
#include 19、)
{
void sort(int *,int *);
cout<
#include






