1、二级 C 语言真题 2017 年 09 月-(2)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中错误的是_。(分数:1.00)A.向量是线性结构B.非空线性结构中只有一个根节点没有前件C.非空线性结构中只有一个终节点没有后件D.只有一个根节点和一个叶子节点的结构必定是线性结构2.设顺序表的长度为 40,对该表进行冒泡排序。在最坏情况下需要的比较次数为_。(分数:1.00)A.820B.780C.40D.413.设二叉树的前序序列为 ABDEGHCFIJ,中序序列为 DBGEHACIFJ。则后序序列为_。(分数:1.00)A.DG
2、HEBIJFCAB.JIHGFEDCBAC.GHIJDEFBCAD.ABCDEFGHIJ4.设表的长度为 n。在下列算法中,最坏情况下时间复杂度最高的是_。(分数:1.00)A.堆排序B.希尔排序C.有序链表查找D.循环链表中寻找最大项5.数据流图(DFD)中的有向箭头()表示_。(分数:1.00)A.控制流B.数据流C.输入流D.输出流6.下面不属于结构化程序设计风格的是_。(分数:1.00)A.程序结构良好B.程序的易读性C.不滥用 goto 语句D.程序的执行效率7.软件测试的目的是_。(分数:1.00)A.避免程序中的错误B.修改程序中的错误C.发现程序中的错误D.发现和修改程序中的错
3、误8.能够减少相同数据重复存储的是_。(分数:1.00)A.记录B.字段C.文件D.数据库9.数据库管理系统(DBMS)是_。(分数:1.00)A.系统软件B.硬件系统C.一个完整的数据库应用系统D.既包括硬件也包括软件的系统10.在关系模式 A(S,SN,D)和 B(D,CN,NM)中,关系 A 的主键是 S,关系 B 的主键是 D,则属性 D 在关系A 中称为_。(分数:1.00)A.超键B.主键C.候选键D.外键11.以下叙述正确的是_。(分数:1.00)A.C 程序的执行是从源文件的开头,一行一行向下执行,每行都会被执行到B.对于只包含表达式语句的程序段,执行顺序与书写顺序一致C.C
4、程序的执行一定是从主函数开始,从主函数结束D.每个 C 源文件都应当有一个主函数12.以下选项中不是 C 语言数据类型的是_。(分数:1.00)A.intB.floatC.charD.string13.若有如下定义和语句: double x=1.5; x+; 则以下叙述中正确的是_。(分数:1.00)A.变量 x 经自增 1 运算后的值是 2.5B.x 是实型变量,不可以做自增 1 运算C.变量 x 经自增 1 运算后的值是 1.6D.变量 x 经自增 1 运算后的值是 2.014.若有程序段: int a,b;char d; scanf(“%d%c%d“, 若想把 12 输入给变量 a,字符
5、“k“输入给变量 d,34 输入给变量 b,程序运行时正确的输入是_。(分数:1.00)A.12“k“34B.12 k 34C.12k34D.12“k“3415.以下不能定义为用户标识符的是_。(分数:1.00)A.sizeofB.MainC._D._int16.以下说法正确的是_。(分数:1.00)A.C 语言中的常量是指在程序运行过程中经常被改变数据类型的量B.C 语言中的常量是指在程序运行过程中经常被改变值的量C.C 语言中的常量是指在程序运行过程中经常被用到的变量D.C 语言中的常量是指在程序运行过程中其值不能被改变的量17.有以下程序: #includestdio.h main()
6、int i,x,k=0,m; for(i=0;i5;i+) scanf(“%d“, x/=10; switch(x) case 0:case 1:case 2:k+;m=1; default:k+;m=2; case 3:k+;m=3; case 4:k+;m=4; printf(“%d,%d“,k,m); 程序运行时输入:35 20 52 40 106回车,则输出结果是_。(分数:1.00)A.5,2B.13,4C.15,2D.5,418.有如下程序: #includestdio.h main() int i; for(i=0;i3;i+) putchar(“K“-i); 程序运行后的输出结
7、果是_。(分数:1.00)A.012B.KLMC.LMND.KJI19.对于循环语句:for(i=0;i=10;i+);下面各选项中叙述错误的是_。(分数:1.00)A.省略 i+,可引起无限循环B.省略 i=10,可引起无限循环C.省略 i=0,可引起无限循环D.圆括号()内三个表达式都省略,可引起无限循环20.有以下程序: #includestdio.h main() int i=0,j=0,x=0; while(i2) x+; for(;j=3;j+) if(j%2)continue; x+; x+;i+; printf(“x=%d/n“,x); 程序运行后的输出结果是_。(分数:1.0
8、0)A.x=5B.x=4C.x=6D.x=821.以下叙述中错误的是_。(分数:1.00)A.while 语句的循环体至少会被执行一次B.break 语句只能在循环体内和 switch 语句体内使用C.执行 continue 语句时将跳过本次循环体中余下尚未执行的语句D.在 C 语言中有 3 种可以构成循环结构的循环语句:while、dowhile 和 for22.有下列程序: #includestdio.h main() int a=7,i; for(i=1;i=3;i+) if(a13)break; if(a%2)a+=3;continue; a=a+4; printf(“%d,%d“,i
9、,a); 程序执行后的输出结果是_。(分数:1.00)A.3,18B.3,14C.4,18D.2,1023.有如下程序: #includestdio.h void change(int *array,int len) for(;len=0;len-) arraylen+=2; main() int i,array6=1,2,3; change(array,5); for(i=0;i5;i+) printf(“%d,“,arrayi); 程序运行后的输出结果是_。(分数:1.00)A.1,2,0,0,0,B.3,4,5,6,7,C.2,3,4,5,6,D.3,4,5,2,2,24.有以下程序:
10、#includestdio.h int f1(int a) return a*3; int f2(int *b) return *b*5; main() int x=3,y=5; printf(“%d,%d/n“,f1(x),f2( 程序的运行结果是_。(分数:1.00)A.9,125B.9,25C.3,15D.3,4525.设有定义:int a10,*p=a,k; 以下为数组 a 的 10 个元素依次读入数据的程序段中错误的是_。(分数:1.00)A.for(k=0;k10;k+)scanf(“%d“,p+);B.for(k=0;k10;k+)scanf(“%d“,a+k);C.for(k=
11、0;k10;k+)scanf(“%d“,a+);D.for(;p-a10;p+)scanf(“%d“,p);26.有下列程序: #includestdio.h void fun(int a,int n,int flag) int i=0,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(flag(aiaj):(aiaj) t=ai;ai=aj;aj=t; main() int c10=7,9,10,8,3,5,1,6,2,4,i; fun(c,10,1); fun(c,5,0); for(i=0;i10;i+) printf(“%d,“,ci); 程序执行后的
12、输出结果是_。(分数:1.00)A.5,4,3,2,1,6,7,8,9,10,B.6,7,8,9,10,5,4,3,2,1,C.6,7,8,9,10,1,2,3,4,5,D.10,9,8,7,6,1,2,3,4,5,27.若函数 fun 定义如下 fun(void) double d; long t=rand(); d=t*0.618; return d; 则函数返回值的类型是_。(分数:1.00)A.voidB.doubleC.intD.long28.运算符内的数据类型只能是_。(分数:1.00)A.int 和 charB.floatC.doubleD.char29.若有定义语句:int x
13、3=1,2,3,4,5,6;,则以下选项中与该语句等价的是_。(分数:1.00)A.int x3=1,2,3,4,5,6;B.int x3=1,2,3,4,5,6;C.int x3=1,2,3,4,5,6;D.int x3=1,2,3,4,5,6;30.有以下程序: #includestdio.h #includestring.h main() char str10=“One“,“Three“,“Five“,*p=str0; printf(“%s,“,p+10); printf(“%d/n“,strlen(p+=10); 执行后的输出结果是_。(分数:1.00)A.Three,4B.出错C.T
14、hree,5D.Five,531.有以下程序: #includestdio.h main() char a510=“China“,“beijing“,“very“,“welcome“,“you“; char *p5;int i; for(i=3;i5;i+) pi=*(a+i); printf(“%s“,pi); printf(“%c“,*pi); 程序执行后的输出结果是_。(分数:1.00)A.wwyyB.ChinaCbeijingbC.veryvwelcomewD.welcomewyouy32.有如下程序: #includestdio.h #includestring.h main() c
15、har a=“THIS/0“,*b=“OK/0/0“; printf(“%d,%d,%d,%d“,strlen(a),sizeof(a),strlen(b),sizeof(b); 程序运行后的输出结果是_。(分数:1.00)A.4,6,2,4B.4,4,4,1C.6,5,2,1D.6,4,2,433.有以下程序: #includestdio.h main() char ca35=“A“,“BB“,“CCC“; char *pa3=“a“,“bb“,“ccc“; printf(“%d,%d/n“,sizeof(ca0),sizeof(pa0); 程序的运行结果是_。(分数:1.00)A.7,4B
16、.3,5C.5,4D.2,234.有如下程序: #includestdio.h #includestring.h main() char *str=“0/n0123/4“: printf(“%d“,strlen(str); 程序运行后的输出结果是_。(分数:1.00)A.3B.6C.8D.735.有以下程序: #includestdio.h int a5=7,10,3; int n=3; int *p=a; void main() int i; int a2=1,0; for(i=0;ai;i+) printf(“%4d“,ai); for(i=0;ai;i+) int a3=100,200,
17、300; printf(“%4d“,ai); printf(“/n“); 程序的运行结果是_。(分数:1.00)A.1 100B.1 0 100 200 300C.1 100 200 300D.1 100 20036.有以下程序: #includestdio.h void main() char ch7=“43ab21“; int i,s=0; for(i=0;chi=“0“i+=2) s=10*s+chi-“0“; printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:1.00)A.48B.12ba34C.4321D.437.有以下程序: #includestdio.h ma
18、in() int x=3,y=5,z1,z2; z1=xy;z2=x+y; printf(“%d,%d/n“,z1,z2); 程序执行后的输出结果是_。(分数:1.00)A.9,8B.8,8C.35,8D.6,838.有以下程序: #define Out(n)n%2=0“%c“:“%d“ #includestdio.h main() int x; for(x=65;x69;x+) printf(Out(x),x); 程序的运行结果是_。(分数:1.00)A.65867DB.A66C68C.65666768D.ABCD39.有如下程序: #includestdio.h street person
19、 char Name10; int Age; ; main() struct person room4=“Zun“,11,“Liu“,10,“He“,12,“Zhao“,13; printf(“%s:%d“,(room+3)-Name,(room+1)-Age); 程序运行后的输出结果是_。(分数:1.00)A.Liu:10B.Zun:12C.Zhao:10D.He:1140.有如下代码 #includestdio.h struct node char id; struct node *next; a=“A“,b=“B“,c=“C“,*p= main() p-next= p-next= p=p
20、-next; p-next=NULL; p= 若代码经运行后形成下图所示的数据结构: (分数:1.00)A.pt=p-next;p-next=p-next-next;free(pt);B.pt=p-next;p-next=p-next-next-next;free(pt);C.pt=free(pt);D.pt=p-next=p-next-next-next;free(pt);二、程序填空题(总题数:1,分数:18.00)41.下列给定程序中,函数 fun 的功能是:将 S 所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序。 例如,s 所指的字符串为“d
21、ef35adh3kjsdf7”,执行后结果为“defadhkjsdf3537”。 请在程序的下划线处填入正确的内容,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h void fun(char *s) int i,j=0,k=0; char t180,t280; for(i=0;si!=“/0“;i+) if(si=“0“ 1; else t1k+=si; t2j=0; t1k=0; for(i=0;ik;i+) 2; for(i=0;i 3;i+) sk+i=t2i; main() char s80=“ba
22、3a54j7sd567sdffs“; pfintf(“/nThe original string is:%s/n“,s); fun(s); pfintf(“/nThe result is:%s/n“,s); (分数:18.00)三、程序修改题(总题数:1,分数:18.00)42.下列给定程序中函数 fun 的功能是:用冒泡法对 6 个字符串按由小到大的顺序进行排序。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdlib.h #includestring.h #includeconio.h #
23、includestdio.h #define MAXLINE 20 fun(char *pstr6) int i,j; char *p; for(i=0;i5;i+) /*found*/ for(j=i+1,j6,j+) if(strcmp(*(pstr+i),(pstr+j)0) p=*(pstr+i); /*found*/ *(pstr+i)=pstr+j; *(pstr+j)=p; void main() int i; char *pstr6,str6MAXLINE; system(“CLS“); for(i=0;i6;i+) pstri=stri; printf(“/nEnter 6
24、string(1 string at each line):/n“); for(i=0;i6;i+) scanf(“%s“,pstri); fun(pstr); printf(“The strings after sorting:/n“); for(i=0;i6;i+) printf(“%s/n“,pstri); (分数:18.00)_四、程序设计题(总题数:1,分数:24.00)43.编写函数 fun,其功能是:求 ss 所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串“123412132”,输入字符为“1”,则输出 3。 注意:部分源程序给出如下。 请勿改动主函数 main 和
25、其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includestdlib.h #includeconio.h #includestdio.h #define M 81 int fun(char *ss,char c) void main() char aM,ch; system(“CLS“); printf(“/nPlease enter a string:“); gets(a); printf(“/nPlease enter a char:“); ch=getchar(); printf(“/nThe number of the char is:%d
26、/n“,fun(a,ch); (分数:24.00)_二级 C 语言真题 2017 年 09 月-(2)答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中错误的是_。(分数:1.00)A.向量是线性结构B.非空线性结构中只有一个根节点没有前件C.非空线性结构中只有一个终节点没有后件D.只有一个根节点和一个叶子节点的结构必定是线性结构 解析:解析 向量也是一种线性结构。非空线性结构中只有根节点无前件,只有终端节点无后件,其他所有节点只有一个前件也只有一个后件。二叉树可以只有一个根节点和一个叶子节点,但二叉树是非线性结构。故答案为 D 选项
27、。2.设顺序表的长度为 40,对该表进行冒泡排序。在最坏情况下需要的比较次数为_。(分数:1.00)A.820B.780 C.40D.41解析:解析 冒泡排序在最坏情况下,对长度为 n 的线性表排序,需要经过 n/2 遍的从前住后的扫描和n/2 遍的从后住前的扫描,需要比较的次数为 n(n-1)/2。本题中为 40(40-1)2=780。故答案为 B 选项。3.设二叉树的前序序列为 ABDEGHCFIJ,中序序列为 DBGEHACIFJ。则后序序列为_。(分数:1.00)A.DGHEBIJFCA B.JIHGFEDCBAC.GHIJDEFBCAD.ABCDEFGHIJ解析:解析 二叉树遍历可以
28、分为 3 种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。二叉树的前序遍历序列为 ABDEGHCFIJ,中序序列为 DBGEHACIFJ,可知该树 A 为根节点,右子树节点为 CFIJ,左子树节点为 BDEGH,则后序序列为 DGHEBIJFCA。故 A 选项正确。4.设表的长度为 n。在下列算法中,最坏情况下时间复杂度最高的是_。(分数:1.00)A.堆排序B.希尔排序 C.有序链表查找D.循环链表中寻找最大项解析:解析 最坏情况下,希尔排序所需要比较次数为 n 1.5 ,循环
29、链表中寻找最大项需要 n-1 次,有序链表查找需要 n 次,堆排序次数为 nlog 2 n。因此希尔排序复杂度最高。故答案为 B 选项。5.数据流图(DFD)中的有向箭头()表示_。(分数:1.00)A.控制流B.数据流 C.输入流D.输出流解析:解析 数据流图(DFD)中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。故答案为 B 选项。6.下面不属于结构化程序设计风格的是_。(分数:1.00)A.程序结构良好B.程序的易读性C.不滥用 goto 语句D.程序的执行效率 解析:解析 良好的程序设计风格可以使程序结构清晰合理,程序代码便于维护。按结构化程序设计方
30、法设计出的程序具有程序易于理解、使用和维护。可见结构化程序设计风格强调的是易读性。结构化程序设计的重要原则是自顶向下、逐步求精、模块化及限制使用 goto 语句。故答案为 D 选项。7.软件测试的目的是_。(分数:1.00)A.避免程序中的错误B.修改程序中的错误C.发现程序中的错误 D.发现和修改程序中的错误解析:解析 软件测试就是在软件投入运行之前,尽可能多地发现软件中的错误。故答案为 C 选项。8.能够减少相同数据重复存储的是_。(分数:1.00)A.记录B.字段C.文件D.数据库 解析:解析 数据库系统具有高共享性和低冗余性,不仅减少了不必要的存储空间,更为重要的是可能避免数据的不一致
31、性。故答案为 D 选项。9.数据库管理系统(DBMS)是_。(分数:1.00)A.系统软件 B.硬件系统C.一个完整的数据库应用系统D.既包括硬件也包括软件的系统解析:解析 数据库管理系统(DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。故答案为 A 选项。10.在关系模式 A(S,SN,D)和 B(D,CN,NM)中,关系 A 的主键是 S,关系 B 的主键是 D,则属性 D 在关系A 中称为_。(分数:1.00)A.超键B.主键C.候选键D.外键 解析:解析 候选键(码)是二维表中能唯一标识元组的最小属性集。若一个二维表有多个
32、候选码,则选定其中一个作为主键(码)供用户使用。若表 M 中的某属性集是表 N 的候选键或者主键,则称该属性集为表M 的外键(码)。本题中关系 A 中的属性 D 是关系 B 的主键,那么属性 D 是关系 A 的外键(码)。故答案为 D选项。11.以下叙述正确的是_。(分数:1.00)A.C 程序的执行是从源文件的开头,一行一行向下执行,每行都会被执行到B.对于只包含表达式语句的程序段,执行顺序与书写顺序一致 C.C 程序的执行一定是从主函数开始,从主函数结束D.每个 C 源文件都应当有一个主函数解析:解析 C 语言程序的执行是从 main()函数开始的,但不一定在 main()函数结束,在任何
33、其他地方可以调用 exit()函数结束程序的运行,选项 A、C 叙述错误;对于只包含表达式语句的程序段,执行顺序与书写顺序一致,选项 B 叙述正确;每个 C 语言程序都有且只有一个主函数,选项 D 叙述错误。故本题答案为 B 选项。12.以下选项中不是 C 语言数据类型的是_。(分数:1.00)A.intB.floatC.charD.string 解析:解析 C 语言的数据类型包括基本数据类型,即整型 int、实型 float 和 double、字符类型 char等。string 是 C+中的数据类型,不属于 C 语言的数据类型。故本题答案为 D 选项。13.若有如下定义和语句: double
34、 x=1.5; x+; 则以下叙述中正确的是_。(分数:1.00)A.变量 x 经自增 1 运算后的值是 2.5 B.x 是实型变量,不可以做自增 1 运算C.变量 x 经自增 1 运算后的值是 1.6D.变量 x 经自增 1 运算后的值是 2.0解析:解析 C 语言中自增自减运算符的运算对象可以是整型、实型、字符型、枚举型,作用就是对运算数进行自增 1 或自减 1,本题中的例子是将 double 类型的变量 x 自增 1,自增后 x 的值为 2.5。故本题答案为 A 选项。14.若有程序段: int a,b;char d; scanf(“%d%c%d“, 若想把 12 输入给变量 a,字符“
35、k“输入给变量 d,34 输入给变量 b,程序运行时正确的输入是_。(分数:1.00)A.12“k“34B.12 k 34C.12k34 D.12“k“34解析:解析 在本题中,scanf()函数的格式字符串有 3 个格式字符“%d%c%d”,它们之间没有任何间隔符,输入的数据顺序也应该是整数、字符、整数且之间不能有任何间隔符,所以选项 A、B、D 错误。故本题答案为 C 选项。15.以下不能定义为用户标识符的是_。(分数:1.00)A.sizeof B.MainC._D._int解析:解析 C 语言的标识符是由字母、数字、下划线构成的字符序列,必须以字母或下划线开头;它分为关键字、预定义标识
36、符和用户标识符,其中关键字是 C 语言定义的留着特殊用处的标识符,用户标识符是用户根据需要自己定义的标识符。用户标识符不能是关键字,选项 A 是关键字,不能定义为用户标识符;选项 B 中,Main 不同于 main,可以作为用户标识符;选项 C 的下划线满足用户标识符的要求;选项D 中,_int 以下划线开头,也满足用户标识符的要求。故本题答案为 A 选项。16.以下说法正确的是_。(分数:1.00)A.C 语言中的常量是指在程序运行过程中经常被改变数据类型的量B.C 语言中的常量是指在程序运行过程中经常被改变值的量C.C 语言中的常量是指在程序运行过程中经常被用到的变量D.C 语言中的常量是
37、指在程序运行过程中其值不能被改变的量 解析:解析 C 语言中的常量是指在程序运行过程中其值不能被改变的量,所以本题答案是 D 选项。17.有以下程序: #includestdio.h main() int i,x,k=0,m; for(i=0;i5;i+) scanf(“%d“, x/=10; switch(x) case 0:case 1:case 2:k+;m=1; default:k+;m=2; case 3:k+;m=3; case 4:k+;m=4; printf(“%d,%d“,k,m); 程序运行时输入:35 20 52 40 106回车,则输出结果是_。(分数:1.00)A.5
38、,2B.13,4 C.15,2D.5,4解析:解析 程序中 k 的初值为 0,for 循环每次输入一个整数赋给 x,然后执行 x/=10,x 除以 10 后赋给自身,switch 语句判断 x 的值,执行不同的 case 语句。当输入“35 20 52 40 106回车”时,i=0,x=35,x/=10 结果 x=3,执行 case 3,k=1,m=3,由于没有 break 语句,接着会执行 case 4,k=2,m=4;i=1,x=20,x/=10 结果 x=2,执行 case 2,k=3,m=1;再执行 default:k=4,m=2;再执行 case 3:k=5,m=3;再执行 case
39、 4:k=6,m=4;i=2,x=52,x/=10 结果 x=5,执行default:k=7,m=2;再执行 case 3:k=8,m=3;再执行 case 4:k=9,m=4;i=3,x=40,x/10 结果x=4,执行 case 4:k=10,m=4;i=4,x=106,x/10 结果 x=10,执行 default:k=11,m=2;再执行case3:k=12,m=3;再执行 case 4:k=13,m=4;最终程序输出:13,4。故本题答案为 B 选项。18.有如下程序: #includestdio.h main() int i; for(i=0;i3;i+) putchar(“K“-
40、i); 程序运行后的输出结果是_。(分数:1.00)A.012B.KLMC.LMND.KJI 解析:解析 字母字符的 ASCII 码是按字母顺序递增的,程序中 i=0 时,“K“-0 结果为“K“,输出“K“;i=1 时,“K“-1 结果为“J“,输出“J“;i=2 时,“K“-2 结果为“I“,输出“I“。故本题答案为 D 选项。19.对于循环语句:for(i=0;i=10;i+);下面各选项中叙述错误的是_。(分数:1.00)A.省略 i+,可引起无限循环B.省略 i=10,可引起无限循环C.省略 i=0,可引起无限循环 D.圆括号()内三个表达式都省略,可引起无限循环解析:解析 在本题中
41、,for 循环的第一个表达式 i=0 对循环变量 i 赋初值 0,第二个表达式 i=10 是判断循环条件是否满足,第三个表达式 i+是控制循环变量 i,完成 i 的自增运算。若省略 i+;那么 i的值永远等于 0,i=10 永远满足,循环无限执行,选项 A 正确;若省略 i=10,没有了循环条件,循环无限执行,选项 B 正确;若 3 个表达式都省略,同样没有循环条件,也可引起无限循环,选项 D 正确;若省略 i=0,那么 i 会有一个未知的值,若 i 的未知值小于 10,那么经过 n 轮循环,i 自增 n 后,i 的值就会大于 10,导致循环终止,所以省略 i=0 可能不会引起无限循环,选项
42、C 错误。故本题答案为 C 选项。20.有以下程序: #includestdio.h main() int i=0,j=0,x=0; while(i2) x+; for(;j=3;j+) if(j%2)continue; x+; x+;i+; printf(“x=%d/n“,x); 程序运行后的输出结果是_。(分数:1.00)A.x=5B.x=4C.x=6 D.x=8解析:解析 i、j、x 初值为 0,while 循环中首先将 x 自增 1,然后 for 循环判断 j 的值,若 j 的值为2 的倍数,那么 x 又自增 1,否则进入下一轮 for 循环,for 循环结束后再将 x、i 自增 1。
43、当 i=0 时,x+后 x 的值为 1,此时 j=0、2 都会执行 x+,x 的值为 3;for 循环执行完毕后 j 的值为 4,再执行 x+,x的值为 4;i=1 时,x+后 x 的值为 5,此时 j 的值为 4,for 循环不会执行,再执行 x+后 x 的值为 6。故本题答案为 C 选项。21.以下叙述中错误的是_。(分数:1.00)A.while 语句的循环体至少会被执行一次 B.break 语句只能在循环体内和 switch 语句体内使用C.执行 continue 语句时将跳过本次循环体中余下尚未执行的语句D.在 C 语言中有 3 种可以构成循环结构的循环语句:while、dowhil
44、e 和 for解析:解析 while 语句的循环体可能一次都不会执行,do.while 语句的循环体至少会执行一次,选项 A 叙述错误;break 语句是跳出当前的语句块,只能在循环体内和 switch 语句体内使用,选项 B 叙述正确;执行 continue 语句时将跳过本次循环体中余下尚未执行的语句,选项 C 叙述正确;在 C 语言中有3 种可以构成循环结构的循环语句:while、do.while 和 for,选项 D 叙述正确。故本题答案为 A 选项。22.有下列程序: #includestdio.h main() int a=7,i; for(i=1;i=3;i+) if(a13)br
45、eak; if(a%2)a+=3;continue; a=a+4; printf(“%d,%d“,i,a); 程序执行后的输出结果是_。(分数:1.00)A.3,18B.3,14 C.4,18D.2,10解析:解析 程序中,a 的初值为 7,for 循环中判断 a 的值,若 a 的值大于 13,那么执行 break 语句;若 a%2 为 1,a 自增 3 后执行 continue 语句;最后将 a 自增 4;i=1 时,a=7,a13 为假,不执行 break语句;a%2 为 1,a 自增 3,a 的值为 10,执行 continue 语句;i=2 时,a=10,a13 为假,不执行 break语句;a%2 为 0,执行 a=a+4,a 自增后值为 14;i=3 时,a=14,a13 为真,执行 break 语句;输出 i 的值为 3,a 的值为 14。故本题答案为 B 选项。23.有如下程序: #includestdio.h void change(int *array,int len) for(;len=0;len-) arraylen+=2; main() int i,array6=1,2,3; change(array,5); for(i=0;i5;i+) printf(“%d,“,arrayi); 程序运行后的输出结果是_。