指针习题
B) scanf(“%d”,a);
D) scanf(“%d”,*pa);
1、设有定义:int a,*pa=&a;以下 scanf 语句中能正确为变量 a 读入数据的是( A )
A) scanf(“%d”,pa);
C) scanf(“%d”,&pa);
2、若有以下定义和语句
#include
int a=4,b=3,*p,*q,*w;
p=&a;q=&b;w=p;q=NULL;
则以下选项中错误的语句是(A )
A) *q=0;
3、有以下程序
D) *p=*w;
C)*p=a;
B) w=p;
main()
int a=7,b=8,*p,*q,*r;
p=&a;
q=&b;
r=p;p=q;q=r;
printf(“%d,%d,%d,%d\n”,*p,*q,a,b);
{
}
程序运行以后的输出结果是(C)
B) 7,8,7,8
D) 7,8,8,7
A) 8,7,8,7
C) 8,7,7,8
4、程序中对 fun 函数有如下说明
void *fun();
void (*fun)()
此说明的含义是( D )
A) fun 函数无返回值
B) fun 函数的返回值可以是任意的数据类型
C) fun 函数的返回值是无值型的指针类型
D)指针 fun 指向一个函数,该函数无返回值
5、有以下程序
int *f(int *x,int *y)
{
if(*x<*y)
else
return x;
return y;
}
main()
{
int a=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=f(p,q);
printf(“%d,%d,%d\n”,*p,*q,*r);
} 执行后输出结果是( B )
C) 8,7,7
B) 7,8,7
A) 7,8,8
D) 8,7,8
6、设有定义语句
int x[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是(D)
A)for(i=0;i<6;i++) printf(“%2d”,*(p++));
B) for(i=0;i<6;i++) printf(“%2d”,*(p+i));
C) for(i=0;i<6;i++) printf(“%2d”,*p++);
D) for(i=0;i<6;i++) printf(“%2d”,(*p)++);
7、有以下程序
main()
{
int x[8]={8,7,6,5,0,0},*s;
s=x+3;
printf(“%d\n”,s[2]);
}
执行后的输出结果是(B )
A) 随机值 B) 0
C) 5
8、有以下程序段
D) 6
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
A) 5
b 中的值是( D )
D) 9
C) 8
B) 6
9、有以下程序
void fun(int *a,int i,int j)
{
int t;
if(i
指向包含 3 个元素的一维数组的指针变量
A)3 5 5 3
B)5 3 3 5
C)3 5 3 5
D)5 3 5 3
11、有以下程序
main()
{
int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;
pa=a; for(i=0;i<3;i++)
if(i<2) pa[1][i]=pa[1][i]-1;
else pa[1][i]=1;
printf(“%d\n”,a[0][1]+a[1][1]+a[1][2]);
} 执行后输出结果是( A )
C) 8
A)
B) 6
7
D) 无确定值
12、若有以下说明和语句:int c[4][5],(*p)[5];p=c;能正确引用 c 数组元素的是(D )
A) p+1
13、有以下程序
D) *(p[0]+2)
C) *(p+1)+3
B) *(p+3)
main()
{
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i+1;
printf(“%d\n”,a[1][2]);
}
程序执行以后的输出结果是( B )
A) 3
C) 9
B) 6
D) 7
14、有以下程序
main()
{
char s[]=“Yes\n/No”,*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
}
C) n/No
B) /No
Yes
程序运行后的输出结果是( B )
A) n/No
Yes
/No
15、有以下程序
main()
{
Yes
/No
D) /No
/No
Yes
char str[][20]={“Hello”,”Beijing”},*p=str[0];
printf(“%d\n”,strlen(p+20));
} 程序运行后的输出结果是( C )
D)
C) 7
B) 5
20
0
A)
16、有以下程序
main()
{
char s[]= “ABCD”,*p;
for(p=s+1;p
BCD
CD
D
17、以下程序运行后的输出结果是( g )
main()
{
char a[]=“Language”,b[]=“Programe”;
char *p1,*p2;
p1=a;p2=b;
for(k=0;k<8;k++)
int k;
if(*(p1+k)==*(p2+k))
printf(“%c”,*(p1+k));
}
18、有以下程序
main()
{
char *p[10]={“abc”, “aabdfg”, “dcdbe”, “abbd”, “cd”};
printf(“%d\n”,strlen(p[4]));
} 执行后输出结果是(A)
C) 4
A) 2
B) 3
D) 5
19、若有定义:int *p[3];,则以下叙述中正确的是(B)
A)定义了一个基类型为 int 的指针变量 p,该变量具有 3 个指针。
B) 定义了一个指针数组 p,该数组含有 3 个元素,每个元素都是基类型为 int
的指针。
C)定义了一个名为*p 的整型数组,该数组含有 3 个 int 类型元素。
D)定义了一个可指向一维数组的指针变量 p,所指一维数组应具有 3 个 int 类型
元素。