主题:C++的几个问题
一、单选题(每小题2分,共12分)
1.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为________。
A main B MAIN C name D function
2.设x和y均为bool量,则x && y为真的条件是________。
A 它们均为真 B 其中一个为真 C 它们均为假 D 其中一个为假
3. 下面的哪一个保留字不能作为函数的返回类型?________
A void B int C new D long
4. 假定a为一个整型数组名,则元素a[4]的字节地址为_______。
A a+4 B a+8 C a+16 D a+32
5.假定AB为一个类,则执行“AB a(4), b[3], *p[2];”语句时,自动调用该类构造函数的次数为________。
A 3 B 4 C 6 D 9
6.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:________
A AB operator +(AB& a, AB& b);
B AB operator +(AB& a);
C operator +(AB a);
A AB& operator +();
二、填空题(每小题2分,共24分)
1.C++语言中的每条基本语句以________作为结束符,每条复合语句以________作为结束符。
2.执行“cout<<char('A'+2)<<endl;”语句后得到的输出结果为________。
3.float和double类型的大小分别为________和________。
4. 算术表达式 对应的C++表达式为________________。
5. 关系表达式x+y>5的相反表达式为____________。
6.假定一个一维数组的定义为“char* a[8];”,则该数组所含元素的个数为________,
所占存储空间的字节数为________。
7.变量分为全局和局部两种,________变量没有赋初值时,其值是不确定的。
8. 假定a是一个二维数组,则a[i][j]的指针访问方式为____________。
9. 假定一个结构类型的定义为:
struct D{int a; union {int b; double c;}; D* d[2];};
则该类型的大小为________字节。
10.对一个类中的数据成员的初始化可以通过构造函数中的____________实现,也
可以通过构造函数中的____________实现。
11. 假定 AB为一个类,则执行”AB a[10];”语句时,系统自动调用该类构造函数的
次数为________。
12. 假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该
成员bb的写法为____________。
三、给出下列程序运行后的输出结果(每小题6分,共30分)
1. #include<iostream.h>
void SB(char ch) {
switch(ch) {
case 'A': case 'a':
cout<<"well!";break;
case 'B': case 'b':
cout<<"good!";break;
case 'C': case 'c':
cout<<"pass!";break;
default:
cout<<"bad!";break;
}
}
void main() {
char a1='b',a2='C',a3='f';
SB(a1);SB(a2);SB(a3);SB('A');
cout<<endl;
}
2. #include<iostream.h>
#include<string.h>
void main() {
char* a[5]={"student","worker","cadre","soldier","peasant"};
char *p1, *p2;
p1=p2=a[0];
for(int i=0;i<5;i++) {
if(strcmp(a[i], p1)>0) p1=a[i];
if(strcmp(a[i], p2)<0) p2=a[i];
}
cout<<p1<<' '<<p2<<endl;
}
3. #include<iostream.h>
int a=5;
void main() {
int a=10, b=20;
cout<<a<<' '<<b<<endl;
{ int a=0,b=0;
for(int i=1; i<6; i++) {
a+=i; b+=a;
}
cout<<a<<' '<<b<<' '<<::a<<endl;
}
cout<<a<<' '<<b<<endl;
}
4. #include<iomanip.h>
int LB(int *a, int n) {
int s=1;
for(int i=0;i<n;i++)
s*=*a++;
return s;
}
void main() {
int a[]={1,2,3,4,5,6,7,8};
int b=LB(a,5)+LB(&a[3],3);
cout<<"b="<<b<<endl;
}
5. #include<iostream.h>
#include<string.h>
struct Worker {
char name[15]; //姓名
int age; //年龄
float pay; //工资
};
void main() {
Worker x;
char *t="liouting";
int d=38; float f=493;
strcpy(x.name,t);
x.age=d; x.pay=f;
cout<<x.name<<' '<<x.age<<' '<<x.pay<<endl;
}
四、写出下列每个函数的功能(每小题6分,共24分)
1. #include<iostream.h>
int SA(int a, int b) {
if(a>b) return 1;
else if(a==b) return 0;
else return -1;
}
2. float FI(int n) {
//n为大于等于1的整数
float x,y=0;
do {
cin>>x;
n--; y+=x*x;
} while(n>0);
return y;
}
3. template<class Type>
void WE(Type a[], Type b[], int n) {
for(int i=0;i<n;i++)
b[n-i-1]=a[i];
}
4. 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* p=f;
while(--n) {
p=p->next=new StrNode;
cin>>p->name;
}
p->next=NULL;
}
五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:xxk1.dat”中。(10分)
1.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为________。
A main B MAIN C name D function
2.设x和y均为bool量,则x && y为真的条件是________。
A 它们均为真 B 其中一个为真 C 它们均为假 D 其中一个为假
3. 下面的哪一个保留字不能作为函数的返回类型?________
A void B int C new D long
4. 假定a为一个整型数组名,则元素a[4]的字节地址为_______。
A a+4 B a+8 C a+16 D a+32
5.假定AB为一个类,则执行“AB a(4), b[3], *p[2];”语句时,自动调用该类构造函数的次数为________。
A 3 B 4 C 6 D 9
6.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:________
A AB operator +(AB& a, AB& b);
B AB operator +(AB& a);
C operator +(AB a);
A AB& operator +();
二、填空题(每小题2分,共24分)
1.C++语言中的每条基本语句以________作为结束符,每条复合语句以________作为结束符。
2.执行“cout<<char('A'+2)<<endl;”语句后得到的输出结果为________。
3.float和double类型的大小分别为________和________。
4. 算术表达式 对应的C++表达式为________________。
5. 关系表达式x+y>5的相反表达式为____________。
6.假定一个一维数组的定义为“char* a[8];”,则该数组所含元素的个数为________,
所占存储空间的字节数为________。
7.变量分为全局和局部两种,________变量没有赋初值时,其值是不确定的。
8. 假定a是一个二维数组,则a[i][j]的指针访问方式为____________。
9. 假定一个结构类型的定义为:
struct D{int a; union {int b; double c;}; D* d[2];};
则该类型的大小为________字节。
10.对一个类中的数据成员的初始化可以通过构造函数中的____________实现,也
可以通过构造函数中的____________实现。
11. 假定 AB为一个类,则执行”AB a[10];”语句时,系统自动调用该类构造函数的
次数为________。
12. 假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该
成员bb的写法为____________。
三、给出下列程序运行后的输出结果(每小题6分,共30分)
1. #include<iostream.h>
void SB(char ch) {
switch(ch) {
case 'A': case 'a':
cout<<"well!";break;
case 'B': case 'b':
cout<<"good!";break;
case 'C': case 'c':
cout<<"pass!";break;
default:
cout<<"bad!";break;
}
}
void main() {
char a1='b',a2='C',a3='f';
SB(a1);SB(a2);SB(a3);SB('A');
cout<<endl;
}
2. #include<iostream.h>
#include<string.h>
void main() {
char* a[5]={"student","worker","cadre","soldier","peasant"};
char *p1, *p2;
p1=p2=a[0];
for(int i=0;i<5;i++) {
if(strcmp(a[i], p1)>0) p1=a[i];
if(strcmp(a[i], p2)<0) p2=a[i];
}
cout<<p1<<' '<<p2<<endl;
}
3. #include<iostream.h>
int a=5;
void main() {
int a=10, b=20;
cout<<a<<' '<<b<<endl;
{ int a=0,b=0;
for(int i=1; i<6; i++) {
a+=i; b+=a;
}
cout<<a<<' '<<b<<' '<<::a<<endl;
}
cout<<a<<' '<<b<<endl;
}
4. #include<iomanip.h>
int LB(int *a, int n) {
int s=1;
for(int i=0;i<n;i++)
s*=*a++;
return s;
}
void main() {
int a[]={1,2,3,4,5,6,7,8};
int b=LB(a,5)+LB(&a[3],3);
cout<<"b="<<b<<endl;
}
5. #include<iostream.h>
#include<string.h>
struct Worker {
char name[15]; //姓名
int age; //年龄
float pay; //工资
};
void main() {
Worker x;
char *t="liouting";
int d=38; float f=493;
strcpy(x.name,t);
x.age=d; x.pay=f;
cout<<x.name<<' '<<x.age<<' '<<x.pay<<endl;
}
四、写出下列每个函数的功能(每小题6分,共24分)
1. #include<iostream.h>
int SA(int a, int b) {
if(a>b) return 1;
else if(a==b) return 0;
else return -1;
}
2. float FI(int n) {
//n为大于等于1的整数
float x,y=0;
do {
cin>>x;
n--; y+=x*x;
} while(n>0);
return y;
}
3. template<class Type>
void WE(Type a[], Type b[], int n) {
for(int i=0;i<n;i++)
b[n-i-1]=a[i];
}
4. 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* p=f;
while(--n) {
p=p->next=new StrNode;
cin>>p->name;
}
p->next=NULL;
}
五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:xxk1.dat”中。(10分)