【计算机类职业资格】二级C语言-443及答案解析.doc

上传人:Iclinic170 文档编号:1325384 上传时间:2019-10-17 格式:DOC 页数:26 大小:100.50KB
下载 相关 举报
【计算机类职业资格】二级C语言-443及答案解析.doc_第1页
第1页 / 共26页
【计算机类职业资格】二级C语言-443及答案解析.doc_第2页
第2页 / 共26页
【计算机类职业资格】二级C语言-443及答案解析.doc_第3页
第3页 / 共26页
【计算机类职业资格】二级C语言-443及答案解析.doc_第4页
第4页 / 共26页
【计算机类职业资格】二级C语言-443及答案解析.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、二级 C 语言-443 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:54,分数:100.00)1.有以下程序: #includestdio.h void f(int*p,int*q); main() int m=1,n=2,*r= f(r, printf(“%d,%d“,m,n); void f(int*p,int*q) p=p+1; *q=*q+1; 程序的运行结果是_。(分数:1.50)A.2,3B.1,3C.1,4D.1,22.设已有定义 float x;,则下列对指针变量 p 进行定义且赋初值的语句中正确的是_。(分数:1.50)A.int*p=(floa

2、t)x;B.float*p=C.float p=D.float*p=1024;3.若有定义语句 double a,*p=,下列叙述中错误的是_。(分数:1.50)A.定义语句中的*号是一个间址运算符B.定义语句中的*号是一个说明符C.定义语句中的 p 只能存放 double 类型变量的地址D.定义语句中,*p= int*p1= *p=*p1*(*p2); printf(“%d/n“,c); 程序的运行结果是_。(分数:1.50)A.1B.2C.3D.45.有以下程序: #includestdio.h main() int n,*p=NULL; *p= printf(“Input n:“); s

3、canf(“%d“, printf(“output n:“); printf(“%d/n“,p); 该程序试图通过指针 p 为变量 n 读入数据并输出,但程序有多处错误,下列语句中正确的是_。(分数:1.50)A.int n,*p=NULL;B.*p=C.scanf(“%d“,6.若有定义语句 double x,y,*px,*py;,执行了 px=py=之后,正确的输入语句是_。(分数:1.50)A.scanf(“%lf%le“,px,py);B.scanf(“%f%f“C.scanf(“%f%f“,x,y);D.scanf(“%lf%lf:,x,y);7.下列程序段中完全正确的是_。(分数:

4、1.50)A.int*p;scanf(“%d“,B.int*p;scanf(“%d“,p);C.int k,*p=scanf(“%d“,p);D.int k,*p;*p=scanf(“%d“,p);8.若有定义语句 int a23,*p 3;,则以下语句中正确的是_。(分数:1.50)A.p=a;B.p0=a;C.p0=D.p1=9.设有以下函数:void fun(int n,char*s).,则下列对函数指针的定义和赋值均正确的是_。(分数:1.50)A.void(*pf)(int,char);pf=B.void*pf();pf=fun;C.void*pf();*pf=fun;D.void(

5、pf)(int,char*);pf=fun;10.下列函数的功能是_。 void fun(char*a,char*b) while(*b=*a)!=“/0“)a+;b+; (分数:1.50)A.将 a 所指字符串赋给 b 所指空间B.使指针 b 指向 a 所指字符串C.将 a 所指字符串和 b 所指字符串进行比较D.检查 a 和 b 所指字符串中是否有“/0“11.有以下程序: #includestdio.h #define N 4 void fun(int aN,int b) int i; for(i=0;iN;i+)bi=aii-aiN-1-i; main() int xNN=1,2,3

6、4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i; fun(x,y); for(i=0;iN;i+) printf(“%d,“,yi); printf(“/n“); 程序的运行结果是_。(分数:1.50)A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,12.有以下程序: #ineludestdio.h #includestring.h main() char str20=“One*World“,“One*Dream!“,*p=str1; printf(“%d,“,strlen(p); printf(“%s/n“,p)

7、 程序的运行结果是_。(分数:1.50)A.10,One*Dream!B.9,One*Dream!C.9,One*WorldD.10,One*World13.若有定义 int w35;,则以下不能正确表示该数组元素的表达式是_。(分数:1.50)A.*(s=“Olympic“;B.char s7;s=“Olympic“;C.char*s;s=“Olympic“;D.char s7;s=“Olympic“;15.有以下程序(注:字符 a 的 ASCII 码值为 97): #includestdio.h main() char*s=“abc“; do printf(“%d“,*s%10); +s

8、 while(*s); 程序的运行结果是_。(分数:1.50)A.789B.abcC.7890D.97989916.设有定义“char*c;”,以下选项中能够使 c 正确指向一个字符串的是_。(分数:1.50)A.char str=“string“;c=str;B.scanf(“%s“,c);C.c=getchar();D.%c=“string“;17.有以下函数: int fun(char*x,char*y) int n=0; while(*x=*y) y+; n+; return n; 函数的功能是_。(分数:2.00)A.将 y 所指字符串赋给 x 所指存储空间B.查找 x 和 y 所

9、指字符串中是否有“/0“C.统计 x 和 y 所指字符串中最前面连续相同的字符个数D.统计 x 和 y 所指字符串中相同的字符个数18.下列语句组中正确的是_。(分数:2.00)A.char*s;s=“BOOK!“;B.char*s;s=“BOOK!“;C.char s10;s=“BOOK!“;D.char s;s=“BOOK!“;19.设有定义语句“int(*f)(int);”则下列叙述中正确的是_。(分数:2.00)A.f 是基类型为 int 的指针变量B.f 是指向函数的指针变量,该函数具有一个 int 类型的形参C.f 是指向 int 类型一维数组的指针变量D.f 是函数名,该函数的返

10、回值是基类型为 int 类型的地址20.有以下程序: #includestdio.h int add(int a,int b) return(a+b); main() int k,(*f)(),a=5,b=10; f=add; . 则以下函数调用语句错误的是_。(分数:2.00)A.k=f(a,b);B.k=add(a,h);C.k=(*f)(a,b);D.k=*f(a,b);21.下列语句中存在语法错误的是_。(分数:2.00)A.char ss620;ss1=“right?“;B.char ss20=“right?“;C.char*ss6;ss1=“right?“;D.char*ss=“r

11、ight?“;22.下列叙述中正确的是_。(分数:2.00)A.在 C 语言中,预处理命令行都以“#”开头B.预处理命令行必须位于 C 源程序的起始位置C.#includestdio.h必须放在 C 程序的开头D.C 语言的预处理不能实现宏定义和条件编译的功能23.下列关于宏的叙述中正确的是_。(分数:2.00)A.宏替换没有数据类型限制B.宏定义必须位于源程序中所有语句之前C.宏名必须用大写字母表示D.宏调用比函数调用耗费时间24.有以下程序: #includestdio.h #define PT 3.5; #define S(X)PT*x*x; main() int a=1,b=2; pr

12、intf(“%4.1f/n“,S(a+b); 程序的运行结果是_。(分数:2.00)A.7.5B.31.5C.程序有错无输出结果D.14.025.若程序中有宏定义行:#define N 100,则下列叙述中正确的是_。(分数:2.00)A.宏定义行中定义了标识符 N 的值为整数 100B.在编译程序对 C 源程序进行预处理时用 100 替换标识符 NC.上述宏定义行实现将 100 赋给标识符 ND.在运行时用 100 替换标识符 N26.有以下程序: #includestdio.h #define S(x)4*(x)*x+1 main() int k=5,j=2; printf(“%d/n“,

13、S(k+j); 程序的运行结果是_。(分数:2.00)A.33B.197C.143D.2827.有以下程序: #includestdio.h #define SUB(a)(a)-(a)main() int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf(“%d/n“,d); 程序的运行结果是_。(分数:2.00)A.0B.-12C.-20D.1028.下列叙述中错误的是_。(分数:2.00)A.C 程序对预处理命令行的处理是在程序执行过程中进行的B.预处理命令行的最后不能以分号表示结束C.#define MAX 是合法的宏定义命令行D.在程序中,凡是以“#”开始的语句行

14、都是预处理命令行29.若有语句 typedef struct Sint g;char h;T;,则下列叙述中正确的是_。(分数:2.00)A.可用 S 定义结构体变量B.可用 T 定义结构体变量C.S 是 struct 类型的变量D.T 是 struct S 类型的变量30.设有语句 typedef struct TTchar c;int a4;CIN;,则下列叙述中正确的是_。(分数:2.00)A.CIN 是 struct TT 类型的变量B.TT 是 struct 类型的变量C.可以用 TT 定义结构体变量D.可以用 CIN 定义结构体变量31.下列叙述中错误的是_。(分数:2.00)A.

15、可以用 typedef 将已存在的类型用一个新的名字来代表B.可以通过 typedef 增加新的类型C.用 typedef 定义新的类型名后,原有类型名仍有效D.用 typedef 可以为各种类型起别名,但不能为变量起别名32.有以下程序: #includestdio.h main() struct STU char name9; char sex; double score2; ; struct STU a=“Zhao“,“m“,85.0,90.0,b=“Qian“,“f“,95.0,92.0; b=a; printf(“%s,%c,%2.0f,%2.0f/n“,b.name,b.sex,b

16、score0,b.score1); 程序的运行结果是_。(分数:2.00)A.Qian,m,85,90B.Zhao,m,85,90C.Zhao,f,95,92D.Qian,f,95,9233.下列结构体类型说明和变量定义中正确的是_。(分数:2.00)A.struct REC;int n;char c;REC t1,t2;B.typedef structint n;char c;REC;REC t1,t2;C.typedef struct REC;int n=0;char c=“A“;t1,t2;D.structint n;char c;REC;REC t1,t2;34.下列结构体的定义语句

17、中错误的是_。(分数:2.00)A.struct ordint x;int y;int z;struct ord a;B.struct ordint x;int y;int z;struct ord a;C.struct ordint x;int y;int z;a;D.structint x;int y;int z;a;35.设有定义: struct complex int real,unreal; data1=1,8,data2; 则下列赋值语句中错误的是_。(分数:2.00)A.data2=(2,6);B.data2=data1;C.data2.real=data1.real;D.dat

18、a2.real=data1.unreal;36.有以下程序: struct stint x;int*y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c; 以下选项中表达式值为 11 的是_。(分数:2.00)A.+pt-xB.pt-xC.*pt-yD.(pt+)-x37.有以下定义和语句: struct workers int num; char name20;char c; struct int day; int month; int year; s; ; struct workers w,*pw; pw= 能给 w 中 year 成员赋

19、 1980 的语句是_。(分数:2.00)A.pw-year=1980;B.year=1980;C.s.year=1980;D.*pw.year=1980;38.有以下程序: #includestdio.h struct ttint x;struct tt*y;*p; struct tt a4=20,a+1,15,a+2,30,a+3,17,a; main() int i; p=a; for(i=1;i=2;i+) printf(“%d,“,p-x); p=p-y; 程序的运行结果是_。(分数:2.00)A.20,30,B.30,17C.15,30,D.20,15,39.设有定义:struct

20、char mark12;int num1;double num2;t1,t2;,若变量均已正确赋初值,则下列语句中错误的是_。(分数:2.00)A.t1=t2;B.t2.num1=t1.num1;C.t2.mark=t1.mark;D.t2.num2=t1.num2;40.有以下程序: #includestdio.h struct s int a,b; data2=10,100,20,200; main() struct S p=data1; printf(“%d/n“,+(p.a); 程序的运行结果是_。(分数:2.00)A.10B.11C.20D.2141.有以下结构体说明、变量定义和赋值

21、语句: struct STDchar name10;int age;char sex;s5,*ps;ps= 则下列 scanf 函数调用语句有错误的是_。(分数:2.00)A.scanf(“%s“,s0.name);B.scanf(“%d“,C.scanf(“%c“,D.scanf(“%d“,ps-age);42.有以下程序: #includestdio.h typedef structint b,p;A; void f(A c)/*注意:c 是结构变量名*/ int j; c.b+=1; c.p+=2; main() int i; A a=1,2; f(a); printf(“%d,%d/n

22、a.b,a.p); 程序的运行结果是_。(分数:2.00)A.2,4B.1,2C.1,4D.2,343.有以下程序: #includestdio.h struct S int n;int a20; void f(struct S*p) int i,j,t; for(i=0;ip-n-1;i+) for(j=i+1;jp-n;j+) if(p-aip-aj) t=p-ai; p-ai=p-aj; p-aj=t; main() int i; struct S s=10,2,3,1,6,8,7,5,4,10,9; f( for(i=0;is.n;i+) printf(“%d,“,s.ai); 程

23、序的运行结果是_。(分数:2.00)A.2,3,1,6,8,7,5,4,10,9,B.10,9,8,7,6,5,4,3,2,1,C.1,2,3,4,5,6,7,8,9,10,D.10,9,8,7,6,1,2,3,4,5,44.程序中已构成如下不带头节点的单向链表结构,指针变量 s、p、q 均已正确定义,并用于指向链表节点,指针变量 s 总是作为指针指向链表的第一个节点。 (分数:2.00)A.删除尾节点B.尾节点成为首节点C.删除首节点D.首节点成为尾节点45.假定已建立以下链表结构,且指针 p 和 q 已指向如图所示的节点。 (分数:2.00)A.p-next=q-next;free(q);

24、B.p=q-next;free(q);C.p=q;free(q);D.(*p).next=(*q).next;free(p);46.下列关于 C 语言文件的叙述中正确的是_。(分数:2.00)A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文件47.下列叙述中正确的是_。(分数:2.00)A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B.打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中对文件

25、进行写操作后,必须先关闭该文件然后再打开才能读到第一个数据D.C 语言中的文件是流式文件,因此只能顺序存取数据48.有以下程序: #includestdio.h main() FILE*fp;int a10=1,2,3,i,n; fp=fopen(“d1.dat“,“w“); for(i=0;i3;i+) fprintf(fp,“%d“,ai); fprintf(fp,“/n“); fclose(fp); fp=fopen(“d1.dat“,“r“); fscanf(fp,“%d“, fclose(fp); printf(“%d/n“,n); 程序的运行结果是_。(分数:2.00)A.321B

26、12300C.1D.12349.设文件指针 fp 已定义,执行语句 fp=fopen(“file“,“w“);后,下列针对文本文件 file 操作叙述的选项中正确的是_。(分数:2.00)A.只能写不能读B.写操作结束后可以从头开始读C.可以在原有内容后追加写D.可以随意读和写50.有以下程序: #includestdio.h main() FILE*f; f=fopen(“filea.txt“,“w“); fprintf(f,“abc“); fclose(f); 若文本文件 filea.txt 中原有内容为 hello,则运行以上程序后,文件 filea.txt 中的内容为_。(分数:2.

27、00)A.abcloB.abcC.helloabcD.abchello51.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中 buffer 代表的是_。(分数:2.00)A.一个内存块的字节数B.一个整型变量,代表待读取的数据的字节数C.一个文件指针,指向待读取的文件D.一个内存块的首地址,代表读入数据存放的地址52.有以下程序: #includestdio.h main() FILE*pf; char*s1=“China“,*s2=“Beijing“; pf=fopen(“abc.dat“,“wb+“); fwrite(s2,7,1,pf); r

28、ewind(pf);/*文件位置指针回到文件开头*/ fwrite(s1,5,1,pf); fclose(pf); 程序执行后,abc.dat 文件的内容是_。(分数:2.00)A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina53.有以下程序: #includestdio.h main() FILE*fp;char str10; fp=fopen(“myfile.dat“,“w“); fputs(“abc“,fp); fclose(fp); fp=fopen(“myfile.dat“,“a+“); fprintf(fp,“%d“,28); rewind(

29、fp); fscanf(fp,“%s“,str); puts(str); fclose(fp); 程序的运行结果是_。(分数:2.00)A.abcB.28cC.abc28D.因类型不一致而出错54.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为_。(分数:2.00)A.0B.“/0“C.非 0 值D.NULL二级 C 语言-443 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:54,分数:100.00)1.有以下程序: #includestdio.h void f(int*p,int*q); main() int m=1,n

30、2,*r= f(r, printf(“%d,%d“,m,n); void f(int*p,int*q) p=p+1; *q=*q+1; 程序的运行结果是_。(分数:1.50)A.2,3B.1,3 C.1,4D.1,2解析:解析 在 f(int*p,int*q)函数中,执行 p=p+1 是将 p 所对应的地址加 1,而*q=*q+1 是将 q 所指向 n 的地址所对应的值加 1,所以 m 的值所对应的值没有变,而 n 的值则为 3 了,因此 B 选项正确。2.设已有定义 float x;,则下列对指针变量 p 进行定义且赋初值的语句中正确的是_。(分数:1.50)A.int*p=(float)

31、x;B.float*p= C.float p=D.float*p=1024;解析:解析 指针是用来存放地址的变量,用(类型名*指针变量名)的形式定义。赋值时应将某个变量地址即,下列叙述中错误的是_。(分数:1.50)A.定义语句中的*号是一个间址运算符 B.定义语句中的*号是一个说明符C.定义语句中的 p 只能存放 double 类型变量的地址D.定义语句中,*p=中,*号是一个指针运算符,而非间址运算符,所以 A 错误。4.有以下程序: #includestdio.h main() int a=1,b=3,c=5; int*p1= *p=*p1*(*p2); printf(“%d/n“,c)

32、 程序的运行结果是_。(分数:1.50)A.1B.2C.3 D.4解析:解析 该程序中 int*p1=指定义 3 个指针变量,并赋值,即使 p1 指向 a;p2 指向 b;p 指向 c。*p=*p1*(*p2);语句是给 p 所指的存储单元 c 赋值,就是 p1 所指的存储单元的值,即 a的值,与 p2 所指的存储单元 b 的值相乘,也就是 c=a*b,等价于 c=1*3=3,因此 C 选项正确。5.有以下程序: #includestdio.h main() int n,*p=NULL; *p= printf(“Input n:“); scanf(“%d“, printf(“output n

33、); printf(“%d/n“,p); 该程序试图通过指针 p 为变量 n 读入数据并输出,但程序有多处错误,下列语句中正确的是_。(分数:1.50)A.int n,*p=NULL; B.*p=C.scanf(“%d“,解析:解析 B 选项的正确写法应为 p=,执行了 px=py=之后,正确的输入语句是_。(分数:1.50)A.scanf(“%lf%le“,px,py); B.scanf(“%f%f“C.scanf(“%f%f“,x,y);D.scanf(“%lf%lf:,x,y);解析:解析 因为 x 和 y 都是 double 型数据,所以输入时的格式字符应为%lf,所以 B、C 选

34、项错误。D选项中的 scanf(“%lf%lf“,x,y);应为 scanf(“%lf%lf“,。7.下列程序段中完全正确的是_。(分数:1.50)A.int*p;scanf(“%d“,B.int*p;scanf(“%d“,p);C.int k,*p=scanf(“%d“,p); D.int k,*p;*p=scanf(“%d“,p);解析:解析 A 选项中错在没有对指针进行初始化,无效指针,并且在 scanf(“%d“,,则以下语句中正确的是_。(分数:1.50)A.p=a;B.p0=a;C.p0= D.p1=解析:解析 A 选项错误,因为 p 是指向一个指针数组,作为数组名,不能指向别的地

35、方。B 选项错误,因为 p0是一个 int 指针,也就是 int *;而 a 是一个指向指针的指针 int*。C 选项正确,因为 p0是一个 int*,a12是 int,pf=B.void*pf();pf=fun;C.void*pf();*pf=fun;D.void(*pf)(int,char*);pf=fun; 解析:解析 函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。函数名代表函数的入口地址,指向函数的指针应该定义为 void(*pf)()。如果定义为 void*pf(),则表示函数 pf的返回值是一个基类型为 void 的指针,因此 D 选项正确。10.下列函数

36、的功能是_。 void fun(char*a,char*b) while(*b=*a)!=“/0“)a+;b+; (分数:1.50)A.将 a 所指字符串赋给 b 所指空间 B.使指针 b 指向 a 所指字符串C.将 a 所指字符串和 b 所指字符串进行比较D.检查 a 和 b 所指字符串中是否有“/0“解析:解析 while 循环条件为:(*b=*a)!=“/0“,执行时先把指针 a 所指向的字符赋给指针 b 所在的内存单元,如果该字符不是结束标识“/0”,执行循环体“a+;b+;”,指针 a、b 分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针 a 所指向的字符赋给指针 b 所

37、在的内存单元,直到遇到结束标识为止,因此 A 选项正确。11.有以下程序: #includestdio.h #define N 4 void fun(int aN,int b) int i; for(i=0;iN;i+)bi=aii-aiN-1-i; main() int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i; fun(x,y); for(i=0;iN;i+) printf(“%d,“,yi); printf(“/n“); 程序的运行结果是_。(分数:1.50)A.-3,-1,1,3, B.-12,-3,0,0,C.0,1,2,3,D.

38、3,-3,-3,-3,解析:解析 本题由 fun 函数可知,b0=a00-a03=1-4=-3,b1=a11-12=6-7=-1,b2=a22-21=11-10=1,b3=a33-31=16-13=3,所以主函数中打印 y 数组元素的值为 A 选项。12.有以下程序: #ineludestdio.h #includestring.h main() char str20=“One*World“,“One*Dream!“,*p=str1; printf(“%d,“,strlen(p); printf(“%s/n“,p); 程序的运行结果是_。(分数:1.50)A.10,One*Dream! B.

39、9,One*Dream!C.9,One*WorldD.10,One*World解析:解析 p 是指向二维字符数组第二行 One*Dream!的数组指针,所以长度是 10,打印输出的也是该字符串。13.若有定义 int w35;,则以下不能正确表示该数组元素的表达式是_。(分数:1.50)A.*(s=“Olympic“; B.char s7;s=“Olympic“;C.char*s;s=“Olympic“;D.char s7;s=“Olympic“;解析:解析 字符型指针变量可以用 A 选项的赋值方法:char*s;s=“Olympic“。C 选项的写法:char*s,s=“Olympic“;是

40、错误的。字符数组可以在定义的时候初始化:char s=“Olympic“;或者char s=“Olympic“,但是不可以在定义字符数组后对数组名赋值(数组名是常量,代表数组首地址),所以 B 选项和 D 选项都是错误的。对于本例,B、D 选项中字符数组 s 的大小至少为 8,才能存放下字符串(字符串的末尾都有结束标志“/0“),同时此时 s 为字符数组的地址,是常量,不能为其赋值。15.有以下程序(注:字符 a 的 ASCII 码值为 97): #includestdio.h main() char*s=“abc“; do printf(“%d“,*s%10); +s; while(*s);

41、 程序的运行结果是_。(分数:1.50)A.789 B.abcC.7890D.979899解析:解析 因为小写字符 a、b、c 的 ASCII 码值分别为 97、98、99,而在 do while 循环语句中,每次对字符的 ASCII 码值取余数并输出,所以分别输出 7、8、9。16.设有定义“char*c;”,以下选项中能够使 c 正确指向一个字符串的是_。(分数:1.50)A.char str=“string“;c=str; B.scanf(“%s“,c);C.c=getchar();D.%c=“string“;解析:解析 选项 A 为正确用法,先将字符串存于字符数组中,然后将数组名赋给字

42、符指针(数组名代表数组首地址,定义数组时为其分配确定的地址)。C 选项错误,getchar()函数输入一个字符给字符型变量,而不是字符指针。B 选项和 D 选项有类似的错误,两个选项并无语法错误,但运行时可能会出现问题。因为在 B 选项和 D 选项中,字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符串,可能会发生无法预知的错误。17.有以下函数: int fun(char*x,char*y) int n=0; while(*x=*y) y+; n+; return n; 函数的功能是_。(分数:2.00)A.将 y

43、所指字符串赋给 x 所指存储空间B.查找 x 和 y 所指字符串中是否有“/0“C.统计 x 和 y 所指字符串中最前面连续相同的字符个数 D.统计 x 和 y 所指字符串中相同的字符个数解析:解析 本题中由循环条件可知,遇到“/0“或 x 与 y 所指的字符的值不等中的一个条件时就结束,所以功能是统计 x 和 y 所指字符串中最前面连续相同的字符个数。18.下列语句组中正确的是_。(分数:2.00)A.char*s;s=“BOOK!“;B.char*s;s=“BOOK!“; C.char s10;s=“BOOK!“;D.char s;s=“BOOK!“;解析:解析 A 选项去掉大括号就正确了

44、C 选项和 D 选项应在定义时赋初值。B 选项正确。19.设有定义语句“int(*f)(int);”则下列叙述中正确的是_。(分数:2.00)A.f 是基类型为 int 的指针变量B.f 是指向函数的指针变量,该函数具有一个 int 类型的形参 C.f 是指向 int 类型一维数组的指针变量D.f 是函数名,该函数的返回值是基类型为 int 类型的地址解析:解析 int(*f)(int);为指向函数的指针变量的定义方法,其中 f 为指向函数的指针变量,第一个int 为函数返回值类型,第二个 int 为函数的形参类型,因此 B 选项正确。20.有以下程序: #includestdio.h in

45、t add(int a,int b) return(a+b); main() int k,(*f)(),a=5,b=10; f=add; . 则以下函数调用语句错误的是_。(分数:2.00)A.k=f(a,b);B.k=add(a,h);C.k=(*f)(a,b);D.k=*f(a,b); 解析:解析 D 选项中,*f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量 k。21.下列语句中存在语法错误的是_。(分数:2.00)A.char ss620;ss1=“right?“; B.char ss20=“right?“;C.char*ss

46、6;ss1=“right?“;D.char*ss=“right?“;解析:解析 数组定义后,不可以对数组整体赋值,s 是二维数组,因 ss1是一维字符数组,即字符串,字符串赋值可以使用“strcpy(ss1,“right“);”这样的形式,而 A 选项中对二维数组中的第“1”维(相当于一个一维数组)赋值是不可以的。B 选项和 D 选项是定义时对数组初始化,这是可以的。在 C 选项中,将字符串在内存中的首地址赋给指针数组的一个元素,这是可以的。22.下列叙述中正确的是_。(分数:2.00)A.在 C 语言中,预处理命令行都以“#”开头 B.预处理命令行必须位于 C 源程序的起始位置C.#includestdio.h必须放在 C 程序的开头D.C 语言的预处理不能实现宏定义和条件编译的功能解析:解析 预处理命令是以“#”号开头的命令,它们不是 C 语言的可执行命令,这些命令应该在函数之外书写,一般在源文件的最前面书写,但不是必须在起始位置书写,所以 B、C 选项错误。C 语言的预处理能够实现宏定义

展开阅读全文
相关资源
猜你喜欢
  • AECMA PREN 3497-1993 Aerospace Series Titanium TI-P99001 Annealed Sheet and Strip Cold Rolled a Less Than or Equal to 6 mm 290 MPa Less Than or Equal to Rm Less Than or Equal to 42.pdf AECMA PREN 3497-1993 Aerospace Series Titanium TI-P99001 Annealed Sheet and Strip Cold Rolled a Less Than or Equal to 6 mm 290 MPa Less Than or Equal to Rm Less Than or Equal to 42.pdf
  • AECMA PREN 3498-1993 Aerospace Series Titanium TI-P99002 Annealed Sheet and Strip Cold Rolled a Less Than or Equal to 6 mm 390 MPa Less Than or Equal to Rm Less Than or Equal to 54.pdf AECMA PREN 3498-1993 Aerospace Series Titanium TI-P99002 Annealed Sheet and Strip Cold Rolled a Less Than or Equal to 6 mm 390 MPa Less Than or Equal to Rm Less Than or Equal to 54.pdf
  • AECMA PREN 3499-1993 Aerospace Series Titanium TI-P99003 Annealed Sheet and Strip Cold Rolled a Less Than or Equal to 6 mm 570 MPa Less Than or Equal to Rm Less Than or Equal to 73.pdf AECMA PREN 3499-1993 Aerospace Series Titanium TI-P99003 Annealed Sheet and Strip Cold Rolled a Less Than or Equal to 6 mm 570 MPa Less Than or Equal to Rm Less Than or Equal to 73.pdf
  • AECMA PREN 3500-1995 Aerospace Series Titanium Alloy TI-P11 Annealed 540 Less Than or Equal to Rm Less Than or Equal to 700 MPa Sheet and Strip a Less Than or Equal to 6 mm Edition.pdf AECMA PREN 3500-1995 Aerospace Series Titanium Alloy TI-P11 Annealed 540 Less Than or Equal to Rm Less Than or Equal to 700 MPa Sheet and Strip a Less Than or Equal to 6 mm Edition.pdf
  • AECMA PREN 3501-1995 Aerospace Series Titanium Alloy TI-P11 Solution Treated and Aged 690 Less Than or Equal to Rm or Less Than or Equal to 920 MPa Sheet and Strip a Less Than or E.pdf AECMA PREN 3501-1995 Aerospace Series Titanium Alloy TI-P11 Solution Treated and Aged 690 Less Than or Equal to Rm or Less Than or Equal to 920 MPa Sheet and Strip a Less Than or E.pdf
  • AECMA PREN 3504-1993 Aerospace Series Titanium and Titanium Alloys Circular Tubes for Fluids Close Tolerances Diameter 3 2 mm Less Than or Equal to D Less Than or Equal to 50 mm Thn.pdf AECMA PREN 3504-1993 Aerospace Series Titanium and Titanium Alloys Circular Tubes for Fluids Close Tolerances Diameter 3 2 mm Less Than or Equal to D Less Than or Equal to 50 mm Thn.pdf
  • AECMA PREN 3506-1996 Aerospace Series Hot Rolled Sheets and Plates in Heat Resisting Alloys Thickness 2 0 mm Less Than or Equal to a Less Than or Equal to 100 mm Dimensions Edition.pdf AECMA PREN 3506-1996 Aerospace Series Hot Rolled Sheets and Plates in Heat Resisting Alloys Thickness 2 0 mm Less Than or Equal to a Less Than or Equal to 100 mm Dimensions Edition.pdf
  • AECMA PREN 3507-1998 Aerospace Series Steel FE-PL1501 (30CrMo12) Air Melted Hardened and Tempered Forgings De Less Than or Equal to 100 mm 930 MPa Less Than or Equal to Rm Less Tha.pdf AECMA PREN 3507-1998 Aerospace Series Steel FE-PL1501 (30CrMo12) Air Melted Hardened and Tempered Forgings De Less Than or Equal to 100 mm 930 MPa Less Than or Equal to Rm Less Tha.pdf
  • AECMA PREN 3508-1998 Aerospace Series Steel FE-PL1501 (30CrMo12) Air Melted Hardened and Tempered Bar De Less Than or Equal to 100 mm 930 MPa Less Than or Equal to Rm Less Than or .pdf AECMA PREN 3508-1998 Aerospace Series Steel FE-PL1501 (30CrMo12) Air Melted Hardened and Tempered Bar De Less Than or Equal to 100 mm 930 MPa Less Than or Equal to Rm Less Than or .pdf
  • 相关搜索

    当前位置:首页 > 考试资料 > 职业资格

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