2006年研究生C++程序设计试题(A卷)
考试形式:闭卷考试 考试时间:120分钟
研究生学号 姓名 得分 题号 得分
一 二 三 四 五 总分 一、简答题(每小题3分,30分)
1、简述C++语言具有的特点。
2、指针指向int数组和指向char数组应用上有那些区别?
3、在C++语言中,如说明 int a[10], *pa=a; a[5]与pa[5]等价吗?什么时候不等价? 4、在C++语言中,请给出指针函数定义的一般形式。
5、请说出函数参数中,地址与复制传递参数方式两者之间的异同点。 6、什么叫类?什么叫对象?
7、请构造函数声明的一般形式(包括基类构造调用等)。 8、什么叫友元?请给出说明形式。
9、请给出用new和delete堆空间建立数组和释放数组的例子。 10、 请给出类中运算符重载的一般形式。
二、数据与运算(每小题2分,共20分)
1. 若int x=1, y=2; 则表达式 (y == ++x)? ++x/- -y : ++y 的运算结果是什么? 3
2. 若int x=5, y(15), *p=&x ; 则经过 y += ++x - 5, *p=++x+- -y ; 的运算之后,
cout< 5. 若char x =’A’, y= 0x20; int z; y = z = x + y ; 则 cout<< x << \ \ y << “(“ < 6. 若int a[10], *pa=&a[1], *pb=&a[9]-2; 则pb-pa的结果是多少? 7. 若说明int a[10]={9,8,7,6,5,4,3,2,1,0}, *p=&a[8]; 则经过表达式 a[9] += ( *++p+=1, *(p - = 8) +=3, *(p+3) += 1 ); 运算之后,则数组a各元素的值是什么? 9 11 7 6 6 4 3 2 17 8. 若说明 int a=6; double x(4) ; 则表达式 (a>>1) *( sizeof(x)+1) 的值是什么? 9. 若struct MyData { double a; float b ; char c[4]}; MyData x ={ 8, 1.0f, “81”}, y, *z=&y ; 经过 x.b=2.0f, *z=x , z->b = ++x.a +( y.c[1] ++ ) ; 运算,则x, y的各自分量结果是什么? 10. 若定义union AUnion{char x[4]; int y; float z;}; (设int占4个字节), 说明 AUnion AKey, *pKey=&AKey ; 经过 pKey->z =0f; pKey->x[0]= ’A’ ; 则表达式 cout<< (pKey ->y+2) << endl ; 的结果是什么? I 三、给出下列程序的运行输出结果(每小题6分,共24分) 1、 #include “iostream.h” int afox(int x,int &y,int *v,int *w) { * v = - -x + y++; *w= x - y; return(v); } void main(void) { int a=3,b=3,c=3,d=3; afox ( a,b,&c, &d ); cout<< a<< “,”<< b<< “,”< } 3 4 5 -2 答案: ; 2、 #include “stdio.h” int d=0; int fun( int p) { static int g=10 ; g += ++d - p; printf(\ \,g); return( g ); } void main( void ) { int d=10; printf(\ \\n\,fun( fun(d) - fun(2) ) ); } 答案: ; 3、#include \eam.h\ void main(void) { char a[8],t; int j,k; for (j=0;j<7;j++) a[j]= 'a'+j; a[7]='\\0'; for (j=0;j<3;j++) { t=a[6]; for (k=6;k>0;k--) a[k]=a[k-1]; a[0]=t; cout<< a << endl; } } 答案: ; ; ; 4、# include II class CTest { public : int a, b,c;
相关推荐: