c语言指针p->k=2,C语言指针-练习.doc

C语言指针-练习

复习题(二)

基础题

设有:int k[]={2,4,6,8,10,12}, *p=k+2;表达式 *(p+2)*p[2] 的值: 。

设有:int a[10], *p1, *p2; 则执行语句:p1=a; p2=&a[5]; 则p2-p1的值。

设有:int x[]={4,3,2,1},q,*p=&x[1];则执行语句:q=(*--p)++ ; 后;变量q的值为 。

设有:int *p, a=10, b=1; 则执行以下语句:p=&a; a=*p+b; 后;a的值为: 。

下列程序段的输出结果是 。

int k=1, j=2, *p=&k, *q=p;

p=&j;

printf("%d, %d",*p, *q);

设x为整型变量,p为指向整型的指针变量,则让p指向x变量的赋值表达式是 。设有变量定义:float d[]={1.0,2.0,3.0,4.0,5.0}, *p=d+3;

请写出 printf("\n %f %f", *p, d[0]); 的输出结果为: 和 。

设有变量定义如下:char s[]="Hello!", *p; int i;

执行完 for(i=0; *p+i); i++); 后,变量i的值是__;*p+i)的值是’’_。

函数

void f(char s[ ], char t[ ])

{ int k=0;

while (s[k]=t[k]) k++;

}

等价于

void f(char *s, char *t)

{while (*s++=*t++); }

选择题

1、下面的程序段用来定义指针并赋值,请选出语法正确的程序段( C )。

A)int *p; scanf(“%d”,p); B)int *s,k; *s=100;

C) int *s,k; D) int *s,k

char *p,*c; char *p,*c;

s=&k; p=&c; s=&k; p=&c;

*p=’a’; s=p; *s=1;

2、程序段:int *p,a,b=1; p=&a; *p=10; a=*p+b; 执行后,a的值( B)。

A)12B)11C)10D)编译出错

3、若定义:int i,j=2,*p=&i ; 则能完成i=j赋值的功能的语句是( B)。

A)i=*p; B)*p=*&j; C)i=&j; D)i=**p;

4、若定义:double *p,a;则下列能通过scanf()正确输入项读入数据的程序段是( D)。

A)*p=&a; scanf(“%lf”,p); B)p=a; scanf(“%f”,p); C) p=&a; scanf(“%lf”,a); D) p=&a; scanf(“%lf”,p);

5、若有以下定义语句:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为3的表达式是( D )。

A) p+=2,++*p B) p+=2,*++p C) p+=3,*p++ D)p+=2,*(p++)

6、设p1和p2是指向同一个int型一维数组的指针变量,k为int 型变量,则下列不能正确执行的语句是( B)。

A)k=*p1+*p2; B) p2=k; C) p1=p2; D) k=*p1*(*p2);

7、设有以下定义:int a[]={6,7,8,9,10}; int *p;

则下列程序的输出结果为( D)。

p=a; *(p+2)+=2; printf(“%d,%d \n”,*p,*(p+2));

A)8,10 B)6,8 C)7,9D)6,10

8、下面程序输出结果是( C)。

main()

{ int a[]={2,4,6,8,10};

int y=1,x,*p;

p=&a[1];

for(x=0;x<3;x++)

y+=*(p+x);

printf(“%d\n”,y);

}

A)17B)18C)19D)20

9、下列程序输出数组中的最大值,由s指针指向该元素,则在if语句中的判断表达式应该是(B)。

void main()

{ int a[10]={6,7,2,9,1,10,5,8,4,3},*p,*s;

for(p=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值