指针测试题_百度文库.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

复习题
一、选择题
1.变量的指针,其含义是指该变量的().
A值 B地址 C名 D一个标志
2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_____. Aa,point,*&a B&*a,&a,*point C*&point,*point,&a D&a,&*point ,point
3.若有说明;int *p,m=5,n;以下正确的程序段的是().
Ap=&n; Bp=&n;
scanf("%d",&p; scanf("%d",*p;
Cscanf("%d",&n; Dp=&n;
*p=n; *p=m;
4.下面程序段的运行结果是().
char *s="abcde";
s+=2;printf("%d",s;
Acde B字符’c’ C字符’c’的地址 D无确定的输出结果
5.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________.
Ac=*p1+*p2; Bp2=c Cp1=p2 Dc=*p1*(*p2;
6.以下正确的程序段是().
Achar str[20]; Bchar *p;
scanf("%s",&str; scanf("%s",p;
Cchar str[20]; Dchar str[20],*p=str;
scanf("%s",&str[2]; scanf("%s",p[2];
7.若有说明语句
char a[]="It is mine";
char *p="It is mine";
则以下不正确的叙述是()
Aa+1表示的是字符t的地址
Bp指向另外的字符串时,字符串的长度不受限制Cp变量中存放的地址值可以改变
Da中只能存放10个字符
8.下面程序的运行结果是()
#include
#include
main(
{
char *s1="AbDeG";
char *s2="AbdEg";
s1+=2;s2+=2;
printf("%d\n",strcmp(s1,s2;
}
A正数 B负数 C零 D不确定的值
9.下面程序的运行结果是()
#include
#include
fun(char *w,int n
{char t,*s1,*s2;
s1=w;s2=w+n-1;
while(s1
}
main(
{char *p;
p="1234567";
fun(p,strlen(p;
puts(p;
}
A7654321 B1714171 C1711717 D7177171
10.若有以下定义,则对a数组元素的正确引用是()int a[5],*p=a;
A*&a[5] Ba+2 C*(p+5 D*(a+2
11.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为()A*(a[i]+j B(a+i C*(a+j Da[i]+j
12.若有以下定义,则p+5表示().
int a[10],*p=a;
A元素a[5]的地址 B元素a[5]的值
C元素a[6]的地址 D元素a[6]的值
13.设 int *p , i ;以下正确合理的语句是()。

A . *p=10 ; B. i=p ; C. i=*p ; D. i=2*p+1 ;
14.设 char s[10] ; int I ;以下引用数组 s 中元素正确的表达式是()。

A . s(i+2 ; B. *(s+i C. *(&s+i D. *((s+++i
*15. 若有定义和语句
int **pp , *p , a=10 , b=20 ;
pp=&p ; p=&a ; p=&b ;
printf(“%d , %d\n” , *p , **pp ;
则输出结果是()。

A . A=10 , 20 B. 10 , 10 C . 20 , 10 D. 20 , 20
16 .若定义char s[20]= “ programming ”, *ps=s ;则不能代表字符‘o’ 的表达式是()。

A . ps+2 B. s[2] C. ps[2] D. ps+=2 , *ps
16 .若有定义和语句
char *s1=” 12345” ,*s2=” 1234” ;
printf(“%d\n” , strlen(strcpy(s1 , s2 ;
则输出结果是()。

A . 4
B .5
C . 9 D. 10
17. 若定义 int a[ ] ={1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10} , *p=a ;则值为 3 的表达式是()
A. p+=2 , *(p++
B. p+=2 , *++p
C.p+=3 , * p++
D. p+=2 , ++*p
*18. 若有以下定义和语句
int w[2][3] , (*pw [3] ; pw=w ;
则对数组元素的非法引用是()
A. *(w[O]+2
B. *pw[2]
C. pw[O][O]
D. *(pw[1]+2
19. 设有定义 int (*ptr[M] ;其中 ptr 是()。

A.M 个指向整型变量的指针
B.指向 M 个整型变量的函数指针
C. 一个指向具有 M 个整型元素的一维数组的指针
D.具有 M 个指针元素的一维指针数组,每个元素都只能指向整型量
20 .设有以下一段程序
char s[ ]=”Hello” ;
char *p=s ;
执行完上面程序段后, *(p+5 的值为 ( 。

A. ‘o'
B. ‘\ 0'
C. ‘o' 的地址
D. 不确定的值
21. 以下定义与 ( 中的定义等价。

int *p[4] ;
A. int p[4] ;
B. int p ;
C.int (*p[4] ;
D. int *(p[4] ;
22 .以下程序输出结果是()。

#include
main(
{ int a[20] , *p[4] , I , k=0 ;
for(i=0 ; i<20 ; i++ a[i]=I ;
for(i=0 ; i<4 ; i++ p[i]=&a[i*(i+2] ;
for(i=0 ; i<4 ; i++ k+=p[i][i] ;
printf(“%d\n” , k ;
}
A. 数组元素引用不合法,输出结果不定
B. 32 C . 10 D. 6 *23. 以下程序输出结果是()。

#include
main(
{
int a[12]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12} ,*p[4] ,I ;
for(i=0 ;i<4 ; i++ p[i]=&a[i*3] ;
printf(“%d\n” , p[3][2] ;
}
A. 输出结果不定
B. 6 C . 8 D. 12
*24. 若有以下定义和语句,则()是对 a 数组元素的错误引用。

int a[12]={0} , *p[3] , **pp , I ;
for(i=0 ; i<3 ; i++ p[i]=&a[i*4] ;
pp=p ;
A. a[12]
B. p[2][3]
C. a[10]
D. pp[0][1]
*25. 以下程序输出结果是()。

#include 〈 stdio.h 〉
main(
{
char *p[4]={“abcd” ,”efgh” ,”ijkl” ,”mnop”} ;
char **p1 ;
int I ;
p1=p ;
for(i=0 ; i<2 ; i++
printf(“%s” , p[i] ;
printf(“\n” ;
}
A. abcdefghijklmnop
B. abcdefgh
C. abcd
D. Ae。

相关文档
最新文档