指针习题

5 篇文章 0 订阅
1 篇文章 0 订阅

这部分指针习题对指针理解有很好巩固作用:

1、设有定义:int a,*pa=&a;以下 scanf 语句中能正确为变量 a 读入数据的是( )
A) scanf(“%d”,pa); B) scanf(“%d”,a);
C) scanf(“%d”,&pa); D) scanf(“%d”,*pa);

2、若有以下定义和语句
#include
int a=4,b=3,*p,*q,*w;
p=&a;q=&b;w=p;q=NULL;
则以下选项中错误的语句是( )
A) *q=0; B) w=p; C)*p=a; D) *p=*w;

3、有以下程序
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);
}
程序运行以后的输出结果是()
A) 8,7,8,7 B) 7,8,7,8
C) 8,7,7,8 D) 7,8,8,7

4、程序中对 fun 函数有如下说明
void *fun();
此说明的含义是( )
A) fun 函数无返回值
B) fun 函数的返回值可以是任意的数据类型
C) fun 函数的返回值是无值型的指针类型
D)指针 fun 指向一个函数,该函数无返回值

5、有以下程序
int *f(int *x,int *y)
{ if(*x<*y) return x;
else 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);
} 执行后输出结果是( )
A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8

6、设有定义语句
int x[6]={2,4,6,8,5,7},p=x,i;
要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是()
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)++);
备注:(D)中(*p)++是元素值加 1,而不是指针值加 1

7、有以下程序
main()
{ int x[8]={8,7,6,5,0,0},*s;
s=x+3;
printf(“%d\n”,s[2]);
}
执行后的输出结果是( )
A) 随机值 B) 0 C) 5 D) 6

8、有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5]; b 中的值是( )
A) 5 B) 6 C) 8 D) 9

9、有以下程序
void fun(int *a,int i,int j)
{ int t;
if(i}
main()
{ int a[]={1,2,3,4,5,6},i;
fun(a,0,5);
for(i=0;i<6;i++) printf(“%d”,a[i]);
} 执行后的输出结果是( )
A) 6 5 4 3 2 1 B) 4 3 2 1 5 6
C) 4 5 6 1 2 3 D) 1 2 3 4 5 6

10、有以下程序
void swap1(int c0[], int c1[])
{ int t ;
t=c0[0]; c0[0]=c1[0]; c1[0]=t;
}
void swap2(int *c0, int *c1)
{ int t;
t=*c0; *c0=*c1; *c1=t;}
main()
{ int a[2]={3,5}, b[2]={3,5};
swap1(a, a+1); swap2(&b[0], &b[1]);
printf(“%d %d %d %d\n”,a[0],a[1],b[0],b[1]);
}

A)3 5 5 3 B)5 3 3 5
C)3 5 3 5 D)5 3 5 3

11、有以下程序
main() 指向包含 3 个元素的一维数组的指针变量
{ 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) 7 B) 6 C) 8 D) 无确定值

12、若有以下说明和语句:int c[4][5],(*p)[5];p=c;能正确引用 c 数组元素的是( )
A) p+1 B) *(p+3) C) *(p+1)+3 D) *(p[0]+2)

13、有以下程序
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]);
}
程序执行以后的输出结果是( )
A) 3 B) 6 C) 9 D) 7

14、有以下程序
main()
{ char s[]=“Yes\n/No”,*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
}
程序运行后的输出结果是( )

 A) n/No B) /No C) n/No D) /No
     Yes    Yes     Yes    /No
     /No            /No    Yes
 

15、有以下程序
main()
{ char str[][20]={“Hello”,”Beijing”},*p=str[0];
printf(“%d\n”,strlen(p+20));
} 程序运行后的输出结果是( )
A) 0 B) 5 C) 7 D) 20

16、有以下程序
main()
{ char s[]= “ABCD”,*p;
for(p=s+1;p } 程序运行后的输出结果是( )

17、以下程序运行后的输出结果是( )
main()
{ char a[]=“Language”,b[]=“Programe”;
char p1,p2; int k;
p1=a;p2=b;
for(k=0;k<8;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) 2 B) 3 C) 4 D) 5

19、若有定义:int p[3];,则以下叙述中正确的是()
A) 定义了一个基类型为 int 的指针变量 p,该变量具有 3 个指针。
B) 定义了一个指针数组 p,该数组含有 3 个元素,每个元素都是基类型为 int
的指针。
C) 定义了一个名为
p 的整型数组,该数组含有 3 个 int 类型元素。
D) 定义了一个可指向一维数组的指针变量 p,所指一维数组应具有 3 个 int 类
型元素。

答案:
1-5:AACCB
6-·10:DBDAD
11-15: ADBBC
16: BCD
CD
D
17: gae
18: 2
19: B

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值