无忧首页企业系统我的无忧
无忧服务:
兼职活动培训
娱乐交友:
交友社区资讯
全职实习:
实习暑假寒假
微信号:school51
扫一下,立即关注
加关注
在线支付,立省10元
下载新版APP
===大学生成长生活平台===

2013年计算机二级考试C语言第八章课后题及参考答案

2013-03-18来源/作者:卫凯点击次数:648

第八章 指针

  一、选择题

  8.1 若有定义:int x,*pb; 则以下正确的赋值表达式是

  A) pb=&x

  B) pb=x

  C) *pb=&x

  D) *pb=*x

  答案: A

  8.2 以下程序的输出结果是

  A) 因变量无定义输出不定值

  B) 0

  C) -1

  D) 1

  #include <stdio.h>

  main()

  { printf("%d\\n",NULL); }

  答案: B

  8.3 以下程序的输出结果是

  A) 5,2,3

  B) -5,-12,-7

  C) -5,-12,-17

  D) 5,-2,-7

  void sub(int x,int y,int *z)

  { *z=y-x; }

  main()

  { int a,b,c;

  sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);

  printf("%d,%d,%d\\n",a,b,c);

  }

  答案: B

  8.4 以下程序的输出结果是

  A) 4

  B) 6

  C) 8

  D) 10

  main()

  { int k=2,m=4,n=6;

  int *pb=&k,*pm=&m,*p;

  *(p=&n)=*pk*(*pm);

  printf("%d\\n",n);

  }

  答案: C

  8.5 已知指针p的指向如图8.5所示,则执行语句*p++; 后,*p的值是

  A) 20

  B) 30

  C) 21

  D) 31

  答案: B

  8.6 已知指针p的指向如图8.5所示,则表达式*++p的值是

  A) 20

  B) 30

  C) 21

  D) 31

  答案: B

  8.7 已知指针p的指向如图8.5所示,则表达式++*p的值是

  A) 20

  B) 30

  C) 21

  D) 31

  答案: C

计算机二级C语言章节练习在线测试
第8章 地址和指针 马上检测

  8.8 以下程序的输出结果是

  A) 23

  B) 24

  C) 25

  D) 26

  void prtv(int *x)

  { printf("%d\\n",++*x); }

  main()

  { int a=25;

  prtv(&a);

  }

  答案: D

  8.9 以下程序的输出结果是

  A) 运行出错

  B) 100

  C) a的地址

  D) b的地址

  main()

  { int **k, *a b=100;

  a=&b; k=&a;

  printf("%d\\n",**k);

  }

  答案: B

  8.10 以下程序的输出结果是

  A) 4,3

  B) 2,3

  C) 3,4

  D) 3,2

  void fun(float *a,float *b)

  { float w;

  *a=*a+*a;

  w=*a;

  *a=*b;

  *b=w;

  }

  main()

  { float x=2.0,y=3.0;

  float *px=&x,*py=&y;

  fun(px,py);

  printf("%2.0f,%2.0f\\n",x,y);

  }

  答案: C

  8.11 以下程序的输出结果是

  A) 9.000000

  B) 1.500000

  C) 8.000000

  D)

  10.500000

  void sub(float x,float *y,float *z)

  { *y=*y-1.0;

  *z=*z+x;

  }

  main()

  { float a=2.5,b=9.0,*pa,*pb;

  pa=&a,pb=&b;

  sub(b-a,pa,pa);

  printf("%f\\n",a);

  }

  答案: C

  8.12 以下四个程序中不能对两个整形值进行交换的是

  A) main()

  { int a=10,b=20;

  swap(&a,&b);

  printf("%d%d\\n",a,b);

  }

  swap(int *p, int *q)

  { int *t,a;

  t=&a;

  *t=*p; *p=*q; *q=*t;

  }

  B) main()

  { int a=10,b=20;

  swap(&a,&b);

  printf("%d%d\\n",a,b);

  }

  swap(int *p, int *q)

  { int t;

  t=*p; *p=*q; *q=t;

  }

  C) main()

  { int *a,*b;

  *a=10,*b=20;

  swap(a,b);

  printf("%d%d\\n",*a,*b);

  }

  swap(int *p, int *q)

  { int t;

  t=*p; *p=*q; *q=t;

  }

  D) main()

  { int a=10,b=20;

  int *x=&a,*y=&b;

  swap(x,y);

  printf("%d%d\\n",a,b);

  }

  swap(int *p, int *q)

  { int t;

  t=*p; *p=*q; *q=st;

  }

  答案:C

计算机二级C语言章节练习在线测试
第8章 地址和指针 马上检测

  二、填空题

  8.13 以下程序段的输出结果是_____。

  int *var,ab;

  ab=100; var=&ab; ab=*var+10;

  printf("%d\\n",*var);

  答案:100

  8.14 以下程序的输出结果是_____。

  int ast(int x,int y,int *cp,int *dp)

  { *cp=x+y;

  *dp=x-y;

  }

  main()

  { int a,b,c,d;

  a=4; b=3;

  ast(a,b,&c,&d);

  printf("%d %d\\n",c,d);

  }

  答案:7 1

  8.15 若有定义:char ch;

  (1) 使指针p可以指向变量ch的定义语句是_____。

  答案:char *p=&ch;

  (2) 使指针p可以指向变量ch的赋值语句是_____。

  答案:p=&ch;

  (3) 通过指针p给变量ch读入字符scanf函数调用语句是_____。

  答案:scanf("%c",*p);

  (4) 通过指针p给变量ch的赋字符的语句是_____。

  答案:ch=*p;

  5) 通过指针p输出ch中字符的语句是_____。

  答案: printf("%c",*p);

  8.16 若有如图8.5所示五个连续的int类型的存储单元并赋值如图,且p和s的基类型皆为int,p已指向存储单元a[1]。

  (1) 通过指针p,给s赋值,使其指向最后一个存储单元a[4]的语句是____。

  答案: s=p+3;

  (2) 用以移动指针s,使之指向中间的存储单元a[2]的表达式是____。

  答案: s=s-2;

  (3) 已知k=2,指针s已指向存储单元a[2],表达式*(s+k)的值是____。

  答案: 50

  (4) 指针s已指向存储单元a[2],不移动指针s,通过s引用存储单元a[3]的表达式是____。

  答案: *(a+1)

  5) 指针s已指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是____。

  答案: 2

  6) 若p指向存储单元a[0],则以下语句的输出结果是____。

  for(i=0; i<5;i++) printf("%d ",*(p+i));

  printf("\\n");

  答案:10 20 30 40 50

计算机二级C语言章节练习在线测试
第8章 地址和指针 马上检测





相关阅读



关于我们 | 联系我们 | 用户指南 | 网站地图 | 意见建议 | 会员注册 | 用户协议 | 隐私政策