一、单选题(每小题2分,共12分)
1.在每个C++程序中都必须包含有这样一·个函数,该函数的函数名为( )。
A.maln B.MAIN C.name D.functiOn
2.设x和y均为b001量,则x&&y为真的条件是( )。
A.其中一个为假 B.其中一个为真 C.它们均为假 D.它们均为真
3.假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址
大( )。
A.1 B.2 C.4 D.8
4.设x和y均为bool量,则x︱︱y为假的条件是( )。
A.它们均为真 B.它们均为假 C.其中一个为真 D.其中一个为假
5.假定a为一个整型数组名,则元素a[4]的字节地址为( )。
A.a+4 B.a+8 C.a十16 D.a十32
6.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ( )。
A.iOS::in B.iOS::Out C.iOs::in︱iOs::Out D.没有
二、填空题(每小题2分,共24分)
1.若需要定义一个标识符常量,并且使C++能够进行类型检查,则应在定义语句的开始使用保留字——。
2.算术表达式+4b一1对应的c++表达式为——·
3.逻辑表达式x>y&&x!=l0的相反表达式为——。
4.逻辑表达式a<=b︱︱b==15的相反表达式为——。
5.假定一个二维数组的定义为“char*a[5][4];”,则该数组所含元素的个数为——,所占存储空间的字节数为——。
6.变量分为全局和局部两种,——变量没有赋初值时,将由系统自动置为o。
7.假定a是一个一维数组,则a[i]对应的存储地址(以字节为单位)为 ————。
8.假定一个结构类型的定义为“struct A{double a,b,A*c;};”,则该类型的大小为——字节。
9.假定要访问一个结构指针P所指对象中的b指针成员所指的对象,则表示方法为————。
10.在一个派生类中,对基类成员、类对象成员和非类对象成员的初始化次序是先——,后——,最后为——。
11.假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为——。
12.若需要把一个函数"void F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句
三、给出下列程序运行后的输出结果(每小题6分,共30分)
1. #include<iostream. h>
include<stdlib. h>
double SD(int a, int b, char op) {
double x;
switch(op) {
case'+': x= double(a)+b; break;
case'-':x=double(a)-b; break;
case'*':x=double(a)*b; break;
ease'/' ;if(b)x=double(a)/b;
else exit(l);
break;
default: exit (1);
return x;
void main() {
int x=20, y=5;
eout<<SD(x, y,'+')<<'';
court.SD(x, y,'*')<<'';
eout<<SD(x-y,y, '/')<<endl;
)
2. #include<iostream. h>
include<string, h>
void main() {
char*a[5]={"student", "worker", "cadre", "soldier", "apen"};
char *pl,*p2;
pl=p2=a[0];
for(int i=l; i<5; i++) {
if(strcmp(a[i], p1)>0) pl=a[i];
if(strcmp(a[i], p2)<0) p2=a[i];
)
cout<<pl<<''<<p2<<endl;
3. #include<iostream. h>
void WF(int x, int y) {
x=x+y;
y=x+y;
cout<<"subs:"<<"x, y="<<x<<","<<y<<endl;
void main() {
int x=8, y=l5;
cout<<"main:"<<"x, y="<<x<<i", "<<y<<endl;
WF(x, y);
X=2*X;
cout<<"main:"<<"x, y="'<<x<<", "<<y<<endI;
}
4. # include<iomanip, h>
void LG(int*& a, int& m) {
a=new int[m]
int* p=a;
for(int i=0, i<m, i++)
*p++=i*i+l,
}
void main() {
int * b, n=5,
LG(b, n);
for(int i=0; i<n; i++)
cout<<b[i]<<"
cout<<endl;
delete[Ih;
}
5. #include<iostream. h>
#include<string, h>
struct Worker {
char name[15]; //姓名
int age; //年龄
float pay; //工资
};
void main() {
Worker x;
char * t="WeiRong";
int d=45; float f=1235;
strcpy(x, name, t)
x. age=d; x. pay=f;
cout<<x, name<<''<<x. age<<''<<x. pay<<endl;
四、写出下列每个函数的功能(每小题6分,共24分)
1. int SC(int a, int b, iht c) {
if(a>b) a=b;
if(a>c) a=c;
return al
}
2. #include<iostream. h>
template<class TT>
TT WG(TT a, TT b) {
if(a>b) return 1;
else if(a==b) return 0;
else return --1;
}
3. struct StrNode {
char name[15];//字符串域
StrNode*next; //指针域
>;
void QB(StrNode * & f, int n) {
if(n==0) {f=NULL; return;}
f=new StrNode;
cin>>f->name;
StrNode 0, p=f;
while(--n) {
p=p->next = new StrNode;
cin>>p->name;
>
p->next=NULL;
}
4. //struct Worker {
// char name[15]; //姓名
// iht age; //年龄
// float pay; //工资
//};
istream & operator>>(istream & istr, Worker & x) {
cout<<"请输入一个职工记录:姓名、年龄、工资、"<<endl;
istr>>x.name>>x.age>>x.pay;
return istr;
}
五、(10分)
编一程序计算并输出12+22+...+n2的值,其中n值由键盘输入。