指针测试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++测试(指针)
学号姓名成绩
一、选择题(每题1.5分,共24分)
1.语句int a=10,*point=&a;其值不为地址。
A. point
B. &a
C. &point
D. *point
2.若p为指针变量,y为变量,则y = *p++;的含义是
A.y=*p;p++ B.y=(*p)++ C.y=p;p++ D.p++;y=*p
3.语句char str[]=‛visual C++‛;char *p=str;则p的值为
A. ‛visual C++‛
B.str的首地址
C. \n
D.‛v‛
4.设有说明语句char *s[]={‚student‛,‛Teacher‛,‛Father‛,‛Month‛},
*ps=s[2];执行语句:cout<<*s[1]<<’,’< A.T,Father,F B.Teaher,F,Father C. Teacher,Father,Father D.语法错,无输出 5.下列说明或赋值语句,不正确的是 A. char *p;p=‛Visual C++‛; B. char p1[12]={‘v’,’i’,’s’,’u’}; C. char p2[12];p2=‛Visual C++‛ D. char p3[]=‛Visual‛; 6.现有int b[3][4],*p;p=(int *)b;若要指针p指向b[2][3],以下正确的是 A.p+=3*4+3 B.p+=2*4+3 C. p+=(3*4+3)*sizeof(int) D.p+=(2*4+3)*sizeof(int) 7.语句int i,*p1,**p2;以下语句语法不正确的是 A.p1=&i; B. p2=&i; C.p2=&p1; D.i=’\0x23’; 把结点b连接到结点a之后8.如下图结构体说明和变量的定义,p指向a,q指向变量b.下面不能 .. 的语句是 p.next=&b; C. p->next=&b; D.(*p).next=q; 9.下面正确的语句是 A. int a[3][4],(*p)[4]; p=a; B. int a[3][4],*p[4]; p=a; C. int a[3][4],*p; p=a; D. int a[3][4],**p;*p=a; 10.下面不正确的语句是 A.float *p;p=new float[3]; B. int *p;p=new int[3](1,2,3); C. float *p;p=new float(3); D. int (*p)[4];p=new int[3][4]; 11.设有函数定义:int f1(void){return 100,150;}调用函数f1()时, A.函数返回值100 B. 函数返回值150 C. 函数返回二个值100和150 D. 语句return 100,150;语法错. 12.设有语句:int fun(char *,int &);char str[100];int k;则对函数fun的正确的调用形式是 A.fun(str,&k) B.fun(str,k) C.fun(str[100],k) D.fun(str, &k) 13.数组作为函数的形参时,把数组名作为实参,传递给函数的是 A.该数组的首地址 B. 该数组的元素个数 C. 该数组中的各元素值 D. 该数组的大小 14.执行以下语句序列:则 enum {Sun,Mon,Tue,Wed,Thu,Fri,Sat}c1,c2; //A c1=Mon; //B cout< A.输出1 B.输出2 C.输出0 D. B行语法错 15.执行以下语句序列:则 char *p1=‛Speaking‛; //A char *p2=‛English‛; //B char *p3=‛a piece of cake‛; //C char *str[]={p1,p2,p3}; //D cout<<*(str[0]+1); A.输出English B.输出Speaking C.输出E D. D行语法错 16.下列语句不正确的是 A.const float Pi=3.1415; B.const float *p1; C.float count; float &k=count; D. float &k; 二、填空题(共42分) 1.(2*2分=4分)下面程序的运行结果为、 void main( ) { static int a[3][2]={{12},{14,16},{1,2}}; int *p=a[1]; cout<<*(p+1)< cout<<*(p+3)< } 2.(2*2分=4分)若有以下程序段,则*(*(a+2)+1)的值为,*(*(p+1)+1)的值为static int b[3][2]={1,3,5,7,9,11}; int (*p)[2]; p=b; 3.(1*4分=4分)下面程序的运行结果为 #include void sub(int *x,int i,int n) { if(n<=i)sub(x,i,3*n); *x+=n++; } void main( ) { int x=0; sub(&x,12,2); cout< } 4.(2*2分=4分)以下程序运行结果为_______ _____、 void main() { char *p,*q; char str[]="Hello,World\n";