欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】二级C语言-指针(三)及答案解析.doc

    • 资源ID:1325483       资源大小:136.50KB        全文页数:33页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】二级C语言-指针(三)及答案解析.doc

    1、二级 C 语言-指针(三)及答案解析(总分:74.00,做题时间:90 分钟)一、B选择题/B(总题数:31,分数:31.00)1.若有说明:int n=2, *p=,则以下非法的赋值语句是_。 A.p=q; B.*p=q; C.n=*q; D.p=n;(分数:1.00)A.B.C.D.2.若有定义:int x, *pb;,则正确的赋值表达式是_。 A.pb=,则正确的赋值表达式是_。 A.pb= d+=1;printf(“% c,% c,“, *c, d);main() char a=A, b=a;fun( printf(“% c, % c/n“, a, b);程序运行后的输出结果是_。 A

    2、.B,a,B,a B.a,B,a,B C.A,b,A,b D.b,B,A,b(分数:1.00)A.B.C.D.5.以下程序的输出结果是_。#include stdio.hvoid 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=fun(px, py);printf(“% 2.0f, % 2.0f/n“, x, y); A.4,3 B.2,3 C.3,4 D.3,2(分数:1.00)A.B.C.D.6.以下程序的输出结果是_。#include stdio.hvoi

    3、d sub(int x, int y, int * z) *z=y-x;main() int a, b, c;sub(10, 5, sub (7, a, sub(a, b, printf(“% d, % d, % d/n“, a, b, c); A.5,2,3 B.-5,-12,-7 C.-5,-12,-17 D.5,-2,-7(分数:1.00)A.B.C.D.7.以下程序的输出结果是_。#include stdio.hsub(int *a, int n, int k) if(k=n) sub(a, n/2, 2*k);*a+=k;main() int x=0;sub(printf(“% d/

    4、n“, x); A.1 B.8 C.7 D.4(分数:1.00)A.B.C.D.8.以下选项中,对基类型相同的指针变量不能进行运算的运算符是_。 A.+ B.- C.- D.+(分数:1.00)A.B.C.D.9.若有定义语句:double x5=1.0,2.0,3.0,4.0,5.0,*p=x,则错误引用 x 教组元素的是_。 A.*p B.x5 C.*(p+1) D.*x(分数:1.00)A.B.C.D.10.若有以下定义:char s100=“string“;则下述函数调用中,_是错误的。 A.strlen(strcpy(s, “Hello“) B.strcat(s,strcpy(s1,

    5、 “s“); C.puts(puts(“Tom“) D.! strcmp (“ “, s)(分数:1.00)A.B.C.D.11.有以下程序:int fa(int x) return x*x;int fb(int x) return x*x*xint f(int (*f1)(), int(*f2)(), int x)return f2(x)-f1(x);main() int i;i=f(fa, fb, 2);printf(“% d/n“, i);程序运行后的输出结果是_。 A.-4 B.1 C.4 D.8(分数:1.00)A.B.C.D.12.在说明语句:int*f();中,标识符 f 代表的

    6、是_。 A.一个用于指向整型数据的指针变量 B.一个用于指向一维数组的行指针 C.一个用于指向函数的指针变量 D.一个返回值为指针型的函数名(分数:1.00)A.B.C.D.13.以下程序的输出结果是_。#include stdio.h#include string.hmain() char*p=“abcde/0fghjik/0“;printf(“% d/n“, strlen(p); A.12 B.15 C.6 D.5(分数:1.00)A.B.C.D.14.设有以下语句,则不是对 a 数组元素的正确引用的是_,其中 0i10。int a10=0,1,2,3,4,5,6,7,8,9, *p=a;

    7、 A.ap-a B.*(ab=100; var= ab=*var+10;printf(“% d/n“, *var); A.110 B.100 C.0 D.出现错误(分数:1.00)A.B.C.D.16.设有以下的程序段:char str=“Hello“;char*ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为_。 A.0 B./0 C.不确定的值 D.0的地址(分数:1.00)A.B.C.D.17.若有以下定义和语句:#include stdio.hint a=4, b=3, *p, *q, *w;p= q= w=q; q=NULL;则以下选项中错误的语句是_。 A.*q=

    8、0; B.w=p; C.*p=a; D.*p=*w;(分数:1.00)A.B.C.D.18.下面函数的功能是_。sss(s, t)char*s, *t; while(*s)return(*s-*t); A.求字符串的长度 B.比较两个字符串的大小 C.将字符串 s 复制到字符串 t 中 D.将字符串 s 接续到字符串 t 中(分数:1.00)A.B.C.D.19.有以下程序:#include stdlib.h#include stelio.hmain() char*p, *q;p=(char*)malloc(sizeof(char)*20); q=p;scanf(“% s% s“, p, q)

    9、; printf(“% s% s/n“ p, q);若从键盘输入:abe def 回车,则输出结果是_。 A.def def B.abc def C.abc d D.d d(分数:1.00)A.B.C.D.20.若有以下说明和定义:typedef int*INTEGER;INTEGER p, *q;以下叙述正确的是_。 A.p 是 int 型变量 B.p 是基类型为 int 的指针变量 C.q 是基类型为 int 的指针变量 D.程序中可用 INTEGER 代替 int 类型名(分数:1.00)A.B.C.D.21.说明语句 int*(*p)();的含义是_。 A.p 是一个指向 int 型数

    10、组的指针 B.p 是指针变量,它构成了指针数组 C.p 是一个指向函数的指针,该函数的返回值是一个整型 D.p 是一个指向函数的指针,该函数的返回值是一个指向整型的指针(分数:1.00)A.B.C.D.22.已知 char*P, *q;,正确的语句是_。 A.p*=3; B.p/=q; C.p+=3; D.p+=q;(分数:1.00)A.B.C.D.23.已知 int i, x34;,则不能将 x11的值赋给变量 i 的语句是_。 A.i=*(*(x+1)+1); B.i=x11; C.i=*(*(x+1); D.i=*(x1+1);(分数:1.00)A.B.C.D.24.下列程序的输出结果是

    11、_。#include stdio.hint b=2;int func(int*a) b+=*a; return (b);main() int a=2, res=2;res+=func(printf(“% d/n“, res); A.4 B.6 C.8 D.10(分数:1.00)A.B.C.D.25.有以下程序段:int*p, a=10, b=1;p= a=*p+b;执行该程序段后,a 的值为_。 A.12 B.11 C.10 D.编译出错(分数:1.00)A.B.C.D.26.对于基类型相同的两个指针变量之间,不能进行的运算是_。 A. B.= C.+ D.-(分数:1.00)A.B.C.D.

    12、27.以下程序的输出结果是_。#include stdio.hmain() char ch25=“6937“, “8254“, *p2;int i, j, s=0;for(i=0; i2; i+) pi=chifor(i=0; i2; i+)for(j=0; pij/0; j+=2s=10*s+pij-0;printf(“% d/n“, s); A.69825 B.63825 C.6385 D.693825(分数:1.00)A.B.C.D.28.当调用函数时,实参是一个数组名,则向函数传递的是_。 A.数组的长度 B.数组的首地址 C.数组每一个元素的地址 D.数组每个元素中的值(分数:1.0

    13、0)A.B.C.D.29.若有说明语句:int a, b, c, *d=,则能正确从键盘读入 3 个整数分别赋给变量 a、b、c 的语句是_。 A.scanf(“% d% d% d“, B.scanf(“% d% d% d“, C.scanf(“% d% d% d“, a, b, d); D.scanf(“% d% d% d“, a, b, *d);(分数:1.00)A.B.C.D.30.若定义:int a=511, *b=,则 printf(“%d/n“, *b);的输出结果为_。 A.无确定值 B.a 的地址 C.512 D.511(分数:1.00)A.B.C.D.31.若有以下定义和语句

    14、:#include stdio.hint a=4, b=3, *p, *q, *w;p= q= w=q; q=NULL;则以下选项中,错误的语句是_。 A.*q=0; B.w=p; C.*p=a; D.*p=*w;(分数:1.00)A.B.C.D.二、B操作题/B(总题数:8,分数:43.00)32.设有定义: int n, * k= 以下语句将利用指针变量 k 读写变量 n 中的内容,请将语句补充完整。 scanf(“% d“, _); printf(“% d/n“, _);(分数:8.00)填空项 1:_33.下列给定程序中函数 fun()的功能是:实现两个变量值的交换,规定不允许增加语句

    15、和表达式。例如,变量 a 中的值原为 8,b 中的值原为 3,程序运行后 a 中的值为 3,b 中的值为 8。请改正程序中的错误,使它得出正确的结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序#include stdlib.h#include conio.h#include stdio.hint fun(int*x, int y) int t;/* * * * *found* * * * * /t=x; x=y;/* * * * *found* * * * * /return (y);void main() int a=3, b=8;printf(“% d

    16、 % d/n“, a, b);b=fun(printf(“% d % d/n“, a, b);_34.下列给定程序中,函数 fun()的功能是:将形参 n 所指变量中,各位上为偶数的数去掉,剩余的数按原来从高位到低位的顺序组成一个新数,并通过形参指针 n 传回所指变量。例如,若输入一个数 27638496,则新数为 739。请在标号处填入正确的内容,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构。试题程序#include stdio.hvoid fun(unsigned long * n) unsigned long x=0, i; int t;i=1;w

    17、hile(*n) t=*n% _;if(t% 2!=_) x=x+t*i; i=i*10;*n=*n/10;*n=_;main() unsigned long n=-1;while(n99999999 |n0) printf(“Please input (0n100000000):“); scanf(“% ld“, fun(printf(“/nThe result is:% ld/n“, n);(分数:8.00)填空项 1:_35.请补充函数 fun(),该函数的功能是:按“0”“9”统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组 num 中。注意:不能使用字符串库函数。例如,输

    18、入“x=112385713.456+0.909*bc”,结果为:1=3, 3=2, 5=2, 7=1, 9=2。注意:部分源程序给出如下。请勿改动 main()函数和其他函数中的任何内容,仅在函数 fun()的标号处填入所编写的若干表达式或语句。试题程序#include stdlib.h#include stdio.h#define N 1000void fun(char *tt, int num) int i, j;int bb10;char *p=tt;for(i=0; i10; i+) numi=0;bbi=0;while(_) if(*p=0p+;for(i=1, j=0; i10;

    19、i=i+2, j+)_;void main() char strN;int num10, k;printf(“/nPlease enter a char string:“);gets (str);printf(“/n * * The original string * * /n“);puts (str);fun(str, num);printf(“/n * * The number of letter * */n“);for(k=0; k5; k+) printf(“/n“);printf(“% d=% d“, 2*k+1, numk);printf(“/n“);(分数:8.00)填空项 1:

    20、_36.由 N 个有序整数组成的数列已放在一维数组中,下列给定程序中函数 fun()的功能是:利用折半查找法查找整数 m 在数组中的位置。若找到,返回其下标值;否则,返回-1。折半查找的基本算法是:每次查找前先确定数组中待查的范围 low 和 high(lowhigh),然后用 m 与中间位置(mid)上元素的值进行比较。如果 m 的值大于中间位置元素的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中,直到 lowhigh,查找结束。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试

    21、题程序#include stdio.h#define N 10/* * * * *found* * * * * /void fun(int a, int m) int low=0, high=N-1, mid;while(low=high) mid=(low+high)/2;if(mamid)high=mid-1;/* * * * *found* * * * * /else If(mamid)low=mid+1;else return (mid);return(-1);main() int i, aN=-3,4,7,9,13,45,67,89,100,180 , k, m;printf(“a

    22、数组中的数据如下:“);for(i=0; iN; i+) printf(“% d“, ai);printf(“Enter m:“); scanf(“% d“, k=fun(a, m);if(k=0) printf(“m=% d, index =% d/n“, m, k);else printf(“Not be found!/n“);_37.下述程序在数组中同时查找最大元素下标和最小元素下标,分别存放在 main()函数的变量 max 和 min中,请填空。试题程序#include stdio.hvoid find(int*a, int n, int*max, int*min) int i;*m

    23、ax=*min=0;for(i=1; in; i+)if(aia*max)_;elseif(aia*min)_;main() int a=5,8,7,6,2,7,3;int max, min;find(_);printf(“/n% d, % d“, max, min);(分数:8.00)填空项 1:_38.下列给定程序中,函数 fun()的功能是:在形参 s 所指字符串中的每个数字字符之后插入一个*号。例如,形参 s 所指的字符串为 def35adh3kjsdf7,执行后结果为 def3*5*adh3*kjsdf7*。请在标号处填入正确的内容,使程序得出正确的结果。注意:部分源程序给出如下。不

    24、得增行或删行,也不得更改程序的结构。试题程序#include stdio.hvoid fun(char*s) int i, j, n;for (i=0; si!=/0; i+)if(si=0_si=9) n=0;while(si+i+n!=_)n+;for(j=i+n+1; ji; j-)sj+1=_;sj+1=*;i=i+1;main() char s60=“ba3a54cd23a“;printf(“/nThe original string is:% s/n“, s);fun(s);printf(“/nThe result is:% s/n“, s);(分数:11.00)填空项 1:_39

    25、.下列给定程序中函数 fun()的功能是:将 s 所指字符串中出现的与 t1 所指字符串相同的子串全部替换为 t2 所指字符串,所形成的新串放在 w 所指的数组中。要求 t1 和 t2 所指字符串的长度相同。例如,当 s 所指字符串中的内容为“abcdabfab”,t1 所指子串中的内容为“ab”,t2 所指子串中的内容为“99”时,在 w 所指的数组中的内容应为“99cd99f99”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序#include stdlib.h#include conio.h#include st

    26、dio.h#include string.hvoid fun(char * s, char * t1, char * t2, char * w) char *p, *r, *a;strcpy (w, s);while(*w) p=w; r=t1;/* * * * *found* * * * * /while(r)if(*r=*p) r+; p+;else break;if(*r=/0) a=w; r=t2;while(*r)/* * * * *found* * * * * / *a=*r; a+; r+w+=strlen(t2);else w+;void main() char s100, t

    27、1100, t2100, w100;printf(“/nPlease enter string S:“);scanf(“% s“, s);printf(“/nPlease enter substring t1:“);scanf(“% s“, t1);printf(“/nPlease enter substring t2:“); scanf(“% s“, t2);if(strlen(t1)=strlen(t2) fun(s, t1, t2, w);printf(“/nThe result is:% s/n“, w);else printf(“Error:strlen(t2)/n“);_二级 C

    28、语言-指针(三)答案解析(总分:74.00,做题时间:90 分钟)一、B选择题/B(总题数:31,分数:31.00)1.若有说明:int n=2, *p=,则以下非法的赋值语句是_。 A.p=q; B.*p=q; C.n=*q; D.p=n;(分数:1.00)A.B.C.D. 解析:解析 选项 A 是两个指针变量之间的赋值;而选项 B 是把 q 的值赋给 p 指向的整型变量,虽然不常用,但也是对的;选项 C 是把 q 指向的变量的值赋值给 n,也是没有问题的;而选项 D 中,整型数据和指针型数据之间不能进行赋值运算,所以是错误的。2.若有定义:int x, *pb;,则正确的赋值表达式是_。

    29、A.pb=,则正确的赋值表达式是_。 A.pb= d+=1;printf(“% c,% c,“, *c, d);main() char a=A, b=a;fun( printf(“% c, % c/n“, a, b);程序运行后的输出结果是_。 A.B,a,B,a B.a,B,a,B C.A,b,A,b D.b,B,A,b(分数:1.00)A.B.C.D. 解析:解析 本题考查了函数之间地址值的传递,当形参为指针变量时,实参和形参之间的数据传递是地址传递,可以在被调用函数中对调用函数中的变量进行引用,在被调用函数中直接改变调用函数中的变量的值,所以主函数中的 b 在代到 fun()函数后将要发

    30、生变换,而 a 将不发生变换,所以在调用子函数时输出“b,B“,返回到主函数中输出的是 A 和 b,所以正确答案是选项 D。5.以下程序的输出结果是_。#include stdio.hvoid 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=fun(px, py);printf(“% 2.0f, % 2.0f/n“, x, y); A.4,3 B.2,3 C.3,4 D.3,2(分数:1.00)A.B.C. D.解析:解析 主函数中定义了两个 float 变量

    31、x 和 y,以及基类型为 float 的指针变量 px 和 py,并且把x 和 y 的地址分别赋给了 px 和 py。主函数中调用 fun()函数时,把 px 和 py 作为实参,也就是把变量 x和 y 的地址传送给形参。函数 fun()为 void 类型,因此函数没有函数值返回。函数的形参 a 和 b 是两个基类型为 float 的指针变量。因此,在 a 和 b 中接受的是主函数中 x 和 y 的地址。在 fun()函数体中,*a和*b 将分别引用主函数中 x 和 y 的存储单元。fun()函数中,语句*a=*a+*a;的含义是两次取 a 所指对象(主函数的 x)中的值相加,其和为 4.0,

    32、赋给 a 所指对象(主函数的 x)中,因此主函数的 x 中被重新赋值,x 中的值变成 4.0。fun()函数中后面的 3 条语句,是交换两个变量值的典型算法。先把 a 所指存储单元(主函数的 x)中的值放在临时变量 W 中,然后把 b 所指存储单元(主函数的 y)中的值放在 a 所指存储单元(主函数的 x)中,最后把 w 中的值放入 b 所指存储单元(主函数的 y)中。从而通过 fun()函数,对主函数的 x 和 y 中的值进行交换。交换之前 x 中的值变成 4.0,y 中的值是 3.0,经过交换,x 中的值已变成 3.0, y 中的值为 4.0。主函数的输出语句中,使用了“%2.0f”的格式

    33、说明,表明输出数据占两个字符位置,但“.0”的格式规定输出时不含小数点和小数,所以输出结果应是 3,4。总结:本题给出了通过函数对两数进行交换的算法。注意:实参和形参之间仍遵循“按值传送”的规则,交换是通过指针间接进行的。6.以下程序的输出结果是_。#include stdio.hvoid sub(int x, int y, int * z) *z=y-x;main() int a, b, c;sub(10, 5, sub (7, a, sub(a, b, printf(“% d, % d, % d/n“, a, b, c); A.5,2,3 B.-5,-12,-7 C.-5,-12,-17

    34、D.5,-2,-7(分数:1.00)A.B. C.D.解析:解析 sub()函数为 void 类型,因此无函数返回值。函数的形参中,z 是一个基类型为 int 的指针变量,因此它只能从实参接受一个 int 变量的地址。在 sub()函数体中,语句*z=y-x;把形参 y 与 x 的差值放入形参 z 所指的存储单元中。在主函数中,3 次调用 sub()函数。第一次调用时,把 10 和 5 分别传送给形参 x 和 y,把主函数中变量 a(int 类型)的地址传送给了形参 z,所以形参 z 就指向了主函数中的变量 a。在 sub()函数中,语句*z=y-x;把-5 放入 z 所指的存储单元中,如上所

    35、述,形参 z 已指向主函数中的变量 a,因此,这时主函数中的变量 a 中就已被赋予-5。接着返回主函数。第二次调用时,把 7 传送给了形参 x,把 a 中的值(-5)传送给了形参 y,主函数中变量 b(int 类型)的地址传送给了对应形参中的指针变量 z,所以形参 z 就指向了主函数中的变量 b。执行 sub()函数中的语句*z=y-x;把-12 赋给主函数中的变量 b,然后返回主函数。第三次调用时,把 a 中的值(-5)传送给了形参 x,把 b 中的值(-12)传送给了形参 y,而形参指针变量 z 指向了主函数中变量 c。sub()函数中,*z=y-x;把-12-(-5)的值放入 z 所指的

    36、变量 c 中,因此,c 中就放入了-7。返回主函数后,输出 a、b、c 的值,因此输出的结果是-5、-12、-7。7.以下程序的输出结果是_。#include stdio.hsub(int *a, int n, int k) if(k=n) sub(a, n/2, 2*k);*a+=k;main() int x=0;sub(printf(“% d/n“, x); A.1 B.8 C.7 D.4(分数:1.00)A.B.C. D.解析:解析 在 main()函数中调用函数 sub(“使*a 的值为 4,返回第一次递归调用,再执行“*a+=k;“使*a 的值为 6,返回第一次调用,再执行“*a+=

    37、k;“使%a 的值为 7,因此变量 x 的值为 7。8.以下选项中,对基类型相同的指针变量不能进行运算的运算符是_。 A.+ B.- C.- D.+(分数:1.00)A. B.C.D.解析:解析 在 C 语言中,当指针变量指向某一连续存储单元时,可以对该指针变量进行+、-运算或加、减某个整数的算术运算,达到移动指针的目的。此外,当两个基类型相同的指针变量都指向某一连续存储区中的存储单元时,如指向同一组中的两个元素,则这两个指针可以相减,得到的差值(取绝对值)表示两个指针之间的元素个数。9.若有定义语句:double x5=1.0,2.0,3.0,4.0,5.0,*p=x,则错误引用 x 教组元

    38、素的是_。 A.*p B.x5 C.*(p+1) D.*x(分数:1.00)A.B. C.D.解析:解析 x5说明数组 x 有 5 个元素。下标范围为 04,选项 B 中 x5超过了下标范围,故引用错误。10.若有以下定义:char s100=“string“;则下述函数调用中,_是错误的。 A.strlen(strcpy(s, “Hello“) B.strcat(s,strcpy(s1, “s“); C.puts(puts(“Tom“) D.! strcmp (“ “, s)(分数:1.00)A.B.C. D.解析:解析 本题说明了字符串操作类函数的返回指针特性。一些典型的字符串操作函数返回

    39、值是字符指针,如 strcpy(s1, s2)和 strcat(s1, s2),这两个函数都返回 s1 的值。因此,选项 A、选项 B 正确。选项 D 中的连续两个“ “组成空字符串,调用正确。选项 C 中的错误来自函数 puts(),该函数的返回值是整数而不是字符串,因此,外层的函数调用使用了错误的实参数。11.有以下程序:int fa(int x) return x*x;int fb(int x) return x*x*xint f(int (*f1)(), int(*f2)(), int x)return f2(x)-f1(x);main() int i;i=f(fa, fb, 2);p

    40、rintf(“% d/n“, i);程序运行后的输出结果是_。 A.-4 B.1 C.4 D.8(分数:1.00)A.B.C. D.解析:解析 本题考点是函数之间的参数传递。只要注意在被调用函数中的形参是指针类型还是基类型即可。12.在说明语句:int*f();中,标识符 f 代表的是_。 A.一个用于指向整型数据的指针变量 B.一个用于指向一维数组的行指针 C.一个用于指向函数的指针变量 D.一个返回值为指针型的函数名(分数:1.00)A.B.C.D. 解析:13.以下程序的输出结果是_。#include stdio.h#include string.hmain() char*p=“abcd

    41、e/0fghjik/0“;printf(“% d/n“, strlen(p); A.12 B.15 C.6 D.5(分数:1.00)A.B.C.D. 解析:14.设有以下语句,则不是对 a 数组元素的正确引用的是_,其中 0i10。int a10=0,1,2,3,4,5,6,7,8,9, *p=a; A.ap-a B.*(ab=100; var= ab=*var+10;printf(“% d/n“, *var); A.110 B.100 C.0 D.出现错误(分数:1.00)A. B.C.D.解析:16.设有以下的程序段:char str=“Hello“;char*ptr;ptr=str;执行

    42、上面的程序段后,*(ptr+5)的值为_。 A.0 B./0 C.不确定的值 D.0的地址(分数:1.00)A.B. C.D.解析:17.若有以下定义和语句:#include stdio.hint a=4, b=3, *p, *q, *w;p= q= w=q; q=NULL;则以下选项中错误的语句是_。 A.*q=0; B.w=p; C.*p=a; D.*p=*w;(分数:1.00)A. B.C.D.解析:18.下面函数的功能是_。sss(s, t)char*s, *t; while(*s)return(*s-*t); A.求字符串的长度 B.比较两个字符串的大小 C.将字符串 s 复制到字符

    43、串 t 中 D.将字符串 s 接续到字符串 t 中(分数:1.00)A.B. C.D.解析:19.有以下程序:#include stdlib.h#include stelio.hmain() char*p, *q;p=(char*)malloc(sizeof(char)*20); q=p;scanf(“% s% s“, p, q); printf(“% s% s/n“ p, q);若从键盘输入:abe def 回车,则输出结果是_。 A.def def B.abc def C.abc d D.d d(分数:1.00)A. B.C.D.解析:20.若有以下说明和定义:typedef int*IN

    44、TEGER;INTEGER p, *q;以下叙述正确的是_。 A.p 是 int 型变量 B.p 是基类型为 int 的指针变量 C.q 是基类型为 int 的指针变量 D.程序中可用 INTEGER 代替 int 类型名(分数:1.00)A.B. C.D.解析:21.说明语句 int*(*p)();的含义是_。 A.p 是一个指向 int 型数组的指针 B.p 是指针变量,它构成了指针数组 C.p 是一个指向函数的指针,该函数的返回值是一个整型 D.p 是一个指向函数的指针,该函数的返回值是一个指向整型的指针(分数:1.00)A.B.C.D. 解析:22.已知 char*P, *q;,正确的语句是_。 A.p*=3; B.p/=q; C.p+=3; D.p+=q;(分数:1.00)A.B.C. D.解析:23.已知 int i, x34;,则不能将 x11的值赋给变量 i 的语句是_。 A.i=*(*(x+1)+1); B.i=x11; C.i=*(*(x+1); D.i=*(x1+1);(分数:1.00)A.B.C. D.解析:24.下列程序的输出结果是_。#include stdio.hint b=2;int


    注意事项

    本文(【计算机类职业资格】二级C语言-指针(三)及答案解析.doc)为本站会员(livefirmly316)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开