【计算机类职业资格】全国计算机等级考试二级C语言真题2009年3月及答案解析.doc

上传人:赵齐羽 文档编号:1329720 上传时间:2019-10-17 格式:DOC 页数:19 大小:102.50KB
下载 相关 举报
【计算机类职业资格】全国计算机等级考试二级C语言真题2009年3月及答案解析.doc_第1页
第1页 / 共19页
【计算机类职业资格】全国计算机等级考试二级C语言真题2009年3月及答案解析.doc_第2页
第2页 / 共19页
【计算机类职业资格】全国计算机等级考试二级C语言真题2009年3月及答案解析.doc_第3页
第3页 / 共19页
【计算机类职业资格】全国计算机等级考试二级C语言真题2009年3月及答案解析.doc_第4页
第4页 / 共19页
【计算机类职业资格】全国计算机等级考试二级C语言真题2009年3月及答案解析.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、全国计算机等级考试二级 C 语言真题 2009 年 3 月及答案解析(总分:110.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:80.00)1.下列叙述中正确的是_。(分数:2.00)A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构2.支持子程序调用的数据结构是_。(分数:2.00)A.栈B.树C.队列D.二叉树3.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是_。(分数:2.00)A.10B.8C.6D.44.下列排序方法中,最坏情况下比较次数最少的是_。(分数

2、:2.00)A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序5.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。(分数:2.00)A.编译程序B.操作系统C.教务管理系统D.汇编程序6.下面叙述中错误的是_。(分数:2.00)A.软件测试的目的是发现错误并改正错误B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测试的随意性7.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是_。(分数:2.00)A.提高耦合性降低内聚性有利于提高模块的独立性B.降低耦合性提高内

3、聚性有利于提高模块的独立性C.耦合性是指个模块内部各个元素间彼此结合的紧密程度D.内聚性是指模块间互相连接的紧密程度8.数据库应用系统中的核心问题是_。(分数:2.00)A.数据库设计B.数据库系统设计C.数据库维护D.数据库管理员培训9.有两个关系 R,S 如下: (分数:2.00)A.选择B.投影C.插入D.连接10.将 E-R 图转换为关系模式时,实体和联系都可以表示为_。(分数:2.00)A.属性B.键C.关系D.域11.以下选项中合法的标识符是_。(分数:2.00)A.1_1B.11C._11D.1_ _12.若函数中有定义语句:int k;,则_。(分数:2.00)A.系统将自动绐

4、 K 赋初值 0B.这时 K 中的值无定义C.系统将自动绐 K 赋初值-1D.这时 K 中无任何值13.以下选项中,能用作数据常量的是_。(分数:2.00)A.0115B.0118C.1.5e1.5D.115L14.设有定义:int x=2;,以下表达式中,值不为 6 的是_。(分数:2.00)A.x*=x+1B.x+,2*xC.x*=(1+D.2*x,x+=215.程序段:int x=12;doub1e y=3.141593;printf(“%d%8.6f“x,y);的输出结果是_。(分数:2.00)A.123.141593B.12 3.141593C.12,3.141593D.123,14

5、1593016.若有定义语句:doub1e x,y,*px,*py;执行了 px=py=之后,正确的输入语句是_。(分数:2.00)A.scanf(“%f%f“B.scanf(“%f%f“C.scanf(“%1f%lf“,px,;D.scanf(“%lf%lf“,x,;17.以下是 if 语句的基本形式: if(表达式) 语句 其中“表达式”_。(分数:2.00)A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式18.有以下程序 #include stdio.h main() int x; scanf(“%d“, if(x=3); else if

6、(x!=1O) printf(“%d/n“,x); 程序运行时,输入的值在_范围才会有输出结果。(分数:2.00)A.不等于 10 的整数B.大于 3 且不等 10 的整数C.大于 3 或等于 10 的整数D.小于 3 的整数19.有以下程序 #include stdio.h main() int a=1,b=2,c=3,d=0; if(a1 else printf(%d,%d,%d/n“,a,b,c); else printf(“%d,%d,%o/n“,a,b,c); 程序运行后的输出结果是_。(分数:2.00)A.1,2,3B.1,3,2C.1,3,3D.3,2,120.以下程序段中的变量

7、已正确定义 for(=0;i4;i+,i+) for(k=1;k3;k+);printf(“*“) 程序段的输出结果是_。(分数:2.00)A.*B.*C.*D.*21.有以下程序 #inc1udestdio.h main() char*s=“ABC“; do printf(“%d“,*s%10); s+; while(*s); 注意字母 A 的 ASCII 码值为 65。程序运行后的输出结果是_。(分数:2.00)A.5670B.656667C.567D.ABC22.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是_。(分数:2.00)A.n=0;while(ch

8、getchar()!=/n)n+;B.n=0;while(getchar()!=/n)n+;C.for(n=0;getchar()!=/n;n+);D.n=0;for(ch=getchar();ch!=/n;n+);23.有以下程序 #includesldio.h main() int a1,a2; char c1,c2; scanf(“%d%c%d,%c“, printf(“%d,%c,%d,%c,a1,c1,a2,c2); 若想通过键盘输入,使得a1 的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是(以下代表空格,CR代表回车)_.(分数:2.0

9、0)A.12a34bCRB.12a34bCRC.12a34bCRD.12a34bCR24.有以下程序 #inc1udestdio.h int f(int x,int y) return(y-x)*x);) main() int a=3,b=4,c=5,d; d=f(f(a,B) ,f(a,C); printf(“%d/n“,D); 程序运行后的输出结果是_。(分数:2.00)A.10B.9C.8D.725.有以下程序 #inc1udestdio.h void fun(char*s) while(*s) if(*s%20) printf(“%c“,*s); s+ main() char a=“g

10、ood“; fun(A) ; prntf(“n/“); 注意:字母 a 的 ASCII 码值为 97,程序运行后的输出结果是_。(分数:2.00)A.dB.goC.godD.good26.有以下程序 #includestdio.h void fun(int*a,int*B) int*c; c=a;a=b;b=c; main() int x=3, y=5,*p= fun(p,q); printf(“%d,%d,“,*p,*q); fun( printf(“ %d,%d/n“,*p,*q); 程序运行后的输出结果是_。(分数:2.00)A.3,5,5,3B.3,5,3,5C.5,3,3,5D.5,

11、3,5,327.有以下程序 #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;) 程序运行后的输出结果是_。(分数:2.00)A.1,3B.2,3C.1,4D.1,228.以下函数按每珩 8 个输出数组中的数据 void fun( iht*w, int n) inti; for(i=0;in,i+) _ printf(“%d“,wi); printf(“/n“); 下划线处应填入的语句是_。(分数:2

12、.00)A.if(i/80)printf(“/;B.if(i/8=0)continue;C.if(i%8=0)printf(“/n“);D.if(i%8=0)continue;29.若有以下定义 intx10,*pt=x; 则对 x 数组元素的正确引用是_。(分数:2.00)A.*int i=O;,以下不能将行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是_。(分数:2.00)A.gets(;B.white(si+=getchar()!=/n);s=/0;C.scanf(“%s“,;D.d0scanf(“%c“,&;while(si+!=/n;s=/0;31.有以下程序 #i

13、ncludestdio.h main() char*a=“abcd“,“ef“,“gh“,“ijk“; int i; for(i=0;i4;i+) printf(“%c“,*ai); 程序运行后的输出结果是_。(分数:2.00)A.ageiB.dfhkC.abcdD.abcdefghijk32.以下选项中正确的语句组是_。(分数:2.00)A.chars;s=“BOOK!“;B.char*s;s=“BOOK!“;C.chars10;s=“BOOK!“;D.char*s;S=“BOOK!“;33.有以下程序 #includestdio.h int fun(int x;int y) if(xy)r

14、eurn(x); else return(x+y)/2); main() int a=4,b=5,c=6; printf(“%d/n“,fun(2*a,fun(b,c); 程序运行后的输出结果是_。(分数:2.00)A.3B.6C.8D.1234.设函数中有整型变量 n,为保证其在未赋初值的情况下初值为 0,应选择的存储类别是_。(分数:2.00)A.autoB.registerC.staticD.auto 或 register35.有以下程序 #includestdio.h intt b=2; int fun(int*k) b=*k+b;return(b); main() int a10=1

15、,2,3,4,5,6,7,8,i; for(i=2;i4;i+) b=fun( printf(“%d“,b); print(“/n“); 程序运行后的输出结果是_。(分数:2.00)A.10 12B.8 10C.10 28D.10 1636.有以下程序 #includestdio.h #define PT3.5; #define S(x)PT*x*x; main() inta=1,b2; printf(“%4.1f/n“,S(a+b); 程序运行后的输出结果是_。(分数:2.00)A.14.0B.31.5C.7.5D.程序有错无输出结果37.有以下程序 #includestdio.h stru

16、ct ord int x,y; dt2=1,2,3,4; mare() struct ord*p=dt; printf(“%d,“,+p-x); printf(“%d/n“,+p-y); 程序的运行结果是_。(分数:2.00)A.1,2B.2,3C.3,4D.4,138.设有宏定义:#define IsDIV(k,n) (k%n=1)?1:0)且变量 m 已正确定义并赋值,则宏调用: IsDIV(m,5) t=(a2)|b;printf(“%d/n“,t); 程序运行后的输出结果是_。(分数:2.00)A.21B.11C.6D.140.有以下程序 #includestdio.h main()

17、FILE*f; f=fopen(“filea.txt“,“w“); fprintf(f,“abc“) fclose(f); (分数:2.00)A.B.C.D.二、B填空题/B(总题数:15,分数:30.00)41.假设用个长度为 50 的数组(数组元素的下标从 0 至到 49)作为栈的存储空间,栈底指针 bottom 指向栈底元素,栈顶揩针 top 指向栈顶元素,如果 bottomn=49,top=30(数组下标),则栈中具有U 【1】 /U个元素。(分数:2.00)填空项 1:_42.软件 测试可分为白盒测试和黑盒测试。基本路径测试属于U 【2】 /U测试。(分数:2.00)填空项 1:_4

18、3.符合结构化原则的三种基本控制结构是:选择结构、循环结构和U 【3】 /U。(分数:2.00)填空项 1:_44.数据库系统的核心是U 【4】 /U。(分数:2.00)填空项 1:_45.在 E-R 图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是U 【5】 /U框。(分数:2.00)填空项 1:_46.表达式(int)(double)(5/2)+2.5)的值是U 【6】 /U(分数:2.00)填空项 1:_47.若变量 x、y 已定义为 int 类型且 x 的值为 99,y 的值为 9,请将输出语 printf(U 【7】 /U,x/y);补充完整,使其输出的计算机结果形式为:x

19、/y=11。(分数:2.00)填空项 1:_48.有以下程序 #includestdio.h main() char c1,c2; scanf(“%c“,*c1); while(c165|c190) scanf(“%c“, c2=c1+32; printf(“%c,%c/n“,c1,c2); 程序运行输入 6 回车后,自否输出结果、结束运行(请回答能或不能)U 【8】 /U。(分数:2.00)填空项 1:_49.以下程序运行后的输出结果是U 【9】 /U。 #includestdio.h main() int k=1,s=0; do if(k%2)!=0) continue; s+=k; k+

20、; while(k10); printf(“s+%d/n“,s); (分数:2.00)填空项 1:_50.下列程序运行时,若输入 labcedf2df回车输出结果为U 【10】 /U。 #includestdio.h main() char a=0,ch; while(ch=getchar()!=/n) if(a%2!=0 a+;prtchar(ch); printf(“/n“); (分数:2.00)填空项 1:_51.有以下程序,程序执行后,输出结果是U 【11】 /U #includestdio.h void fun(int*A) a0=a1; main() int a10=10,9,8,

21、7,6,5,4,3,2,1,i; for(i=2;i1=0;i-) fun( for(i=0;i10;i+) printf(“%d,ai); printf(“/n“); (分数:2.00)填空项 1:_52.请将以下程序中的函数声明语补充完整。 #includestdio.h intU 【12】 /U main() int x,y,(*p)(); sccanf(“%d%d“, p=max; printf(%d/n“,(*p)(x,y); int max(int a,int b) return(ab?a:b);(分数:2.00)填空项 1:_53.以下程序用来判断指定文件是否能正常打开,请填空。

22、 #includestdio.h main() FILE*fp; if(fp=fopen(“test.txt“,“r“)U 【13】 /U) printf(“未能打开文件!/n“); else printf(“文件打开成功!/n“); (分数:2.00)填空项 1:_54.下列程序的运行结果为U 【14】 /U。 #includestdio.h #includestring.h int a; char b10; double c; ; void f (struct A *t); main() struct A a=1001,“ZhangDa“,1098.0; f( printf(“%d,%s,

23、%6.lf/n“,a.a,a.b,a.C); void f(struct A*t) strcpy(t-b, “ChangRong“);(分数:2.00)填空项 1:_55.以下程序把三个 NODEIYPE 型的变量链接成个简单的链表,并在 while 循环中输出链表结点数据域中的数据。请填空。 #includestdio.h struct node int data;struct node*next;); typedef struct node NODETYPE; main() NODETYPEa,b,c,*h,*p; a.data=10;b.data=20;c.data=30;h= anex

24、t=b.next=c,next=/0; p=h; while(p)printf(“%d,“,p-data):U 【15】 /U; printf(“/n“); (分数:2.00)填空项 1:_全国计算机等级考试二级 C 语言真题 2009 年 3 月答案解析(总分:110.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:80.00)1.下列叙述中正确的是_。(分数:2.00)A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 解析:知识点 线性表及其顺序存储结构、栈和队列的特点、线性链表

25、的概念 评析 栈是种特殊的线性表,这种线性表只能在固定的端进行插入和删除操作,允许插入和删除的端称为栈顶,另端称为栈底。个新元素只能从栈顶一端进入,删除时,只能删除栈项的元素,即刚刚被插入的元素。所以栈又称“后进先出”表,所以选项 A 是错误的。队列可看作是插入在端进行,删除在另端进行的线性表,允许插入的端称为队尾,允许删除的端称为队头。在队列中,只能删除队头元素,队列的最后个元素定是最新入队的元素。因此队列又称“先进先出”表,所以选项 B 是错误的,循环队队列是将队列存储空间的最后个位置绕到第个位置,形成逻辑上的环状空间,供队列循环使用。它的逻辑结构仍然是线性结构,所以选项 C 是错误的。有

26、序线性表既可以采用顺序存储结构,也可以采用链式存储结构,所以选项 D 是正确的。2.支持子程序调用的数据结构是_。(分数:2.00)A.栈B.树 C.队列D.二叉树解析:知识点 树、二叉树的结构特点 评析 子程序调用是种层次关系,子程序调用功能模块,且调用功能模块的个数也不确定,可以是个,也可以是多个。选项 A、C 中元素之间是种前后件关系,前后元素之间没有层次之分,每个结点有个前件也只有w 个后件。二叉树是一种很有用的非线性结构,它不同于树形结构,具有以下两个特点:1)非空二叉树只有一个根结点;2)每一个结点最多有两棵子树,且分别称为该点的左子树与右子树。所以选项 D 规定每个结点只能有两个

27、后件。在子程序调用中,调用的功能模块可以是多个,可以调用超过两个功能模块。所以选项 A、C、D 均不正确。3.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是_。(分数:2.00)A.10B.8C.6 D.4解析:知识点 二叉树的基本性质 评析 在任意一棵二叉树中,度为 0 的结点(即子叶结点)总比度为 2 的结点多一个。本题中度为 2 的结点数为 5,故叶子结点数为 5+16 个。4.下列排序方法中,最坏情况下比较次数最少的是_。(分数:2.00)A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序 解析:知识点 排序技术评析 (1)冒泡排序法:是种最简单的交换类排法,它是通

28、过相邻数据元素的交换逐步将线性表变成有序。假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 n/2 遍的从前往后的扫描和 n/2 遍的从后往前的扫描,需要比较的次数为 n(n-1)/2 次。 (2)直接插入排序法:在直接插入排序法中,每次比较后最多移掉个逆序,因此,选种排序方法的效率与冒泡排序法相同。在最坏情况下,直接插入排序需要 n(n-1)/2 次比较。 (3)简单选择排序法:对于长度为 n 的新台阶列。选择排序需要扫描 n-1 遍,每遍扫描均从剩下的子表中选出最小的元素,然后将该最小的元素与子表中的第个元素进行交换。简单选择选择排序法在最坏情况下需要比较 n(n-1)/2 次。

29、(4)堆排序法:堆排序的方法为:首先将个无序序列建成。然后将堆顶元素(序列中的最大项)与堆中最后个元素交换(最大项应该在序列的最后)。在最坏情况下,堆排序需要比较的次数为 O(nlog2n)。假设线性表的长度为 16,那么冒泡排序、直接插入排序、简单选择排序都需要比较 120 次,而堆排序需要比较 64 次。5.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。(分数:2.00)A.编译程序B.操作系统C.教务管理系统 D.汇编程序解析:知识点 常见软件的种类及含义 评析 软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定

30、领域的应用而开发的软件。例如,事务处理软件,工程与科学计算软件,实时处理软件,嵌入式软件,人工智能软件等应用性质不同的软件。因此选项 C 教务管理系统属于应用软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件,如操作系统,编译程序,汇编程序,网络软件,数据库管理系统等。因此选项 A、B、D 都属于系统软件。6.下面叙述中错误的是_。(分数:2.00)A.软件测试的目的是发现错误并改正错误 B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测试的随意性解析:知识点 软件测试与调试的目的

31、评析 1983 年 IEEE 将软件测试定义为:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。因此选项 A 的叙述是错误的。软件测试的基本准则为:(1)所有测试都应追溯到需求。(2)严格执行测试计划,排除测试的随意性。 (3)充分注意测试中的群集现象。(4)程序员应避免检查自己的程序。(5)穷举测试不可能 。(6)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。因此选项 D 正确。在对程序进行了成功的测试之后将进入程序调试(通常称 Debug,即排错)。因此选项 C正确。程序调试的任务是诊断和改正程序中

32、的错误。程序调试的基本步骤: (1)错误定位。(2)修改设计和代码,以排除错误。 (3)进行回归测试,防止引进新的错误。因此选项 B 是正确的。7.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是_。(分数:2.00)A.提高耦合性降低内聚性有利于提高模块的独立性B.降低耦合性提高内聚性有利于提高模块的独立性 C.耦合性是指个模块内部各个元素间彼此结合的紧密程度D.内聚性是指模块间互相连接的紧密程度解析:知识点 软件设计的基本原理 评析 (1)内聚性:内聚性是个模块内部各个元素间彼此结合的紧密程度的度量。(2)耦合性;耦合性是模块间互相连接的紧密程度的度量。因此选项 c、D 是错

33、误的。在程序结构中,各模块的内聚性越强,则耦合性越弱。般较优秀的软件设计,应尽量做到内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,因此选项 A 是错误的;应该降低耦合性提高内聚性,所以选项 B 是正确的。8.数据库应用系统中的核心问题是_。(分数:2.00)A.数据库设计 B.数据库系统设计C.数据库维护D.数据库管理员培训解析:知识点 数据库设计与管理 评析 数据库应用系统是数据库系统再加上应用软件及应用界面这三者所组成,具体包括:数据库、数据库管理系统、数据库管理员、硬件平台、软件平台、应用软件、应用界面。在数据库应用系统中的个核心问题就是设计个能满足用

34、户要求,性能良好的数据库,这就是数据库设计。所以选项 A 是正确的。9.有两个关系 R,S 如下: (分数:2.00)A.选择B.投影 C.插入D.连接解析:知识点 专门的关系运算的特点 评析 专门的关系运算包括:选择、投影和连接。 (1)选择;从关系中找出满足给定条件的元组的操作称为选择,选择是从行的角度进行的运算,即从水平方向抽取记录。 (2)投影:从关系模式中指定若干个属性组成新的关系。投影是从列的角度进行的运算,相当于对关系进行垂直分解。 (3)连接:连接是关系的横向结合。连接运算将两个关系模式拼接成个更宽的关系模式,生成的新关系中包含满足连接条件的元组。连接过程是通过连接条件来控制的

35、,连接条件中将出现两个表中的公共属性名,或者具有相同语义、可比的属性。选择和投影运算的操作对象只是个表,相当于对个二维表进行切割。连接运算需要两个表操作为操作对象。由图可知关系 R 通过运算得到关系 S,关系 S 与关系 R 相比,记录的条数没有发生变化,属性的个数发生了变化。因此所使用的运算应该是投影。选项 C 插入运算会增加记录的条数,所以选项 B 是正确的。10.将 E-R 图转换为关系模式时,实体和联系都可以表示为_。(分数:2.00)A.属性B.键C.关系 D.域解析:知识点 数据库的逻辑设计 评析 将 E-R 图转换为关系横式时,实体和联系都可以表示成关系,E-R 图中属性也可以转

36、换成关系的属性。实体集也可以转换成关系。11.以下选项中合法的标识符是_。(分数:2.00)A.1_1B.11C._11 D.1_ _解析:评析 C 语言中合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第个字符必须为字母或下划线。所以选项 A、B 和 D 都是错误的。12.若函数中有定义语句:int k;,则_。(分数:2.00)A.系统将自动绐 K 赋初值 0B.这时 K 中的值无定义 C.系统将自动绐 K 赋初值-1D.这时 K 中无任何值解析:评析 基本型的整型变量用类型名关键字 int 进行定义,当定义时,编译程序仅为 K 开辟存储单元,而没有在存储单元中存放任何初值

37、,此时变量中的值是无意义的,称变量值“无定义”。13.以下选项中,能用作数据常量的是_。(分数:2.00)A.0115B.0118C.1.5e1.5D.115L 解析:评析 在 C 语言中,有整型常量、实型常量、字符常量和字符串常量等类型。整型常量和实型常量又称数值型常量。基本整型常量只能用数字表示,不带小数点,例如 12、-1 和 0 等,在 VC6.0 中可以在整型常量的后面加个字母 l(L 的小写)或 L;实型常量必须用带小数点的数表示,例如 3.14159、-2.71828、0.0 等;选项 A 中字母 o 不符合要求,选顶 B 中超出八进制的范围,选项 C 中 e 后面的不为整数,因

38、此选顶 D 是正确的。14.设有定义:int x=2;,以下表达式中,值不为 6 的是_。(分数:2.00)A.x*=x+1B.x+,2*xC.x*=(1+D.2*x,x+=2 解析:评析 选项 D 中,2*x 表达式的结果为 4,x+=2 的结果为 4,由于 2*x 时 x 的值没有改变,所以最终结果不等于 6,因此选项 D 是错误的。15.程序段:int x=12;doub1e y=3.141593;printf(“%d%8.6f“x,y);的输出结果是_。(分数:2.00)A.123.141593 B.12 3.141593C.12,3.141593D.123,1415930解析:评析

39、在 printf 函数常用的格式说明中,每个格式说明都必须用“%”开头,以个格式字符作为结束,在此之间可以根据需要插入“宽度说明”、左对齐符号“-”、前导零符号“0”等。本题中用到了 d 和 f,d 代表输出符号的十进制整型数,f 代表以带小数点的数学形式输出浮点数(单精度和双精度数)。对于 float 和 double 类型的实数,可以用“n1.n2”的形式来指定输出宽度(n1 和 n2 分别代表个整常数),其中 n1 指定输出数据的宽度(包括小数点),n2 指定小数点后小数位的位数,由于输出格式是以紧凑格式输出,因此选项 A 是正确的。16.若有定义语句:doub1e x,y,*px,*p

40、y;执行了 px=py=之后,正确的输入语句是_。(分数:2.00)A.scanf(“%f%f“B.scanf(“%f%f“C.scanf(“%1f%lf“,px,; D.scanf(“%lf%lf“,x,;解析:评析 scanf 函数的般调用形式为: scanf(格式控制输入项 1,输入项 2,) 选项 B 中, scanf(“%d“, if(x=3); else if(x!=1O) printf(“%d/n“,x); 程序运行时,输入的值在_范围才会有输出结果。(分数:2.00)A.不等于 10 的整数B.大于 3 且不等 10 的整数 C.大于 3 或等于 10 的整数D.小于 3 的整

41、数解析:评析 本题考查的是 if-else 语句的执行过程当条件表达式 x=3 时,由于 if 语句末尾直接是分号,没有语句,因此没有语句执行;否则,即当条件表达式 x3 时转向 else 语句,如果 x!=10 执行printf 语句,因此输入的 x 的范围应该是大于 3 且不等于 10 的整数。19.有以下程序 #include stdio.h main() int a=1,b=2,c=3,d=0; if(a1 else printf(%d,%d,%d/n“,a,b,c); else printf(“%d,%d,%o/n“,a,b,c); 程序运行后的输出结果是_。(分数:2.00)A.1

42、,2,3B.1,3,2C.1,3,3 D.3,2,1解析:评析 本题主要考查的是自加,自减运算符以及逻辑运算符的应用,需要注意“i4;i+,i+) for(k=1;k3;k+);printf(“*“) 程序段的输出结果是_。(分数:2.00)A.*B.*C.*D.* 解析:评析 本题考查的是 for 循环语句的使用以及分号“;”的使用,第一层 for 循环由于 i 两次自增运算故执行两次,每执行一次第一层 for 循环,第二条 for 循环语句执行三次,但由于语句后面加了分号,因此这一条空循环语句,结果当第一层的 for 语句执行完,跳出整个循环语句后,执行 printf 语句,因此执行一次

43、printf 语句,选项 D 是正确的。21.有以下程序 #inc1udestdio.h main() char*s=“ABC“; do printf(“%d“,*s%10); s+; while(*s); 注意字母 A 的 ASCII 码值为 65。程序运行后的输出结果是_。(分数:2.00)A.5670B.656667C.567 D.ABC解析:评析 本题考查的是 do-while 语句的使用,do-while 执行的过程是当 while 后面对括号中表达式的值为非 0 时,转去执行循环体,当值为 0 时,退出循环。本题定义了个指针变量 s,并使得 s 指向字符串“ABC“,的首地址,即把

44、字符 A 的地址赋给 s,因为 do-while 语句是先执行循环体再进行循环条件的判断,因此先执行 printf 语句,“s%10”是 s 对 10 的取模运算,第字符 A 的 ASCII 码为 65,故“65%10”取模运算结果为 5,因此输出 5,接着执行 s+,s 指向字符串的下个字符,当字符串中字符没有循环完时,继续执行 do-while 语句,以此类推,B 和 C 的分别为 6 和 7,因此,选项 C 是正确的。22.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是_。(分数:2.00)A.n=0;while(chgetchar()!=/n)n+;B.n

45、=0;while(getchar()!=/n)n+;C.for(n=0;getchar()!=/n;n+);D.n=0;for(ch=getchar();ch!=/n;n+); 解析:评析 本题主要考查了 while 和 for 循环语句的执行过程。for 循环的一般形式如下: for(表达式 1;表达式 2;表达式 3)循环体 for 循环的执行过程如下: 计算表达式 1; 计算表达式 2。若其值为非 o,转步骤 3;若其值为 0,转步骤 5; 执行次 for 循环体: 计算表达式 3,转向步骤 2: 结束循环。 在选项 D 中,由于 for 循环语句末尾直接是分号,没有循环体,因此可以将其看做条空循环语句,循环体部分可以忽略。程序首先在 for 循环语句外为变量 n 赋初值 0,在 for 循环中,先执行表达式“cb=getchar();”,getchar 函数用于输入字符,因此程序首先将输入的字符赋值绐变量 ch,然后执行表达式“ch!=/n;”,判断输入的字符是否为回车,如果此时输入的字符是回车,结束循环,所以 D 选项错误。23.有以下程序 #includesldio.h main() int a1,a2; char c1,c2; scanf(“%d%c%d,%c“

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

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

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