【计算机类职业资格】二级C语言真题2013年03月-(2)及答案解析.doc

上传人:figureissue185 文档编号:1325923 上传时间:2019-10-17 格式:DOC 页数:27 大小:129.50KB
下载 相关 举报
【计算机类职业资格】二级C语言真题2013年03月-(2)及答案解析.doc_第1页
第1页 / 共27页
【计算机类职业资格】二级C语言真题2013年03月-(2)及答案解析.doc_第2页
第2页 / 共27页
【计算机类职业资格】二级C语言真题2013年03月-(2)及答案解析.doc_第3页
第3页 / 共27页
【计算机类职业资格】二级C语言真题2013年03月-(2)及答案解析.doc_第4页
第4页 / 共27页
【计算机类职业资格】二级C语言真题2013年03月-(2)及答案解析.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、二级 C语言真题 2013年 03月-(2)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.设循环队列为 Q(1:m),其初始状态为 front=rear=m。经过一系列入队与退队运算后,front=20,rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为_。(分数:1.00)A.5B.6C.m-5D.m-62.某二叉树的前序序列为 ABCDEFG,中序序列为 DCBAEFG,则该二叉树的后序序列为_。(分数:1.00)A.EFCDCBAB.DCBEFGAC.BCDGFEAD.DCBGFEA3.下列叙述中错误的是

2、_。(分数:1.00)A.在链表中,如果每个节点有两个指针域,则该链表一定是非线性结构B.在链表中,如果有两个节点的同一个指针域的值相等,则该链表一定是非线性结构C.在链表中,如果每个节点有两个指针域,则该链表一定是线性结构D.在链表中,如果有两个节点的同一个指针域的值相等,则该链表一定是线性结构4.下列叙述中错误的是_。(分数:1.00)A.在带链队列中,队头指针和队尾指针都是在动态变化的B.在带链栈中,栈顶指针和栈底指针都是在动态变化的C.在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的D.在带链队列中,队头指针和队尾指针可以指向同一个位置5.软件生命周期中,确定软件系统要做什么的阶

3、段是_。(分数:1.00)A.需求分析B.软件测试C.软件设计D.系统维护6.下面对软件测试和软件调试有关概念叙述错误的是_。(分数:1.00)A.严格执行测试计划,排除测试的随意性B.程序调试通常也称为 DebugC.软件测试的目的是发现错误和改正错误D.设计正确的测试用例7.下面属于系统软件的是_。(分数:1.00)A.财务管理系统B.编译软件C.编辑软件 wordD.杀毒软件8.将 E-R图转换为关系模式时,E-R 图中的实体和联系都可以表示为_。(分数:1.00)A.属性B键C.关系D域9.有两个关系 R与 S如下,由关系 R和 S得到关系 T,则所使用的操作为_。 R A A1 a

4、0 b 1 S B B1 B2 f 3 k2 n 2 x1 T A A1 B B1 B2 a 0 f 3 k2 a 0 n 2 x1 b 1 f 3 k2 b 1 n 2 x1 (分数:1.00)A并B.自然连接C.笛卡尔积D交10.在数据管理的三个发展阶段中,数据的共享性好且冗余度最小的是_。(分数:1.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.面向数据应用系统阶段11.以下叙述中错误的是_。(分数:1.00)A.书写风格良好的程序执行效率高B.书写风格良好的程序易读性好C.C程序可以在一行上写多条语句D.C程序允许将一条语句分写在多行上12.在 C语言中,以下选项中不能正

5、确表示 101000之值的是_。(分数:1.00)A.1.0E4.0B.1.FAC.10E3D.1.0e413.设有定义:int a=0,b=1,c=1;以下选项中,表达式值与其他三个不同的是_。(分数:1.00)A.b=a=cB.a=b=cC.a=c=bD.c=a!=c14.设有两行定义语句: int scanf; float case; 则以下叙述正确的是_。(分数:1.00)A.两行定义语句都不合法B.两行定义语句都合法C.第 1行语句不合法D.第 2行语句不合法15.设有定义:double x=2.12;,以下不能完整输出变量 x值的语句是_。(分数:1.00)A.printf(“x=

6、%5.0f/n“,x);B.printf(“x=%f/n“,x);C.printf(“x=%lf/n“,x);D.printf(“x=%0.5f/n“,x);16.设有定义:int a,b;float x,y;,则以下选项中对语句所作的注释叙述错误的是_。(分数:1.00)A.scanf(“%d%d%f“,/*多余的格式符%f 完全不起作用*/B.scanf(“%d%d“,/*多余的输入项不能获得输入数据*/C.scanf(“%d%d“,/*输入项与格式符类型不匹配,变量 b和 X得不到正确的输入数据+/D.scanf(“Input:%d%d“,/*格式串中允许加入格式符以外的字符串*/17.

7、有如下程序: #include stdio.h main() int a = 0, b = 1; if(+a = b+) printf(“T“); else printf(“F“); printf(“a=%d,b=%d/n“,a,b); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.Ta=0,b=1B.Fa=1,b=2C.Ta=1,b=2D.Fa=0,b=218.有如下程序: #include stdio.h main() int i=1; for(printf(“%d“,i); i4; i+) printf(“%d“, i); printf(“/n“); 程序运

8、行后的输出结果是_。(分数:1.00)A.1123B.123C.0123D.00119.有如下程序: #include stdio.h main() char ch=“A“; while(ch“D“) printf(“%d“, ch-“A“); ch+; printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.ABCB.012C.abcD.12320.有如下程序: #include stdio.h main() if(“/0“ = 0) putehar(“X“); if(“0“ = 0) putehar(“Y“); if(“a“b“) putchar(“Z“). print

9、f(“/n“); 程序运行后的输出结果是_。(分数:1.00)AXB.XYZC.YZDY21.有如下程序: #include stdio.h main() char ch=“M“; while(ch !=“K“) ch-; putchar(ch); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.MNB.LKC.OPD.MM22.有以下程序段: scanf(“%d%d%d“, if(ab) a=b; if(ac) a=c; printf(“%d/n“,a); 该程序段的功能是_。(分数:1.00)A.输出 a、b、c 中的最小值B.输出 a、b、c 中的最大值C.输

10、出 a的原始值D.输出 a、b、c 中值相等的数值23.以下关于函数的叙述中正确的是_。(分数:1.00)A.函数调用必须传递实参B.函数必须要有形参C.函数必须要有返回值D.函数形参的类型与返回值的类型无关24.设有定义:int a,b10,*c=NULL,*p;,则以下语句错误的是_。(分数:1.00)A.p=a;B.p=b;C.p=c;D.p= for(i=s,j=e; ij; i+,j-) t = *(x+i); *(x+i)=*(x+j); *(x+j)=t; main() int m=0,1,2,3,4,5,6,7,8,9,k; fun(m,0,3); fun(m+4,0,5);

11、fun(m,0,9); for(k=0; k10;k+) printf(“%d“,mk); 程序的运行结果是_。(分数:1.00)A.4567890123B.3210987654C.9876543210D.098765123426.设有 n个数按从大到小的顺序存放在数组 x中,以下能使这 n个数在 X数组中的顺序变为从小到大的是_。(分数:1.00)A.for(i=0;in/2;i+) t=xi;xi=xn-i-1;xn-i-1=t;B.for(i=0;in;i+) t=xi;xi=xn-i-1;xn-i-1=t;C.for(i=0;in/2;i+) t=xi;xi=xn-i+1;xn-i+1

12、=t;D.for(i=0;in/2;i+=2)t=xi;xi=xn-i-1;xn-i-1=t;27.设有一个 M*N的矩阵已经存放在一个 M行 N列的数组 x中,且有以下程序段: sum=0; for(i=0;iM;i+) sum+=xi0+xiN-1; for(j=1;jN-1;j+) sum+=x0j+xM-1j; 以上程序段计算的是_。(分数:1.00)A.矩阵两条对角线元素之和B.矩阵所有不靠边元素之和C.矩阵所有元素之和D.矩阵所有靠边元素之和28.有以下程序: #include stdio.h main() int s32= 1,2,3,4,5,6,*ps3,k; for(k=0;

13、k3;k+) psk=sk; printf(“%d“,*(psk+1); 程序的运行结果是_。(分数:1.00)A.2 4 6B.1 3 5C.1 2 3D.4 5 629.设有以下定义: char s1=“0123“; char s2= “0“,“1“,“2“,“3“; 则以下叙述正确的是_。(分数:1.00)A.数组 s1的长度小于 s2的长度B.数组 s1和 s2的长度相同C.数组 s1的长度大于 s2的长度D.数组 s1和 s2完全等价30.以下能正确进行字符串赋值的语句组是(分数:1.00)A.thai *ch; ch=“abc“;B.char ch=“a“,“b“,“c“;C.ch

14、ar ch3=“abc“;D.char ch4; ch=“abc“;31.有以下程序: #include stdio.h int fun(char*s) char*p=s; while(*p+ != “/0“); return(p-s); main() char*p=“01234“; printf(“%d/n“,fun(p); 程序的运行结果是_。(分数:1.00)A.6B.5C.4D.332.有以下程序: #include stdio.h main() char*mm4=“abcd“,“1234“,“mnop“,“5678“; char* pm=mm; int i; for(i=0; i4;

15、 i+) printf(“%s“,pmi+i); printf(“/n“); 程序的运行结果是_。(分数:1.00)A.abed1234mnop5678B.abcd234op8C.a2o8D.a1m533.有以下程序: #include stdio.h void fac2(int); void fac1(int n) printf(“*“); if(n0)fac2(n-1); void fac2(int n) printf(“#“); it(n0)fac2(-n); main() fac1(3); 程序的运行结果是_。(分数:1.00)A.* #B.*#*C.* *#D.*#*#34.有以下程

16、序: #include stdio.h int fun(int n) static int t=1; int i=1; for( ; i=n; i+)t* =i; return t; main() int t=1,i; for(i=2;i4; i+) t+=fun(i); printf(“%d/n“,t); 程序的运行结果是_。(分数:1.00)A.8B.11C.15D.435.有以下程序: #include stdio.h #include string.h #include stdlib.h main() char *p1,*p2; p1=p2=(char*)malloc(sizeof(c

17、har)*10); strcpy(p1,“malloc“); strcpy(p2, p1+1); printf(“%c%c/n“,p10,p20); 程序的运行结果是_。(分数:1.00)A.aaB.maC.amD.mm36.设有定义:structint n;float x; s2,m2=10,2.8,0,0.0; 则以下赋值语句中正确的是_。(分数:1.00)A.s0=m1;B.s=m;C.n=m.n;D.s2.x=m2.x;37.有以下程序: #include stdio.h struct S int a; int *b; main() int x1 = 3,4,x2=6,7; struc

18、t S x=1,x1,2,x2; printf(“%d,%d/n“,*x0.b,*x1.b); 程序的运行结果是_。(分数:1.00)A.1,2B.3,6C.4,7D.变量的地址值38.有以下程序: #include stdio.h #include string.h typedef struct char name10; char sex; int age; STU; void fun(STU *t) strcpy(*t).name,“Tong“); (*t).age+; main() STU s2=“Hua“,“m“,18,“Qin“,“f“,19; fun(s+1); printf(“%

19、s,%d,%s,%d/n“,s0.name,s0.age,s1.name,s1.age); 程序运行后的输出结果是_。(分数:1.00)A.Hua,18,Tong,20B.Hua,18,Qin,19C.Tong,19,Qin,19D.Hua,19,Tong,1939.以下不属于 C语言位运算符的是_。(分数:1.00)A.!B.C.D.40.有以下程序段: FILE *fp; if(fp=fopen(“test.txt“,“w“)=NULL) printf(“不能打开文件!“); exit(0); else printf(“成功打开文件!“); 若指定文件 test.txt不存在,且无其他异常

20、,则以下叙述错误的是_。(分数:1.00)A.输出“不能打开文件!“B.输出“成功打开文件!“C.系统将按指定文件名新建文件D.系统将为写操作建立文本文件二、程序填空题(总题数:1,分数:20.00)41.下列给定程序的功能是调用 fun函数建立班级通信录。通信录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为 myfile5.dat的二进制文件中。 请在程序的下画线处填入正确的内容,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #include stdio.h #include s

21、tdlib.h #define N 5 typedef struct int num; char name10; char tel10; STYPE; void cheek(); /*found*/ int fun( 1 *std) /*found*/ 2*fp; int i; if(fp=fopen(“myfile5.dat“,“wb“)=NULL) return(0); printf(“/nOutput data to file!/n“); for(i=0; iN; i+) /*found*/ fwrite( felose(fp); return(1); main() STYPE s10=

22、 1,“aaaaa“,“111111“,1,“bbbbb“,“222222“,1,“CCCCC“,“333333“,1,“ddddd“,“444444“,1,“eeeee“,“555555“; int k; k=fun(s); if(k=1) printf(“Succeed!“); check(); else printf(“Fail!“); void check() FILE*fp; int i; STYPE s10; if(fp=fopen(“myfile5.dat“,“rb“)=NULL) printf(“Fail!/n“); exit(0); plintf(“/nRead file a

23、nd output to screen:/n“); printf(“/n num name tel/n“); for(i=0;iN;i+) fread( printf(“%6d %s %s/n“,si.num,si.name,si.tel); fclose(fp); (分数:20.00)三、程序修改题(总题数:1,分数:20.00)42.下列给定程序中,函数 fun的功能是:先将字符串 s中的字符按正序存放到字符串 t中,然后把 s中的字符按逆序连接到字符串 t的后面。 例如,当 s中的字符串为“ABCDE”时,则 t中的字符串应为“ABCDEEDCBA”。 请改正程序中的错误,使它能得出正确

24、的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include stdlib.h #include conioaha #include stdio.h #include string.h void fun(char *s, char *t) int i,s1; s1=strlen(s); /*found*/ for(i=0;i=s1;i+) ti=Si; for(i=0;is1;i+) ts1+i=Si; /*found*/ ts1=“/0“; void main() char s100,t100; system(“CLS“); printf(“/

25、nPlease enter string s:“); scanf(“%s“,s); fun(s,t); printf(“The result is:%s/n“,t); (分数:20.00)_四、程序设计题(总题数:1,分数:20.00)43.函数 fun的功能是:将两个两位数的正整数 a、b 合并成一个整数放在 c中。合并的方式是:将 a数的十位和个位数依次放在 e数的千位和十位上,b 数的十位和个位数依次放在 e数的百位和个位上。 例如,当 a=45,b=12 时,调用该函数后 c=4152。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括

26、号中填入你编写的若干语句。 试题程序: #include conio.h #include stdio.h void fun(int a,int b,iong*c) main() int a,b; long c; printf(“Input a,b:“); scanf(“%d%d“, fun(a,b, pfintf(“The result is:%d/n“,c); (分数:20.00)_二级 C语言真题 2013年 03月-(2)答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.设循环队列为 Q(1:m),其初始状态为 front=rear=m

27、。经过一系列入队与退队运算后,front=20,rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为_。(分数:1.00)A.5B.6C.m-5D.m-6 解析:解析 循环队列是队列的一种顺序存储结构,用队尾指针 rear指向队列中的队尾元素,用排头指针指向排头元素的前一个位置,因此,从排头指针 front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为 front=rear=m,当 front=20,rear=15 时,队列中有 m-20+15=m-5个元素,比较次数为 m-6次,故 D选项正确。2.某二叉树的前序序列为

28、 ABCDEFG,中序序列为 DCBAEFG,则该二叉树的后序序列为_。(分数:1.00)A.EFCDCBAB.DCBEFGAC.BCDGFEAD.DCBGFEA 解析:解析 二叉树遍历可以分为 3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。二叉树的前序序列为 ABCDEFG,A 为根节点。中序序列为 DCBAEFG,可知 DCB为左子树节点,EFG为右子树节点。同理 B为 C父节点,C 为 D父节点,且 CD均为 B的同侧子树节点。同理 E为 F根节点,F为 G根节点,且

29、FG为 E同侧子树节点。二叉树的后序序列为 DCBGFEA,故 D选项正确。3.下列叙述中错误的是_。(分数:1.00)A.在链表中,如果每个节点有两个指针域,则该链表一定是非线性结构 B.在链表中,如果有两个节点的同一个指针域的值相等,则该链表一定是非线性结构C.在链表中,如果每个节点有两个指针域,则该链表一定是线性结构D.在链表中,如果有两个节点的同一个指针域的值相等,则该链表一定是线性结构解析:解析 一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后件,称为线性结构。双向链表节点有两个指针域,指向前一个节点的指针和指向后一个节点的指针,也

30、是线性结构,A 选项错误。如果有两个节点的同一个指针域的值相等,说明一个节点有两个前件,属于非线性结构,B 选项正确,D 选项正确。非线性结构主要是指树形结构和网状结构,可以满足每个节点有两个指针域的条件C 选项正确。故选择 A选项。4.下列叙述中错误的是_。(分数:1.00)A.在带链队列中,队头指针和队尾指针都是在动态变化的B.在带链栈中,栈顶指针和栈底指针都是在动态变化的 C.在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的D.在带链队列中,队头指针和队尾指针可以指向同一个位置解析:解析 带链的队列就是用一个单链表来表示队列,队列中的每一个元素对应链表中的一个节点,在入队和退队过程

31、中,队头指针和队尾指针都是在动态变化的,A 选项叙述正确,循环队列中当队列满或者空时,队头指针和队尾指针指向同一个位置,D 选项叙述正确。栈也可以采用链式存储结构表示,把栈组织成一个单链表,这种数据结构可称为带链的栈,入栈和遐栈过程中栈底指针不变,栈顶指针随之变化,B选项叙述错误,C 选项叙述正确。故选择 B选项。5.软件生命周期中,确定软件系统要做什么的阶段是_。(分数:1.00)A.需求分析 B.软件测试C.软件设计D.系统维护解析:解析 软件生命周期各阶段的主要任务是:问题定义、可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行维护。其中需求分析是指对待开发软件提出的需求

32、进行分析并给出详细定义,也即是确定软件系统要做什么,故 A选项正确。6.下面对软件测试和软件调试有关概念叙述错误的是_。(分数:1.00)A.严格执行测试计划,排除测试的随意性B.程序调试通常也称为 DebugC.软件测试的目的是发现错误和改正错误 D.设计正确的测试用例解析:解析 软件测试就是在软件投入运行之前,尽可能多地发现软件中的错误,但改正错误又调试完成,C 选项叙述错误。软件测试应在测试之前制定测试计划,并严格执行,排除测试随意性,并且需要设计正确的测试用例,A、D 选项叙述正确。调试(也称为 Debug,排错)是作为成功测试的后果出现的步骤而调试是在测试发现错误之后排除错误的过程,

33、B 选项叙述正确。故选择 C选项。7.下面属于系统软件的是_。(分数:1.00)A.财务管理系统B.编译软件 C.编辑软件 wordD.杀毒软件解析:解析 计算机软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,如操作系统、数据库管理系统、编译程序、汇编程序和网络软件等,B 选项正确。A、C、D 选项为应用软件。8.将 E-R图转换为关系模式时,E-R 图中的实体和联系都可以表示为_。(分数:1.00)A.属性B键C.关系 D域解析:解析 采用 E-R方法得到的全局概念模型是对信息世界的描述,并不适用于计算机处

34、理,为了适合关系数据库系统的处理,必须将 E-R图转换成关系模式。这就是逻辑设计的主要内容。E-R 图是由实体、属性和联系组成,而关系模式中只有一种元素关系。故 C选项正确。9.有两个关系 R与 S如下,由关系 R和 S得到关系 T,则所使用的操作为_。 R A A1 a 0 b 1 S B B1 B2 f 3 k2 n 2 x1 T A A1 B B1 B2 a 0 f 3 k2 a 0 n 2 x1 b 1 f 3 k2 b 1 n 2 x1 (分数:1.00)A并B.自然连接C.笛卡尔积 D交解析:解析 用于查询的 3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔

35、积。常用的扩充运算有交、除、连接及自然连接等。并:RS 是将 S中的记录追加到 R后面。交:RS结果是既属于 R又属于 S的记录组成的集合。上述两种操作中,关系 R与 S要求有相同的结构,故 A、D选项错误。自然连接:去掉重复属性的等值连接。自然连接要求两个关系中进行比较的是相同的属性,并且进行等值连接,本题中结果 T应为空,B 选项错误。若 T为笛卡尔积,结果为 5元关系,元组个数为4,且计算结果与题目相符,故 C选项正确。10.在数据管理的三个发展阶段中,数据的共享性好且冗余度最小的是_。(分数:1.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段 D.面向数据应用系统阶段解析:解

36、析 数据管理技术的发展经历了 3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。由下表可知 C选项正确。 特点 人工管理阶段 文件系统阶段 数据库系统阶段 管理者 人 文件系统 数据库管理系统 面向对象 某个应用程序 某个应用程序 现实世界 共享程度 无共享,冗余度大 共享性差,冗余度大 共享性大,冗余度小 独立性 不独立,完全依赖于程序 独立性差 具有高度的物理独立性和一定 的逻辑独立性 结构化 无结构 记录内有结构,整体无结构 整体结构化,用数据模型描述 控制能力 由应用程序控制 由应用程序控制 由 DBMS提供数据安全性、完整 性、并发控制和恢复 11.以下叙述中错误的是_。(分数:

37、1.00)A.书写风格良好的程序执行效率高 B.书写风格良好的程序易读性好C.C程序可以在一行上写多条语句D.C程序允许将一条语句分写在多行上解析:解析 书写风格良好的程序易读性好,方便团队合作,分模块来完成复杂的程序设计,B 选项叙述正确。但是书写风格与程序执行效率无关,程序执行效率与程序的数据结构有关,由算法的时间复杂度和空间复杂度决定,A 选项叙述错误。C 语言程序书写规范中,良好的书写习惯中一般一行写一条语句,这样方便阅读,但是一行写多条语句是符合 C程序编写规则的,C 选项叙述正确。C 程序允许将一条较长的语句分写在多行,D 选项叙述正确。叙述中错误的是 A选项,故选择 A选项。12

38、.在 C语言中,以下选项中不能正确表示 101000之值的是_。(分数:1.00)A.1.0E4.0 B.1.FAC.10E3D.1.0e4解析:解析 实型常量用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。指数形式由十进制数加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。指数形式中阶码必须是整型常量,而 A选项中 4.0是浮点数,所以 A选项不能正确表示 101000之值,B、C、D 选项都表示正确并且值为 10000,故选择 A选项。13.设有定义:int a=0,b=1,c=1;以下选项中,表达式值与其他三个不同的是_。(分数:1.00)A.b=

39、a=c B.a=b=cC.a=c=bD.c=a!=c解析:解析 赋值运算结合性为由右向左结合,赋值运算符左值为变量,右值为变量或常量,且左右两边数据类型相同才能实现赋值。成功实现赋值后以左值为返回值。逻辑表达式成立则返回 1,不成立返回0。A 选项逻辑表达式 a=c不成立(0),则 b=0,表达式值为 0。B 选项中将 c赋值给 b,b=1,再将 b赋给a,a=1,表达式值为 1。C 选项逻辑表达式 c=b成立(1),则 a=1,表达式值为 1。D 选项逻辑表达式 a!=c成立(1),则 c=1,表达式值为 1。A 选项与其他选项不同,故 A选项正确。14.设有两行定义语句: int scan

40、f; float case; 则以下叙述正确的是_。(分数:1.00)A.两行定义语句都不合法B.两行定义语句都合法C.第 1行语句不合法D.第 2行语句不合法 解析:解析 合法的标识符由字母(大、小写均可)、数字和下划线组成,并且必须以字母或下划线开头。关键字是指被 C语言保留的,不能用作其他用途的一些标识符,它们在程序中都代表着固定的含义,用户不可重新定义。预定义标识符是系统已经有过定义的标识符,用户可以重新定义,可以作为变量名。scanf为库函数名,属于预定义标识符,可以被用户重定义,所以第一行语句合法。case 为关键字,是选择结构 switch语句中的关键字,不可被用户重定义,所以第

41、二行语句不合法。故 D选项正确。15.设有定义:double x=2.12;,以下不能完整输出变量 x值的语句是_。(分数:1.00)A.printf(“x=%5.0f/n“,x); B.printf(“x=%f/n“,x);C.printf(“x=%lf/n“,x);D.printf(“x=%0.5f/n“,x);解析:解析 float 类型变量有效位数为 67 位,double 类型变量有效位数为 1516 位。printf 函数控制字符%f 输出 float类型,%lf 输出 double类型。对于 float或 double型数据,在指定数据输出宽度的同时,也可以指定小数位的位数,格式

42、为%m.nf,表示数据输出总的宽度为 m位,其中小数部分占 n位。当数据的小数位多于指定宽度 n时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理;而当数据的小数位少于指定宽度 n时,在小数的右边补零;当 m小于有效位数时,整数部分输出所有有效数字并且自动对齐,小数部分按照 n指定位数输出。A 选项按照 float格式输出数据,宽度为 5位,保留小数0位,输出为 2,不能完整输出 x,选择 A选项。B 选项按照 float格式输出数据,输出为 2.120000。C 选项按照 double格式输出数据,输出为 2.120000。D 选项按照 float格式输出数据,保留小数位数为 5,输

43、出为 2.12000。16.设有定义:int a,b;float x,y;,则以下选项中对语句所作的注释叙述错误的是_。(分数:1.00)A.scanf(“%d%d%f“,/*多余的格式符%f 完全不起作用*/ B.scanf(“%d%d“,/*多余的输入项不能获得输入数据*/C.scanf(“%d%d“,/*输入项与格式符类型不匹配,变量 b和 X得不到正确的输入数据+/D.scanf(“Input:%d%d“,/*格式串中允许加入格式符以外的字符串*/解析:解析 A 选项中%f 是起作用的,程序从键盘正确的读入前两个数据并且保存在指定的地址,读入第三个数据后,将其放入缓冲区,然后寻找应该存

44、放的地址,因为没有找到,程序会发生错误而中断,A选项注释错误,所以选择 A选项。B 选项由于 scanf接收数据只有两个,所以变量 x得不到赋值,注释正确。C 选项 scanf会按照 float类型读取输入的第二个数据并且保存为 int类型,由于两种类型的存储形式与所占内存单元均不同,所以 b得不到正确的赋值,注释正确。在使用 scanf函数时,如果除了格式说明字符和附加格式字符外,还有其他字符,则在输入数据时要求按一一对应的位置原样输入这些字符,故D选项注释正确。17.有如下程序: #include stdio.h main() int a = 0, b = 1; if(+a = b+) p

45、rintf(“T“); else printf(“F“); printf(“a=%d,b=%d/n“,a,b); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.Ta=0,b=1B.Fa=1,b=2C.Ta=1,b=2 D.Fa=0,b=2解析:解析 程序执行过程为:判断+a=b+是否成立,+a 前置运算先加 1,则 a=1,b+后置运算先取值,则 b=1,也即是判断 1=1,成立,输出 T,之后 b=2,输出 a=1,b=2。故 C选项正确。18.有如下程序: #include stdio.h main() int i=1; for(printf(“%d“,i);

46、 i4; i+) printf(“%d“, i); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.1123 B.123C.0123D.001解析:解析 for 循环语句格式:for(exp1;exp2;exp3)。exp1 通常用来给循环变量赋初值;exp2 通常是循环条件,以便决定是否继续执行循环体;exp3 通常可用来修改循环变量的值。程序执行过程为:for循环开始,输出 i=1,判断 i4 成立,输出 i=1,之后 i=2;判断 i4 成立,输出 i=2,之后 i=3;判断 i4 成立,输出 i=3,之后 i=4;判断 i4 不成立,退出循环。程序运行后的输出结果是 1123,故A选项正确。19.有如下程序: #include stdio.h main() char ch=“A“; while(ch“D“) printf(

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

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

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