【计算机类职业资格】二级C语言-指针(三)及答案解析.doc
《【计算机类职业资格】二级C语言-指针(三)及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C语言-指针(三)及答案解析.doc(33页珍藏版)》请在麦多课文档分享上搜索。
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
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 语言 指针 答案 解析 DOC
