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

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

1、二级 C 语言笔试-421 及答案解析(总分:97.00,做题时间:90 分钟)一、选择题(总题数:40,分数:65.00)1.下面不属于软件设计原则的是A) 抽象 B) 模块化 C) 自底向上 D) 信息隐蔽(分数:2.00)A.B.C.D.2.对于循环队列,下列叙述中正确的是A) 队头指针是固定不变的B) 队头指针一定大于队尾指针C) 队头指针一定小于队尾指针D) 队头指针可以大于队尾指针,也可以小于队尾指针(分数:2.00)A.B.C.D.3.软件(程序)调试的任务是( )。A诊断和改正程序中的错误 B尽可能多地发现程序中的错误C发现并改正程序中的所有错误 D确定程序中错误的性质(分数:

2、1.00)A.B.C.D.4.下面描述中,不属于软件危机表现的是 A) 软件过程不规范 B) 软件开发生产率低 C) 软件质量难以控制 D) 软件成本不断提高(分数:2.00)A.B.C.D.5.对长度为 n 的线性表进行顺序查找,在最坏的情况下所需要的比较次数为_。A) log2n B) n/2 C) n D) n+1(分数:1.00)A.B.C.D.6.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.B.C.D.7.下面关于对象概念的描述中,错误的是A) 对象就是 C 语言中的结构体变量 B)对象代表着正在创建的系统中的一个实体C) 对象是一个状态和操作(或方法)的封

3、装体 D) 对象之间的信息传递是通过消息进行的(分数:2.00)A.B.C.D.8.关于结构化程序设计原则和方法的描述错误的是( )。A) 选用的结构只准许有一个入口和一个出口B) 复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C) 不允许使用 GOTO 语句D) 语言中所没有的控制结构,应该采用前后一致的方法来模拟(分数:1.00)A.B.C.D.9.在一棵二叉树上第 5 层的结点数最多是( )。A) 8 B) 16 C) 32 D) 15(分数:1.00)A.B.C.D.10.数据的完整性是指数的正确性、有效性和_。A) 可维护性 B) 独立性 C) 安全性 D) 相容性(分数:2.0

4、0)A.B.C.D.11.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.B.C.D.12.下列说法正确的是( )。A) 一个 C 程序可以有多个主函数B) 一个 C 语言的函数中只允许有一对花括号C) C 程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内D) 在对 C 程序进行编译时,可以发现注释行中的拼写错误(分数:2.00)A.B.C.D.13.下列标识符不是关键字的是( )。A) break B) char C) Switch D) return(分数:2.00)A.B.C.D.14.下列程序的输出结果是( )。#includestdio.hmai

5、n()int a=4;print f(“%d/n“,(a+=a-=a*a);A) -8 B) 14 C) 0 D) -24(分数:1.00)A.B.C.D.15.可在 C 程序中用作用户标识符的一组标识符是( )。 A) void define WORD B) as_b3 _123 If C) For -abc case D) 2c DO SIG(分数:1.00)A.B.C.D.16.下面 4 个选项中,均是不合法的用户标识符的选项是A) A P _0 d0 B) float la0 _A C) b-a goto in D) 123 temp int(分数:1.00)A.B.C.D.17.下列

6、叙述中正确的是( )。A) 在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式B) 实型变量中允许存放整型数C) 若 a 和 b 类型相同,在执行了赋值 a=b 后,b 中的值将放入 a 中,但 b 中的值不变D) 在 C 程序中,求余运算符“%”两边的类型相同时才能进行运算(分数:2.00)A.B.C.D.18.有以下程序,其中%u 表示按无符号整数输出main()unsigned int x=0xFFFF; /* x 的初值为十六进制数 */printf(“%u/n“,x);程序运行后的输出结果是_。(A) -1(B) 65535(C) 32767(D) 0XFFFF(分数:1.

7、00)A.B.C.D.19.有以下程序:#include stdio.hmain( )int m =12,n=34;printf( “% d% d“ ,m+ , +n);printf(“% d% d /n“ ,n + , +m); 程序运行后的输出结果是( )。A) 12353514 B) 12353513 C) 12343514 D) 12343513(分数:1.00)A.B.C.D.20.有以下程序:#includestdio.hmain()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1: b+;bre

8、ak;case 2:a+;b+;break;case 3:a+;b+;printf(“a=%d,b=%d/n“,a,b);程序的运行结果是_。A) a=1,b=0 B) a=2,b=2 C) a=1,b=1 D) a=2,b=1(分数:2.00)A.B.C.D.21.若有“double a;“,则正确的输入语句是( )。A) scanf(“%1f“,a); B) scanf(“%f“,C) scanf(“%1f“,(分数:1.00)A.B.C.D.22.下列程序的运行结果是( )。main()int a=-5,b=1,c=1;int x=0,y=2,z=0;if(c0) x=x+y;if(a=

9、0) if(b0) if(c=0) y=x-y;else if(c0) y=x-y;else z=y;printf(“%d,%d,%d/n“,x,y,z);A) 2,2,0 B) 2,2,2 C) 0,2,0 D) 2,0,2(分数:2.00)A.B.C.D.23.以下程序执行后 x 的值是main()int x,y=252,i=386,*m=y0;y-)f(y%3=0)printf(“%d“,-y);程序的运行结果是_。A) 741 B) 963 C) 852 D) 875421(分数:2.00)A.B.C.D.25.有下列程序:main()inti;for(i=1;i=40;i+)if(i

10、+ +%5=0)if(+i%8=0) printf(“%d“,i);printf(“/n“);执行后的输出结果是( )A) 5 B) 24 C) 32 D) 40(分数:2.00)A.B.C.D.26.有以下程序#include main()int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i;for(i=0;i12;i+) csi+;for(i=1;i5;i+) printf(“%d“,ci);printf(“/n“);程序的运行结果是_。(A) 1 2 3 4(B) 2 3 4 4(C) 4 3 3 2(D) 1 1 2 3(分数:2.00)A.B.C.D.27.下

11、列字符数组初始化语句中,不正确的是( )。A) charcgoodmorning; B) char,c20“goodmoming“;C) charca,b,c,d; D) charc“goodmoming“;(分数:2.00)A.B.C.D.28.若有定义:int a233;,下列选项中对 a 数组元素正确引用的是( )。A) a2!1 B) a23 C) a03 D) a12!1(分数:2.00)A.B.C.D.29.下列程序的运行结果为( )。#includestdio.hvoidabc(char*str) int a,b,i,j;for(ij0;stri!/0;i+)if(stri!a)

12、strj+strj;strj/0;void main()char Str“abcdef;abc(str);printf(“str%s“,str);A) strbcdef B) strabcdef C) stra D) strab(分数:2.00)A.B.C.D.30.下列选项中 C 语言中不合法的字符串常量的是A) “/121“ B) y C) “/n/n“ D) “ABCD/x6d/(分数:2.00)A.B.C.D.31.以下叙述中错误的是_。A) 对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输出B) 数组名代表的是数组所占存储区的首地址,其值不可改变C) 当程序执行

13、时,若数组元素的下标超出所定义的下标范围,系统将给出“下标越界”的出错信息D) 可以通过赋初值的方式确定数组元素的个数(分数:1.00)A.B.C.D.32.设变量已正确定义,则下列能正确计算 f=n!的程序段是( )。A) f=0;for(i=1;i=n;i+)f*=i;B) f=1;for(i=1;in;i+)f*=i;C) f=1;for(i=n;i1;i+)f*=i;D) f=1;for(i=n;i =2;i-)f*=i;(分数:2.00)A.B.C.D.33.对以下说明语句的正确理解是int a10=6,7,8,9,10;A) 将 5 个初值依次赋给 a1至 a5B) 将 5 个初值

14、依次赋给 a0至 a4C) 将 5 个初值依次赋给 a6至 a10D) 因为数组长度与初值的个数不相同,所以此语句不正确(分数:2.00)A.B.C.D.34.有以下程序: #includestdio.h int fun(int x,int y) if(x=y)return(x); else return(x+y)/2); main() int a=1,b=2,c=3; printf(“%d/n“,fun(2*a,fun(b,c); 程序运行后的输出结果是( )。 A) 2 B) 3 C) 4 D) 5(分数:2.00)A.B.C.D.35.下列程序的输出结果是( )。#includestdi

15、o.h#includedstring.hvoid fun(int b)static int i=0;dobi+=bi+1;while(+i2);main()int k,a5=1,3,5,4,9;fun(a);for(k=0;k5;k+)printf(“%d“,ak);A13579 B48579 C48549 D48999(分数:1.00)A.B.C.D.36.下面程序的输出是_。main()int k=11;printf(“k=%d,k=%o,k=%x/n“,kkk);A) k=11,k=12,k=11 B) k=11,k=13,k=13C) k=11,k=013,k=0xb D) k=11,

16、k=13,k=B(分数:2.00)A.B.C.D.37.C 语言库函数 fgets(str,n,fp)的功能是 _。A) 从 fp 指向的文件中读取长度 n 的字符串存入 str 旨向的内存B) 从 fp 指向的文件中读取长度不超过 n-1 的字符串存入 str 指向的内存C) 从 fb 指向的文件中读取 n 个字符串存入 str 指向的内存D) 从 str 读取至多 n 个字符到文 fp(分数:2.00)A.B.C.D.38.已知有结构体:struct skiht a;float b;)data,*p;若有 p= C) p-data.a D) p.data.a(分数:1.00)A.B.C.D

17、.39.以下程序的输出结果是#includestdio.hstruct sti int x;int *y;*p;int dt4=10,20,30,40;struct st aa4=50,printf(%s/n“,p1);(分数:2.00)填空项 1:_45.以下程序的输出结果是U /U。fun(int x,int y,int z)z=x*x+y*y;main()int a=31fun(6,3,a)printf(“%d“,a)(分数:2.00)填空项 1:_46.设有下列的程序段:char str=“Hello“;char *ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为(分

18、数:2.00)填空项 1:_47.函数 fun 的功能是计算 xn。double fun(double x,int n)int i; double y=1;for(i=1;i=n;i+) y=y*x;return y;主函数中已经正确定义变量 m,a,b 并赋值,要调用函数 fun 计算:m=a 4+b4-(a+b)3。实现这一计算的函数调用语句为U /U。(分数:2.00)填空项 1:_48.以下程序的输出结果是_。void reverse(int a,int n)int i,t;for(i=0;in/2;i+)t=ai; ai=an+1+i;an-1-i=t;main()int b10=1

19、,2,3,4,5,6,7,8,9,10;int i,s=0;reverse(b,8);for(i=6;i10;i+)s+=bi;printf(“%d/n“,s);(分数:2.00)填空项 1:_49.mystrlen 函数的功能是计算 str 所指字符串的长度,并作为函数值返回。请填空。int mystrlen(char *str)int i;for(i=0;U /U!/0;i+);return(i);(分数:2.00)填空项 1:_50.设 x 和 y 均为 int 型变量,且 x=1,y=2,则表达式 double(1+x/y)的值为U /U。(分数:2.00)填空项 1:_51.执行以下

20、程序后,输出“#”的个数是U /U。#include stdio.hmain()int i,j;for(i=1;i5;i+)for(j=2;j=i;j+) putchar(#);(分数:2.00)填空项 1:_52.以下程序的输出结果是_。 main() char *p=“ABC“,“DEF“,“GHI“,“JKL“; int i; for(i=3;i=0;i-,i-) printf(“%c“,*pi);(分数:2.00)填空项 1:_53.有以下程序 #includestdio.h typedef struct int num;double s; REC; void funl(REC *x)

21、 x-num=23;x-s=88.5; void main() REC a=16,90.0; fun1(sum = count = 0 ;for(i=0;i20;i+)scanf(“%d“,U /U);for(i=0;i20;i +)if(ai 0)count + +;sum+ =U /U;prinff( “sum = % d, count = % d / n“, sum, count );(分数:2.00)填空项 1:_二级 C 语言笔试-421 答案解析(总分:97.00,做题时间:90 分钟)一、选择题(总题数:40,分数:65.00)1.下面不属于软件设计原则的是A) 抽象 B) 模块

22、化 C) 自底向上 D) 信息隐蔽(分数:2.00)A.B.C. D.解析:解析 软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们具有抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。2.对于循环队列,下列叙述中正确的是A) 队头指针是固定不变的B) 队头指针一定大于队尾指针C) 队头指针一定小于队尾指针D) 队头指针可以大于队尾指针,也可以小于队尾指针(分数:2.00)A.B.C.D. 解析:解析 循环队列是将顺序队列首尾相连形成的,随着插入元素或删除元素的进行,其队头指针及队尾指针是在不断变化的,有时可能会出

23、现队头指针大于队尾指针的情况,也可能是队尾指针大于队头指针。3.软件(程序)调试的任务是( )。A诊断和改正程序中的错误 B尽可能多地发现程序中的错误C发现并改正程序中的所有错误 D确定程序中错误的性质(分数:1.00)A. B.C.D.解析:解析 调试的目的是发现错误或导致程序失效的错误原因,并修改程序以修正错误。调试是测试之后的活动。4.下面描述中,不属于软件危机表现的是 A) 软件过程不规范 B) 软件开发生产率低 C) 软件质量难以控制 D) 软件成本不断提高(分数:2.00)A. B.C.D.解析:解析 本题考查软件危机的表现形式。软件危机表现在软件需求的增长得不到满足,软件开发的成

24、本和进度无法控制,软件质量难以保证,软件不可维护或者维护的程度很低,软件成本不断提高,软件开发的发展赶不上硬件的发展。所以选项 A 不属于软件危机的表现。5.对长度为 n 的线性表进行顺序查找,在最坏的情况下所需要的比较次数为_。A) log2n B) n/2 C) n D) n+1(分数:1.00)A.B.C. D.解析:解析 对线性表进行顺序查找时,最差情况下的比较次数为线性表的长度 n,因此,答案 C 是正确的。6.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.B. C.D.解析:解析 对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访

25、问左、右子树时,先访问根结点,再依次访问其左、右子树。7.下面关于对象概念的描述中,错误的是A) 对象就是 C 语言中的结构体变量 B)对象代表着正在创建的系统中的一个实体C) 对象是一个状态和操作(或方法)的封装体 D) 对象之间的信息传递是通过消息进行的(分数:2.00)A. B.C.D.解析:解析 对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系,对象之间通过传递消息互相联系,从模拟现实世界中不同事物彼此之间的联系,B)、C)、D)是正确的,对象的思想广泛应用于 C+、Java 等语言中,因此 A)错误。8.关于结构化程序设计原则和方法的描述错误的是( )。A) 选用的结

26、构只准许有一个入口和一个出口B) 复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C) 不允许使用 GOTO 语句D) 语言中所没有的控制结构,应该采用前后一致的方法来模拟(分数:1.00)A.B.C. D.解析:解析限制使用 GOTO 语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用 GOTO 语句。其他三项为结构化程序设计的原则。9.在一棵二叉树上第 5 层的结点数最多是( )。A) 8 B) 16 C) 32 D) 15(分数:1.00)A.B. C.D.解析:解析 根据二叉树的性质:二叉树第 i(i1)层上至多有 2i-1个结点,得到第 5 层的结点数最多是 16。10.数

27、据的完整性是指数的正确性、有效性和_。A) 可维护性 B) 独立性 C) 安全性 D) 相容性(分数:2.00)A.B.C.D. 解析:评析 数据模型的完整性规则是始定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及其状态的变化,以保证数据的正确性、有效性和相容性。11.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.B.C.D. 解析:解析 对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右于树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。记住 3 种遍历的顺序:前序,访问根一按前序遍历左子树一按前序遍

28、历右子树:中序,按中序遍历左子树一访问根一按中序遍历右子树;后序,按后序遍历左子树呻按后序遍历右子树一访问根。12.下列说法正确的是( )。A) 一个 C 程序可以有多个主函数B) 一个 C 语言的函数中只允许有一对花括号C) C 程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内D) 在对 C 程序进行编译时,可以发现注释行中的拼写错误(分数:2.00)A.B.C. D.解析:解析 本题涉及 C 语言基本的 3 个知识点:C 语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号:C 语言的标识符是由字母、数字、下画线组成的,可以是大写字母,而且标识符区分字母的大小

29、写;C 程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释行中的错误。13.下列标识符不是关键字的是( )。A) break B) char C) Switch D) return(分数:2.00)A.B.C. D.解析:解析 break、char、return、switch 都是 C 语言中的关键字,Switch 不是。因为 C 语言区分字母的大小写。14.下列程序的输出结果是( )。#includestdio.hmain()int a=4;print f(“%d/n“,(a+=a-=a*a);A) -8 B) 14 C) 0 D

30、) -24(分数:1.00)A.B.C.D. 解析:解析 表达式 a+=a-=a*a 看起来复杂,其实将它分成两个表达式来计算就简单了:第一个表达式(a-=a*a)=(a-a-a*a=-2):第二个表达式(a+=a-=a*a)=(a=a+a=-24)。15.可在 C 程序中用作用户标识符的一组标识符是( )。 A) void define WORD B) as_b3 _123 If C) For -abc case D) 2c DO SIG(分数:1.00)A.B. C.D.解析:解析 C 语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线,关键字不能用作用户标识

31、符。16.下面 4 个选项中,均是不合法的用户标识符的选项是A) A P _0 d0 B) float la0 _A C) b-a goto in D) 123 temp int(分数:1.00)A.B.C. D.解析:解析 C 语言规定的标识符只能由字母、数字和下画线 3 种字符组成,第一个字符必须为字母或下画线,并且不能使用 C 语言中的关键字作为标识符;对于选项 C,goto 和 int 是关键字,b-a 中的“-”不是组成标识符的 3 种字符之一;对于选项 D,int 是关键字。所以,均是不合法用户标识符的选项是C。17.下列叙述中正确的是( )。A) 在赋值表达式中,赋值号的左边既可

32、以是变量,也可以是任意表达式B) 实型变量中允许存放整型数C) 若 a 和 b 类型相同,在执行了赋值 a=b 后,b 中的值将放入 a 中,但 b 中的值不变D) 在 C 程序中,求余运算符“%”两边的类型相同时才能进行运算(分数:2.00)A.B. C.D.解析:解析 选项 A),在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式。在判断选项 B)时首先应该建立这样的概念,整型变量中只能存放整型数,实型变量中能存放实型数,也能存放整型数。选项 C),执行表达式 a=b 后,将把变量 b 存储单元中的值赋给变量a,从而覆盖 a 中原有的值,但 b 中原有的

33、值并不改变。选项 D),在 C 程序中,求余运算符“%”两边的类型均为整型数据。18.有以下程序,其中%u 表示按无符号整数输出main()unsigned int x=0xFFFF; /* x 的初值为十六进制数 */printf(“%u/n“,x);程序运行后的输出结果是_。(A) -1(B) 65535(C) 32767(D) 0XFFFF(分数:1.00)A.B. C.D.解析:19.有以下程序:#include stdio.hmain( )int m =12,n=34;printf( “% d% d“ ,m+ , +n);printf(“% d% d /n“ ,n + , +m);

34、程序运行后的输出结果是( )。A) 12353514 B) 12353513 C) 12343514 D) 12343513(分数:1.00)A. B.C.D.解析:解析 程序执行 printf(“%d%d“,m+,+n);后,输出的是 m 和 n+1 的值 1235,然后 m+1=13,再执行 printf(“%d%d/n“,n+,+m);输出 n 和 m+1 的值 3514,之后 n+1=36。这里要注意的是 m+和+m的区别:m+是先输出 m 的值,再执行 m+;+m 是先执行 +m,再输出 m 的值。20.有以下程序:#includestdio.hmain()int x=1,y=0,a

35、=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1: b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(“a=%d,b=%d/n“,a,b);程序的运行结果是_。A) a=1,b=0 B) a=2,b=2 C) a=1,b=1 D) a=2,b=1(分数:2.00)A.B.C.D. 解析:解析 本题考查 switch 语句。x=1,因此第一个 switch 语句是执行 case 1:后面的语句,进入嵌入的 switch 语句;y=0,执行 case 0:后面的语句,得 a=1,遇到 brea

36、k 语句退出嵌入的 switch 语句。由于第一个 switch 语句的 case 1:后面没有 break 语句,因此继续执行 case 2:后面的语句,得a=2,b=1,遇到 break 语句退出第一个 switch 语句。结果为 a=2,b=1。21.若有“double a;“,则正确的输入语句是( )。A) scanf(“%1f“,a); B) scanf(“%f“,C) scanf(“%1f“,(分数:1.00)A.B.C.D. 解析:解析 函数 scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的

37、变量的地址。本题中定义变量 a 为双精度型变量,双精度变量的格式符为“1e”;变量的地址用取地址符“int x=0,y=2,z=0;if(c0) x=x+y;if(a=0) if(b0) if(c=0) y=x-y;else if(c0) y=x-y;else z=y;printf(“%d,%d,%d/n“,x,y,z);A) 2,2,0 B) 2,2,2 C) 0,2,0 D) 2,0,2(分数:2.00)A. B.C.D.解析:解析 本题考查 if else 语句的使用。 先判断第 1 个 if 语句,因为 c=10,所以x=x+y=0+2=2。第 1 个 if 语句,因为 a=-50,所

38、以进入下列的复合语句。经判断发现,复合语句中第 2个汀语句的条件均不满足,不执行任何语句退出,在这个过程中 y 和 x 的值没有发生变化。23.以下程序执行后 x 的值是main()int x,y=252,i=386,*m=y0;y-)f(y%3=0)printf(“%d“,-y);程序的运行结果是_。A) 741 B) 963 C) 852 D) 875421(分数:2.00)A.B.C. D.解析:解析 本题考查的重点是 printf()函数和 for 循环的执行方式。在循环体内,若 y 为的倍数,则执行 print(“%d”,-y)语句。所以,当 y 为 9 时,输出-y 为 8;当 y

39、 为 6 时,输出-y 为 5;当 y 为3 时,输出-y 为 2;当 y 为零时,for 循环结束。因此,选项 C 是正确的。25.有下列程序:main()inti;for(i=1;i=40;i+)if(i+ +%5=0)if(+i%8=0) printf(“%d“,i);printf(“/n“);执行后的输出结果是( )A) 5 B) 24 C) 32 D) 40(分数:2.00)A.B.C. D.解析:解析 在 for 循环体中,首先判断自变量 i 能否被 5 整除,然后再自加两次,最后判断 i 能否被8 整除。当 for 循环执行到第 30 次时,i 的值为 30 能被 5 整除,然后

40、 i 经过两次自加 1 运算,值变为32,能被 8 整除,故执行“printf(“%d“,i);语句,即输出 32。本题的答案为选项 C)26.有以下程序#include main()int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i;for(i=0;i12;i+) csi+;for(i=1;i5;i+) printf(“%d“,ci);printf(“/n“);程序的运行结果是_。(A) 1 2 3 4(B) 2 3 4 4(C) 4 3 3 2(D) 1 1 2 3(分数:2.00)A.B.C. D.解析:27.下列字符数组初始化语句中,不正确的是( )。A) c

41、harcgoodmorning; B) char,c20“goodmoming“;C) charca,b,c,d; D) charc“goodmoming“;(分数:2.00)A. B.C.D.解析:解析 本题考查两个概念:用单引号括起来的一个字符常量只能存放一个字符;C 语言中没有字符串变量,只能用字符数组来存储字符串。选项 A)中一个单引号内放了若干个字符是错误的;选项 B)和选项 D)中将一个字符串赋值给一个字符数组是允许的。28.若有定义:int a233;,下列选项中对 a 数组元素正确引用的是( )。A) a2!1 B) a23 C) a03 D) a12!1(分数:2.00)A.

42、B.C.D. 解析:解析 数组 a23包括元素 a00,a01,a02,a10,a11,a12,只有选项 D)是正确的引用,即引用元素 a00,其他选项的引用均是下标越界。29.下列程序的运行结果为( )。#includestdio.hvoidabc(char*str) int a,b,i,j;for(ij0;stri!/0;i+)if(stri!a)strj+strj;strj/0;void main()char Str“abcdef;abc(str);printf(“str%s“,str);A) strbcdef B) strabcdef C) stra D) strab(分数:2.00)

43、A. B.C.D.解析:解析 本题考查函数调用时的参数传递。通过函数 abc 的执行,将字符串中的字母 a 去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。30.下列选项中 C 语言中不合法的字符串常量的是A) “/121“ B) y C) “/n/n“ D) “ABCD/x6d/(分数:2.00)A.B. C.D.解析:解析 字符串常量是由双引号括起来的一串字符,其中的双引号不可缺少。由此可知,选项 A)、C)、D)都是合法的字符串常量,而选 B)是一个字符常量。31.以下叙述中错误的是_。A) 对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输出B) 数组名

44、代表的是数组所占存储区的首地址,其值不可改变C) 当程序执行时,若数组元素的下标超出所定义的下标范围,系统将给出“下标越界”的出错信息D) 可以通过赋初值的方式确定数组元素的个数(分数:1.00)A.B.C. D.解析:解析 本题考查数组的基本概念。在 C 语言中,除了字符数组,一个数组不能通过数组名对数组进行整体输入或输出,所以选项 A 正确。数组名中存放的是一个地址常量,它代表整个数组的首地址,其值不可改变,所以选项 B 正确。C 语言程序在运行过程中,系统不会自动检验数组元素的下标是否越界,所以选项 C 错误。C 语言规定可以通过赋初始值来定义数组的大小,这时数组说明符的一对方括号中可以

45、不指定数组的大小,所以选项 D 正确。所以选项 C 符合题意。32.设变量已正确定义,则下列能正确计算 f=n!的程序段是( )。A) f=0;for(i=1;i=n;i+)f*=i;B) f=1;for(i=1;in;i+)f*=i;C) f=1;for(i=n;i1;i+)f*=i;D) f=1;for(i=n;i =2;i-)f*=i;(分数:2.00)A.B.C.D. 解析:解析 要正确计算函数 f=n!,由 n!的数学定义可知 n!=n*(n-1)*(n-2)*1。在选项 A 中,由于 f 的初值为 0,在 for 循环语句中,f 依次乘以 1,2,3, n。最后计算 f=n!=0,

46、所以选项 A 不正确。在选项 B 中,f 的初值为 1,在 for 循环语句中,f 依次乘以 1,2, 3,(n-1)。最后计算得到 f=(n-1)!,所以选项 B 不正确。在选项 C)中,f 的初值为 1,在 for 循环语句中, f 依次乘以 n,n+1,n+2,,所以选项 C)不正确。在选项 D)中,f 的初值为 1,在 for 循环语句中,f 依次乘以 n,n-1,n-2,2。最后计算 f=n!,所以选项 D)正确。33.对以下说明语句的正确理解是int a10=6,7,8,9,10;A) 将 5 个初值依次赋给 a1至 a5B) 将 5 个初值依次赋给 a0至 a4C) 将 5 个初值依次赋给 a6至 a10D) 因为数组长度与初值的个数不相同,所以此语句不正确(分数:2.00)A.B. C.D.解析:解析 本题中,表达式将 5 个初值赋给 a0至 a4,后面的部分,将自动被补零。34.有以下程序: #includestdio.h int fun(int x,int y) if(x=y)return(x); else return(x+y)/2); main() int a=1,b=2,c=3; printf(“%d/n“,fun(2*a,fun(b,c); 程序运行后的输出结果是( )。 A) 2 B) 3 C) 4 D) 5(分数:2.00)A. B.

展开阅读全文
相关资源
猜你喜欢
相关搜索

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

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