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分,共36分)
1、
# include
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 <<”nad!”; break;
}
}
void main() {
char a1=’b’,a2=’C’,a3=’f’;
SB(a1);SB(a2);SB(a3);SB(‘A’);
cout <
}
2、
# include
# include
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 <
}
3、
# include
int a=5;
void main() {
int a=10,b=20;
cout <
{ int a=0,b=0;
for (int i=1; i<6; i++) {
a+=i; b+=a;
}
cout <
}
cout <
}
4、
# include
int LB(int *a,int n) {
int s=1;
for (int i=0; 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=”<
}
5、
# include
# include
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 <
}
6、
# include
class A {
int a;
public:
A(int aa=0) { a=aa; }
~A() { cout <<”Destructor A!”<
};
class B:public A {
int b;
public:
B(int aa=0,int bb=0):A(aa) { b=bb; }
~B() { cout <<”Destructor B!”<
};
void main() {
B x(5),y(6,7); // 后定义的变量将先被释放
}
四、写出下列每个函数的功能(每小题6分,共24分)
1、# include
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
void WE(Type a[],Type b[],int n) {
for (int i=0; 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、简述Windows中句柄的意义和消息映射机制
2、一个Windows程序的关键就是打开一个窗口,处理消息,调用主事件循环等。要创建一个完全实用的Windows程序,需要进行哪几步工作?
*******************************************************************************
C++语言程序设计试题
答案及评分标准
一、单选题(每小题1分,共6分)
评分标准:选对者得1分,否则不得分。
1、A 2、A 3、C 4、C 5、B 6、B
二、填空题(每小题2分,共24分)
评分标准:每题与参考答案相同者得2分,否则不得分。
1、 : } 2、 C
3、 4 8 4、 (x*y*y)/(3*a)+4*b-1
5、 x+y<=5 6、 8 32
7、 局部 8、 *(a[i]+j) 或 *(*(a+i)+j)
9、 20 10、 初始化表 函数体
11、 10 12、 AB::bb
三、给出下列程序运行后的输出结果(每小题6分,共36分)
评分标准:每题与参考答案的数据和显示格式完全相同者得6分,否则酌情给分。
1、 good! pass! bad! well!
2、 worker cadre
3、 10 20
15 35 5
10 20
4、 b=240
5、 liouting 38 493
6、 Destructor B! 7
Destructor A! 6
Destructor B! 0
Destructor A! 5
四、写出下列每个函数的功能(每小题6分,共24分)
评分标准:每题与参考答案的叙述含义相同者得6分,否则酌情给分。
1、比较两个整数a和b的大小,若a>b则返回1,若a= =b则返回0,若a
2、求出从键盘上输入的n个常数的平方和并返回。
3、模板函数,把数组a的每个元素按逆序放入数组b中。
4、建立一个具有n个结点的链表,每个结点的字符串值由键盘输入,链表的表头指针由引用变量f带回。
五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件”a:xxk1.dat”中。(10分)
评分标准:见参考程序中的注释。
# include // 使用此命令得1分
# include
# include
void main() {
ofstream fout(“a:xxk1.dat”); // 定义输出文件流并打开文件得2分
if (!fout){
cerr <<”文件没有打开!”<
exit(1);
} // 可有可无
int x;
cin >>x;
while (x!=-1) {
fout <
cin >>x;
} // 能够从键盘向文件正确输出数据得6分
fout.close(); // 关闭输出文件流得1分
}
六、简答题
1、简述Windows中句柄的意义和消息映射机制
句柄是一个4字节长的数值,用于标识应用程序中不同的对象和同类对象中不同的实例
任何需要消息映射的类,在其定义中必须加入DECLARE_MESSAGE_MAP()宏定义。
2、