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

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

1、二级 C 语言+2013 年 03 月-2 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.设数据元素的集合 D=1,2,3,4,5,则满足下列关系 R 的数据结构中为线性结构的是_。(分数:1.00)A.R=(1,2),(3,4),(5,1)B.R=(1,3),(4,1),(3,2),(5,4)C.R=(1,2),(2,3),(4,5)D.R=(1,3),(2,4),(3,5)2.下列叙述中正确的是_。(分数:1.00)A.链表节点中具有两个指针域的数据结构可以是线性结构,也可以是非线性结构B.线性表的链式存储结构中,每个节点必须有指向前

2、件和指向后件的两个指针C.线性表的链式存储结构中,每个节点只能有一个指向后件的指针D.线性表的链式存储结构中,叶子节点的指针只能是空3.一个栈的初始状态为空。现将元素 A,B,C,D,E 依次入栈,然后依次退栈三次,并将退栈的三个元素依次入队(原队列为空),最后将队列中的元素全部退出。则元素退队的顺序为_。(分数:1.00)A.ABCB.CBAC.EDCD.CDE4.某二叉树的中序序列为 DCBAEFG,后序序列为 DCBGFEA,则该二叉树的深度(根节点在第 1 层)为_。(分数:1.00)A.5B.4C.3D.25.软件生命周期是指_。(分数:1.00)A.软件产品从提出、实现、使用、维护

3、到停止使用、退役的过程B.软件的需求分析、设计与实现C.软件的开发与管理D.软件的实现和维护6.某系统结构图如下图所示 (分数:1.00)A.1B.2C.3D.47.下面属于应用软件的是_。(分数:1.00)A.学生成绩管理系统B.UNIX 操作系统C.汇编程序D.编译程序8.将 E-R 图转换为关系模式时,E-R 图中的属性可以表示为_。(分数:1.00)A.属性B.键C.关系D.域9.有两个关系 R 与 S 如下,由关系 R 和 S 得到关系 T,则所使用的操作为_。 R A A1 B B1 a 0 f 3 a 0 n 2 b 1 f 3 b 1 n 2 a 1 f 4 S A A1 a

4、0 b 1 T B B1 f 3 n 2 (分数:1.00)A.并B.自然连接C.除D.交10.优化数据库系统查询性能的索引设计属于数据库设计的_。(分数:1.00)A.需求分析B.概念设计C.逻辑设计D.物理设计11.结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是_。(分数:1.00)A.三种基本结构不可以嵌套使用B.顺序结构是按语句在程序中的先后顺序逐条执行,没有分支,没有转移C.选择结构是根据不同的条件执行不同分支中的语句D.循环结构是根据条件决定是否重复、重复执行多少次循环体语句12.以下能正确表述算式 sin(2r+30)的 C 语言表达式是_。(分数:1.00)

5、A.sin(2*3.14*r+3.14*30/180.0)B.sin(2*r+30)C.sin(2*3.14*r+30)D.sin(2*3.14*r+30*3.14/360.0)13.设有定义:int x=11,y=12,z=0;,以下表达式值不等于 12 的是_。(分数:1.00)A.(z,x,y)B.(z=x,y)C.z=(x,y)D.z=(x=y)14.以下可以将任意一个两位整数 n 的个位数与十位数对换的表达式为_。(分数:1.00)A.(n-n/1010)10+n/10B.n-n/1010+n/10C.n/10+(n-n/10)D.(n-n/10)10+(n/10)15.设有以下程序

6、段: int y; y=rand()%30+1; 则变量 y 的取值范围是_。(分数:1.00)A.0y30B.0y30C.1y30D.1y3016.以下程序段中,循环次数不超过 10 的是_。(分数:1.00)A.int i=10;doi=i+1;while(i0);B.int i=5;doi+=1;while(i0);C.int i=1;doi+=2;while(i!=10);D.int i=6;doi-=2;while(i!=1);17.有以下程序: #include stdio.h main() int x; scanf(“%d“, if(x10) printf(“1“); else

7、if(x20) printf(“2“); else if(x30) printf(“3“); 若运行时输入:35回车,则输出结果是_。(分数:1.00)A.123B.2C.3D.118.若要实现 total=1+2+3+4+5 求和,以下程序段错误的是_。(分数:1.00)A.int i=1,total=1;while(i5) total+=i;i+=1;B.int i=1,total=0;while(i=5) total+=i;i+=1;C.int i=0,total=0;while(i5) i+=1;total+=i;D.int i=0,total=0;while(i=5) total+=

8、i;i+=1;19.有以下程序: #include stdio.h main() int i=1,k=0; for( ; i6; ) switch(i%3) case 0: k+; case 1: k+; break; case 2: k+; continue; i+=1; printf(“%d/n“,k); 程序的运行情况是_。(分数:1.00)A.形成无限循环B.输出 6C.输出 5D.输出 420.以下不能输出小写字母 a 的选项是_。(分数:1.00)A.printf(“%c/n“,“a“);B.printf(“%c/n“,“A“+32);C.putchar(97);D.putchar

9、(“a“);21.有以下程序段: char c1,c2,c3; scanf(“%c%c%c“, 若要给 c1、c2、c3 分别输入字母 A、B、C,则以下对输入形式的描述正确的是_。(分数:1.00)A.字母 A、B、C 之间可以用空格分隔B.字母 A、B、C 之间不能有分隔符C.字母 A、B、C 之间可以用回车符分隔D.字母 A、B、C 之间可以用 Tab 键分隔22.有以下程序段: 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 中

10、的最大值C.输出 a、b、c 中的最小值D.输出 a 的原始值23.以下程序的功能是:通过调用 calc 函数,把所求得的两数之和值放入变量 add 中,并在主函数中输出。#include stdio.h void calc(float x,float y,float *sum) _ = x+y; main() float x,y,add; scanf(“%f%f“, calc(x,y, printf(“x+y=%f/n“,add); calc 函数中下划线处应填入的是_。(分数:1.00)A.*sumB.sumC. int i,j; for(i=0;i4; i+) ai0=ai3=“#“;

11、for(j=1; j3; j+) a0j=a 3j=“#“; if(i!=0) for(i=1;i3;i+) for(j=0; j4;j+) printf(“%2c“ ,aij); printf(“/n“); 程序的运行结果是_。(分数:1.00)A.#o o#o o#B.# # # # o o #C.# o o # # # #D.# # # # # # #25.设有函数定义:void sub(int k,char ch) 则以下对函数 sub 的调用语句中,正确的是_。(分数:1.00)A.sub(1,97);B.sub(2,“97“);C.n=sub(3,“a“);D.sub(4,“a“)

12、;26.有以下程序: #include stdio.h void fun(int *x,int s,int n) int i; for(i=s; i=n; i-) *(x+i+3) = * (x+i); main() int m = 0,1,2,3,4,5,6,7,8,9,k; fun(m,10-4,3); for(k=0; k10;k+) printf(“%d“,mk); 程序的运行结果是_。(分数:1.00)A.0123456345B.0123453456C.0123456666D.012345456927.若有定义语句:int m3=1,2,3,4,5,6,7;,则与该语句等价的是_。(

13、分数:1.00)A.int m3=1,2,3,4,5,6,7;B.int m3=1,2,3,4,5,6,7;C.int m3=1,2,3,4,5,6,7;D.int m3=1,2,3,4,5,6,7;28.设有以下说明和语句:int x34,(*p)4;p=a;,则与表达式*(* p+2)等价的选项是_。(分数:1.00)A.a02B.*(a+2)0C.(*a+2)0D.a2029.以下不能将键盘输入的字符串:This is a string回车读入到 str 中的程序段是_。(分数:1.00)A.char str80;scanf(“%s“,str);B.char str80;int i=0;

14、while(stri+=getchar()!=“/n“);stri=0;C.char str80;gets(str);D.char str80,*ps=str;doscanf(“%c“,ps);while(*ps+ !=“/n“);*(ps)=0;30.有以下程序: #include stdio.h main() char s10=“verygood“, *ps=s; ps+=4; ps=“nice“; puts(s); 程序的运行结果是_。(分数:1.00)A.niceB.veryniceC.nicegoodD.verygood31.有以下程序: #include stdio.h int f

15、un(char *s) char *p=s; while(*p !=“/0“)p+; return(p-s); main() char *p=“01234“; printf(“%d/n“,fun(p); 程序的运行结果是_。(分数:1.00)A.3B.6C.4D.532.有以下程序: #include stdio.h main() int findmax(int,int,int),m; m=findmax(a,b,e); int findmax(int x,int y,int z) 则以下叙述正确的是_。(分数:1.00)A.在 main 函数中声明了 findmax 函数B.在 main 函

16、数中定义了 findmax 函数C.在 main 函数中两次调用了 findmax 函数D.在 main 函数内、外重复定义了 findmax 函数33.有以下程序: #include stdio.h void fun(int n) int i; if(i=n/10)!=0) fun(i); putchar(n%10+“0“); main() fun(256); 程序运行后的输出结果是_。(分数:1.00)A.256B.652C.2560D.5234.有以下程序: #include stdio.h #include stdlib.h void fun(int*p1, int *s) int *

17、t; t=(int *)malloc(2 * sizeof(int); *t=*p1 + *p1 +; *(t+1)=*p1+ *p1; s=t; main() int a2=1,2,b2=0; fun(a,b); printf(“%d,%d/n“,b0,b1); 程序运行后的输出结果是_。(分数:1.00)A.2,6B.0,0C.2,4D.1,235.有以下程序: #include stdio.h #define FNA(x) x*x #define FNB(x) x+z main() int a=2,b=4; printf(“%d,%d/n“,FNA(FNB(a),FNB(FNA(b);

18、程序运行后的输出结果是_。(分数:1.00)A.8,16B.16,32C.8,32D.16,1636.设有如下语句: typedef struct Date int year; int month; int day; DATE; 则以下叙述中错误的是_。(分数:1.00)A.DATE 是用户定义的结构体变量B.struct Date 是用户定义的结构体类型C.DATE 是用户说明的新结构体类型名D.struct 是结构体类型的关键字37.设有如下定义: struct int n; char c; a2,*p=a; 则以下错误引用结构体成员 n 的是_。(分数:1.00)A.(* a)-nB.a

19、0.nC.p-nD.(* p).n38.有以下程序: #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=t“Hua“,“m“,18,“Qin“,“f“,19; fun(s1); printf(“%s,%d,%s,%d/n“,s0.name,s0.age,s1.name,s1.age); 程序运行后的输出结果是_。(分数:1.00)A.Hua,19,To

20、ng,19B.Hua,18,Tong,20C.Tong,19,Qin,19D.Hua,18,Qin,1939.设有定义:int a=64,b=8;,则表达式(a if(fp=fopen(“test.txt“,“w“)= NULL) printf(“不能打开文件!“); exit(0); else printf(“成功打开文件!“); 若文件 test.txt 已存在,则以下叙述正确的是_。(分数:1.00)A.程序运行后,文件 test.txt 中的原有内容将全部消失B.程序运行时,会因文件存在而出错C.对文件 test.txt 进行写操作后,可以随机进行读取D.对文件 test.txt 写入

21、的内容总是被添加到文件尾部二、程序填空题(总题数:1,分数:20.00)41.下列给定程序中,函数 fun 的功能是:统计带头节点的单向链表中节点的个数,并存放在形参 n 所指的存储单元中。 请在程序的下画线处填入正确的内容,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #include stdio.h #include stdlib.h #define N 8 typedef struct list int data; struct list * next; SLIST; SLIST * creatlist(int *a); void

22、 outlist(SLIST*); vom fun(SLIST * h, int * n) SLIST *p; /*found*/ 1 =0; p=h-next; while(p) (* n)+; /*found*/ p=p- 2 ; main() SLIST * head; int aN=12,87,45,32,91,16,20,48, num; head=creatlist(a); outlist(head); /*found*/ fun( 3, printf(“/nnumber=%d/n“,num); SLIST * creatlist(int a) SLIST *h,*p,*q; in

23、t i; h=p=(SLIST*)malloc(sizeof(SLIST); for(i=0;iN;i+) q=(SLIST*)malloc(sizeof(SLIST); q-data=ai; p-next=q; p=q; p-next=0; return h; void outlist(SLIST*h) SLIST * p; p=h-next; if(p=NULL) printf(“The list is NULL!/n“); else printf(“/nHead“); do printf(“-%d“,p-data); p=p-next; while(p! = NULL); printf(

24、“-End/n“); (分数:20.00)三、程序修改题(总题数:1,分数:20.00)42.下列给定程序中,函数 fun 的功能是:求出 S 所指字符串中最后一次出现的 t 所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为 NULL。 例如,当字符串中的内容为“abcdabfabcdx”,t 中内容为“ab”时,输出结果应是“abcdx”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include stdlib.h #include stdio.h #inclu

25、de conio.h #include string.h char * fun(char*s,char * t) char * p, *r, *a; /*found*/ a=Null; while(*s) p=s;r=t; while(*r) /*found*/ if(r=p) r+;p+; else break; if(*r=“/0“)a=s; s+; return a; void main() char s100,t100,*p; system(“CLS“); printf(“/nPlease enter string S:“); scanf(“%s“,s); printf(“/nPlea

26、se enter substring t:“); scanf(“%s“,t); p=fun(s,t); if(p) printf(“/nThe result is:%s/n“,p); else printf(“/nNot found!/n“); (分数:20.00)_四、程序设计题(总题数:1,分数:20.00)43.编写函数 fun,其功能是:将两个两位数的正整数 a、b 合并成一个整数放在 c 中。合并的方式是:将a 数的十位和个位数依次放在 c 数的十位和千位上,b 数的十位和个位数依次放在 c 数的百位和个位上。 例如,当 a=45,b=12 时,调用该函数后,c=5142。 注意:部

27、分源程序给出如下。数据文件 IN.DAT 中的数据不得修改。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入编写的若干语句。 试题程序: #include stdlib.h #include stdio.h #include conic.h void fun(int a,int b,long*c) void main() int a,b; long c; system(“CLS“); printf(“Input a,b;“); scanf(“%d%d“, fun(a,b, printf(“The result is:%ld/n“,c); (分数:20.00)

28、_二级 C 语言+2013 年 03 月-2 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.设数据元素的集合 D=1,2,3,4,5,则满足下列关系 R 的数据结构中为线性结构的是_。(分数:1.00)A.R=(1,2),(3,4),(5,1)B.R=(1,3),(4,1),(3,2),(5,4) C.R=(1,2),(2,3),(4,5)D.R=(1,3),(2,4),(3,5)解析:解析 一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后件,称为线性结构。不同时满足以上两个条件的数据结构

29、就称为非线性结构。A选项中有两个根节点 3 和 5 故错误。B 选项根节点为 5,排列顺序为 54132,B 选项正确。C 选项有两个根节点 1 和 4,故错误。D 选项有两个根节点 1 和 2,故错误。2.下列叙述中正确的是_。(分数:1.00)A.链表节点中具有两个指针域的数据结构可以是线性结构,也可以是非线性结构 B.线性表的链式存储结构中,每个节点必须有指向前件和指向后件的两个指针C.线性表的链式存储结构中,每个节点只能有一个指向后件的指针D.线性表的链式存储结构中,叶子节点的指针只能是空解析:解析 双向链表与树形结构的节点均可以包含两个指针域,但前者为线性结构,后者为非线性结构,故

30、A 选项正确。双向链表含有指向前件和指向后件的两个指针,故 C 选项错误。线性链表就是指线性表的链式存储结构。由于这种链表中,每个节点只有一个指针域,故又称为单链表,故 B 选项错误。二叉树为非线结构,叶子节点没有后件,但是可以有指向前件的指针,故 D 选项错误。3.一个栈的初始状态为空。现将元素 A,B,C,D,E 依次入栈,然后依次退栈三次,并将退栈的三个元素依次入队(原队列为空),最后将队列中的元素全部退出。则元素退队的顺序为_。(分数:1.00)A.ABCB.CBAC.EDC D.CDE解析:解析 栈所有的插入与删除都限定在表的同一端进行。入栈运算即在栈顶位置插入一个新元素,退栈运算即

31、是取出栈顶元素赋予指定变量。队列指允许在一端进行插入,而在另一端进行删除的线性表。习惯上称往队列的队尾插入一个元素为入队运算,称从队列的队头删除一个元素为退队运算。元素入栈后为 ABCDE,退栈并入队后,队中元素为 EDC。退队时从队头开始,顺序为 EDC,故 C 选项正确。4.某二叉树的中序序列为 DCBAEFG,后序序列为 DCBGFEA,则该二叉树的深度(根节点在第 1 层)为_。(分数:1.00)A.5B.4 C.3D.2解析:解析 深度,定义一棵树的根节点所在的层次为 1,其他节点所在的层次等于它的父节点所在的层次加 1,树的最大层次称为树的深度。二叉树遍历可以分为 3 种:前序遍历

32、(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。二叉树的后序序列为 DCBGFEA,A 为根节点。中序序列为 DCBAEFC,可知 DCB 为左子树节点,EFG 为右子树节点。同理 B 为 C 父节点,C 为 D 父节点。根据分析,可画出左子树,同理 E 为 F 根节点,F 为 G 根节点。根据分析,可画出右子树,观察得,树的深度为 4。故二叉树深度为4 层,故 B 选项正确。5.软件生命周期是指_。(分数:1.00)A.软件产品从提出、实现、使用、维护到停止使用、退役的过程 B.软件的需求

33、分析、设计与实现C.软件的开发与管理D.软件的实现和维护解析:解析 通常把软件产品从提出、实现、使用、维护到停止使用、退役的过程称为软件生命周期,故 A 选项正确。6.某系统结构图如下图所示 (分数:1.00)A.1B.2C.3 D.4解析:解析 深度表示控制的层数。题目中系统共有 3 层,故 C 选项正确。7.下面属于应用软件的是_。(分数:1.00)A.学生成绩管理系统 B.UNIX 操作系统C.汇编程序D.编译程序解析:解析 计算机软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,如操作系统、数据库管理系

34、统、编译程序、汇编程序和网络软件等,B、C、D 均为系统软件。应用软件为了应用于特定的领域而开发的软件,故 A 选项正确。8.将 E-R 图转换为关系模式时,E-R 图中的属性可以表示为_。(分数:1.00)A.属性 B.键C.关系D.域解析:解析 采用 E-R 方法得到的全局概念模型是对信息世界的描述,并不适用于计算机处理,为了适合关系数据库系统的处理,必须将 E-R 图转换成关系模式。下表为 E-R 模型和关系模型的对照表。由表中可知 A 选项正确。 E-R 模型 关系模型 E-R 模型 关系模型 实体 元组 属性 属性 实体集 关系 联系 关系 9.有两个关系 R 与 S 如下,由关系

35、R 和 S 得到关系 T,则所使用的操作为_。 R A A1 B B1 a 0 f 3 a 0 n 2 b 1 f 3 b 1 n 2 a 1 f 4 S A A1 a 0 b 1 T B B1 f 3 n 2 (分数:1.00)A.并B.自然连接C.除 D.交解析:解析 常用的扩充运算有交、除、连接及自然连接等。并:RS 是将 S 中的记录追加到 R 后面。交:RS 结果是既属于 R 又属于 S 的记录组成的集合。上述两种操作中,关系 R 与 S 要求有相同的结构,故A、D 选项错误。自然连接:去掉重复属性的等值连接。自然连接要求两个关系中进行比较的是相同的属性,并且进行等值连接,可知 B

36、选项错误。除运算可以近似地看作笛卡尔积的逆运算。当 ST=R 时,则必有 RS=T,T 称为 R 除以 S 的商。设关系 R 有属性 M1,M2,Mn,关系 S 有属性 Mn-s+1,Mn-s+2,Mn,此时有:RS=M1,M2,Mn-S(R)-M1,M2,Mn-s(M1,M2,Mn-s(R)S)。由 S 中有属性 A 和 A1,T 中属性为 B 和 B1,在 R 元组中找到对应于 s 中两个元组的 T 中元组为 f3 与n2。R 中最后一个元组与 S 中无对应关系,所以在 T 中也不会出现。故 C 选项正确。10.优化数据库系统查询性能的索引设计属于数据库设计的_。(分数:1.00)A.需求

37、分析B.概念设计C.逻辑设计D.物理设计 解析:解析 数据库设计的 4 个阶段为:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段。为一个给定的逻辑模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计。数据库物理设计的主要目标是对数据内部物理结构作调整并选择合理的存取路径,以提高数据库访问速度及有效利用存储空间。一般 RDBMS 中留给用户参与物理设计的内容大致有索引设计、集簇设计和分区设计。故 D 选项正确。11.结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是_。(分数:1.00)A.三种基本结构不可以嵌套使用 B.顺序结构是按语句在程序中的先后顺序逐条

38、执行,没有分支,没有转移C.选择结构是根据不同的条件执行不同分支中的语句D.循环结构是根据条件决定是否重复、重复执行多少次循环体语句解析:解析 结构化程序主要由 3 种基本控制结构组成,顺序结构是最基本的算法结构,当执行由这些语句构成的程序时,将按这些语句在程序中的先后顺序逐条执行,没有分支,没有转移,没有步骤之间的相互约束,没有对某一步骤的多次使用,完全按照步骤的原有次序依次执行,B 选项叙述正确。选择结构根据不同的条件去执行不同分支中的语句,C 选项叙述正确。循环结构就是根据各自的条件,使同一组语句重复执行多次,D 选项叙述正确。三种结构可以嵌套使用,A 选项叙述错误,选择 A 选项。12

39、.以下能正确表述算式 sin(2r+30)的 C 语言表达式是_。(分数:1.00)A.sin(2*3.14*r+3.14*30/180.0) B.sin(2*r+30)C.sin(2*3.14*r+30)D.sin(2*3.14*r+30*3.14/360.0)解析:解析 sin 是库函数,在使用时应包含 math.h,其参数应该为被求角度的弧度制表示。C 语言中 不是已定义的常量,需要用户自定义或者直接使用 3.14 代替 。B 选项没有替换 也没有将 30 度换算成弧度,错误。C 选项没有将 30 度换算成弧度,错误。D 选项弧度换算错误, 对应于 180,应该除以 180.0 而不是

40、360.0。A 选项 被正确替换,弧度换算正确,故 A 选项正确。13.设有定义:int x=11,y=12,z=0;,以下表达式值不等于 12 的是_。(分数:1.00)A.(z,x,y)B.(z=x,y)C.z=(x,y)D.z=(x=y) 解析:解析 逗号表达式的计算过程是从左到右逐个求每个表达式的值,取最右边一个表达式的值作为该逗号表达式的值。赋值运算结合性为由右向左结合,赋值运算符左值为变量,右值为变量或常量,且左右两边数据类型相同才能实现赋值。成功实现赋值后以左值为返回值。逻辑表达式成立则返回 1,不成立返回 0。D 选项逻辑表达式 x=y 不成立,则 z=0,表达式值为 0。B

41、选项逗号表达式 x,y 取 y 值为表达式值,然后赋值给 z=12,表达式值为 12。C 选项逗号表达式(x,y)取 y 值为表达式值,然后赋值给 z=12,表达式值为 12。A 选项逗号表达式(z,x,y)取 y 值为表达式值 12。故选择 D 选项。14.以下可以将任意一个两位整数 n 的个位数与十位数对换的表达式为_。(分数:1.00)A.(n-n/1010)10+n/10 B.n-n/1010+n/10C.n/10+(n-n/10)D.(n-n/10)10+(n/10)解析:解析 A 选项 n/10 得到十位数字,n-n/10 得到个位数字,将个位数乘以 10 加上十位数字,(n-n/

42、1010)10+n/10 实现将任意一个两位整数个位数与十位数对换,A 选项正确。B 选项 n-n/1010 得到个位数字,n/10 为十位数字,n-n/1010+n/10 实现两位整数个位数与十位数之和,B 选项错误。C 选项 n/10+(n-n/10)=n,不能实现题目中要求,C 选项错误。D 选项 n/10 是十位数字,n-n/10 为原两位整数减去十位数字,不是个位数字,D 选项错误。15.设有以下程序段: int y; y=rand()%30+1; 则变量 y 的取值范围是_。(分数:1.00)A.0y30B.0y30 C.1y30D.1y30解析:解析 本题考点为“%”求余符号。r

43、and()产生随机整数,任何整数对 30 求余得到的整数范围为029,则 y 的取值范围为 1y30 或者说 0y30,故 B 选项正确。16.以下程序段中,循环次数不超过 10 的是_。(分数:1.00)A.int i=10;doi=i+1;while(i0); B.int i=5;doi+=1;while(i0);C.int i=1;doi+=2;while(i!=10);D.int i=6;doi-=2;while(i!=1);解析:解析 dowhile 循环语句一般形式为:do循环体while(表达式),执行过程为:首先执行循环体,之后判断表达式,成立(非 0)则再一次执行循环体,不成

44、立(0)则退出循环。A 选项,执行函数体i=11,判断条件 110 不成立,退出循环,循环次数为 1,不超过 10 次,A 选项正确。B 选项执行函数体i=6,判断条件为 i0,由于执行函数体时 j 在增加,i0 一直成立,程序陷入无限循环,循环次数大于10,B 选项错误。C 选项执行函数体 i=3,判断条件为 i!=10,由于函数体中 i 每次增加 2,所以永远小可能等于 10,故程序会陷入无限循环,循环次数大于 10,C 选项错误。D 选项执行函数体 i=4,判断条件为i!=1,由于函数体中 i 每次减少 2,所以永远不可能等于 1,故程序会陷入无限循环,循环次数大于10,D 选项错误。1

45、7.有以下程序: #include stdio.h main() int x; scanf(“%d“, if(x10) printf(“1“); else if(x20) printf(“2“); else if(x30) printf(“3“); 若运行时输入:35回车,则输出结果是_。(分数:1.00)A.123B.2C.3D.1 解析:解析 程序执行过程为:输入 35回车,scanf 函数从键盘读入 35 赋值给 x=35,对 if 条件进行判断,3510,条件成立,输出 1,不再执行下面的 else if 语句,程序结束,输出结果为 1,故 D 选项正确。18.若要实现 total=1+2+3+4+5 求和,以下程序段错误的是_。(分数:1.00)A.int i=1,total=1;while(i5) total+=i;i+=1; B.int i=1,total=0;while(i=5) total+=i;i+=1;C.int i=0,total=0;while(i5) i+=1;total+=i;D.int i=0,total=0;while(i=5) total+=i;i+=1;解析:解析 while 循环语句一般形式为:while(表达式)循环体,执行过程为:首先判断表达式,成立(非 0)则执行循环体,不成立(0)则退出循环。A 选项执行过程为:i=1,total=

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

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

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