1、二级 C 语言真题 2017 年 09 月-(1)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.设有一个栈与一个队列的初始状态均为空。现有一个序列的元素为 A,B,C,D,E,F,G,H,先分别将序列中的前 4 个元素依次入栈,后 4 个元素依次入队;然后分别将栈中的元素依次退栈,再将队列中的元素依次退队。最后得到的序列为_。(分数:1.00)A.A,B,C,D,H,G,F,EB.D,C,B,A,H,G,F,EC.A,B,C,D,E,F,G,HD.D,C,B,A,E,F,G,H2.设某棵树的度为 3,其中度为 2,1,0 的节点个数分别为
2、 3,4,15,则该树中总节点数为_。(分数:1.00)A.30B.22C.35D.不可能有这样的树3.设二叉树的前序序列为 ABDEGHCFIJ,中序序列为 DBGEHACIFJ。则按层次输出(从上到下,同一层从左到右)的序列为_。(分数:1.00)A.ABCDEFGHIJB.DCHEBIJFCAC.JIHGFEDCBAD.GHIJDEFBCA4.设顺序表的长度为 16,对该表进行简单插入排序。在最坏情况下需要的比较次数为_。(分数:1.00)A.15B.60C.30D.1205.软件系统总体结构图的作用是_。(分数:1.00)A.描述软件系统结构的图形工具B.描述软件系统的控制流C.描述软
3、件系统的数据流D.描述软件系统的数据结构6.不属于对象构成成份的是_。(分数:1.00)A.属性B.规则C.方法(或操作)D.标识7.十进制整数设为整数类,则下面属于类的实例的是_。(分数:1.00)A.-518B.0.518C.518E-2D5188.结构化程序设计原则强调的是_。(分数:1.00)A.自顶向下B.可封装性C.可复用性D.可恢复性9.违背数据流图(DFD)构造规则的是_。(分数:1.00)A.“加工”应既有输入又有输出B.“数据存储”间有数据流C.“数据流”应标识数据流名D.父图子图是指相邻上下两层的数据流图10.关系数据库规范化主要为克服数据库逻辑结构中的插入异常、删除异常
4、以及_。(分数:1.00)A.数据丢失的问题B.结构不合理的问题C.数据不一致的问题D.冗余度大的问题11.以下叙述中正确的是_。(分数:1.00)A.C 语言既可以用来编写系统软件,又可以用来编写应用软件B.机器中只要安装有任一种编译程序,就能对 C 源程序进行编译C.若程序中不使用 C 语言提供的库函数,则可以不运行连接程序D.调试程序时若发现语法错误,改正后即可直接运行,无需再次编译12.以下说法正确的是_。(分数:1.00)A.由 3 种基本结构组成的结构化程序只能解决一些简单的问题B.由 3 种基本结构组成的结构化程序可以解决任何复杂的问题C.由 3 种基本结构组成的结构化程序只能解
5、决那些可以结构化的问题D.由 3 种基本结构组成的结构化程序只能解决一些数学上有解析解的问题13.以下说法正确的是_。(分数:1.00)A.C 语言标识符中字母、数字和下划线字符必须同时出现B.C 语言标识符中仅出现下划线字符是不允许的C.C 语言标识符中可以出现多个字母、数字和下划线字符D.C 语言标识符中字母、数字和下划线字符不能同时出现14.以下属于 C 语言标识符的是_。 A_6_ B#6# C6 D (分数:1.00)A.B.C.D.15.以下不能作为合法常量的是_。(分数:1.00)A.1.234e0B.1.234e04C.1.234e+4D.1.234e0.416.设有如下语句:
6、 int k=0; k=printf(“OK/n“); 则以下叙述中正确的是_。(分数:1.00)A.printf 必须作为独立语句出现B.变量 k 得到的是输出的可见字符个数 2C.变量 k 得到的是输出字符的总个数 3D.变量 k 仍保持初值 017.以下说法正确的是_。(分数:1.00)A.赋值语句是一种可执行语句,应当出现在函数的可执行部分B.赋值语句可以出现在函数中的任意位置C.赋值语句可以出现在函数外单独执行D.赋值语句可以出现在源程序中的任意位置18.有以下程序: #includestdio.h main() char*s=“01234“; while(*(+s)!=“/0“)
7、switch(*s-“0“) case 0: case 1: putchar(*s+1);break; case 2: putchar(*s+1);break; case 3: putchar(*s+1); default: putchar(*s+1);break; 程序执行后的输出结果是_。(分数:1.00)A.22345B.2345C.12345D.2344519.有如下程序: #includestdio.h main() int i; for(i=0;i5;i+) putchar(“9“-i%2); 程序运行后的输出结果是_。(分数:1.00)A.98989B.98765C.“9“8“7
8、“6“5“D.“98989“20.以下关于 switch 语句的叙述中正确的是_。(分数:1.00)A.所有 case 的标号都应当是连续的B.每个 case 语句标号后面可以没有 break 语句C.char 型常量不能做 case 的标号使用D.default 必须放在全部 case 的最后21.有下列程序: #includestdio.h main() int a=6,i; for(i=1;i=3;i+) if(a5)break; if(a%2)a+=2;continue; a=a+4; printf(“%d,%d“,i,a); 程序执行后的输出结果是_。(分数:1.00)A.4,9B.
9、3,18C.4,18D.4,222.有以下程序: #includestdio.h main() int a=1,b=2,c=3; char flag; flag=b=2 switch(a) case 1:switch(flag) case 0: printf(“*“);break; case 1: printf(“%“);break; case 0: switch(c) case 1: printf(“$“);break; case 2: printf(“break; default: printf(“#“); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.*$B
10、.%#C.% for(;*s!=“/0“;s+) printf(“*“); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.*B.*C.*D.*24.以下正确的字符常量是_。(分数:1.00)A.“AB“B.“/0AB“C.“AB“D.“/xAB“25.有如下程序: #includestdio.h void fun(int *a, int *b) for(;(*a*b)|(getchar()!=“);) (*a)+;(*b)-; main() int i=0,j=5; fun( printf(“%d,%d/n“,i,j); 程序运行时在第一列开始输入: ab回车 则
11、运行结果是_。(分数:1.00)A.7,1B.3,2C.0,5D.5,026.有下列程序: #includestdio.h void swap(int *a,int *b) int *tp; tp=a;a=b;b=tp; printf(“%d,%d,“,*a,*b); main() int i=3,j=7,*p= swap(p,q); printf(“%d,%d“,*p,*q); 程序执行后的输出结果是_。(分数:1.00)A.3,7,7,3B.7,3,7,3C.3,7,3,7D.7,3,3,727.以下关于函数参数的叙述中,错误的是_。(分数:1.00)A.实参应与其对应的形参类型一致B.形
12、参可以是常量、变量或表达式C.实参可以是常量、变量或表达式D.形参可以是任意合法数据类型28.以下有关函数的叙述错误的是_。(分数:1.00)A.C 语言规定,不能在函数的内部定义函数B.在 C 语言的函数体中可以有多个 return 语句C.在 C 语言中函数的实参个数可以有多个,各实参之间用分号隔开D.C 语言程序总是从 main()函数开始执行29.以下关于指针的说法错误的是_。(分数:1.00)A.可以向指针中写入任意数据B.可以向指针所指内存单元中写入数据C.指针可以指向与其基类型相同的普通变量D.可以通过加法运算,使指针指向下一个内存单元30.有以下程序: #includestdi
13、o.h #define SWAT(t,a,b)t=a;a=b;b=t; main() int x=6,y=4,z=3,s=0; if(xy)SWAT(s,x,y); if(xz)SWAT(s,x,z); if(yz)SWAT(s,y,z); printf(“%d,%d,%d/n“,x,y,z); 执行后的输出结果是_。(分数:1.00)A.6,4,3B.3,4,6C.0,3,4D.3,0,031.有以下程序: #includestdio.h int f(int x,int n) if(n1) return f(x,n-1)+xn-1*10; else return x0; main() int
14、 a6=1,2,3,4,y; y=f(a,4); printf(“%d“,y); 程序执行后的输出结果是_。(分数:1.00)A.91B.4321C.1234D.1032.有如下程序: #includestdio.h void get_put() char ch; ch=getehar(); if(eh!=“/n“)get_put(); putchar(ch); main() get_put(); 程序运行时,输入 AB12回车,则输出结果是_。(分数:1.00)A.2100B.21BAC.DCBAD.21AB33.有以下程序: #includestdio.h #includestring.h
15、 void fun(char *s) int len; len=strlen(s); if(len2)fun(s+2); putchar(*s); void main() char *p=“abcdefg“: fun(p); putchar(“/n“); 程序的运行结果是_。(分数:1.00)A.abcdefgB.gfedcbaC.gecaD.aceg34.有如下程序: #includestdio.h void convert(char ch) printf(“%c“,ch); if(ch“5“)convert(ch+1); main() convert(“0“); 程序运行后的输出结果是_。
16、(分数:1.00)A.5B.123456C.012345D.0123435.有以下程序: #includestdio.h int mm; int func(int a) static int n=3; int i; for(i=1; ia;i+) n=n*a; return n; void main() int a; mm=func(2); a=func(3); printf(“%d%d/n“,mm,a); 程序的运行结果是_。(分数:1.00)A.6 34B.9 729C.3 9D.6 5436.有以下程序: #includestdio.h int fun(char *p) if(*p=0)
17、return 0; fun(p+1); putchar(*p); return 0; main() char ch=“ABCD“; fun(ch); 程序运行后的输出结果是_。(分数:1.00)A.DCBAB.BCDC.ABCDDD37.有以下程序: #includestdio.h int fun(int x, int y) static int m=0,i=2; i+=m+1;m=i+x+y; return m; void main() int j=1,m=1,k; k=fun(j,m); printf(“%d,“,k); k=fun(j,m); printf(“%d/n“,k); 程序运行
18、后的输出结果是_。(分数:1.00)A.5,5B.5,11C.11,11D.11,538.有下列程序: #includestdio.h #includestring.h main() char a510=“efg“,“abcd“,“mnopq“,“hijkl“,“rstuvwxyz“; char *p5; int i,len; for(i=4;i=0;i-) pi=ai; len=strlen(pi); printf(“%s“,pi+len-2); printf(“%c“,(pi+len-1); 程序执行后的输出结果是_。(分数:1.00)A.fggcddpqqkllyzzB.yzzkllpq
19、qcddfggC.yzyklkpqpcdcfgfD.fgfcdepqpklkyzy39.有以下程序: #includestdio.h typedef struct book char name50; double price; BOOK; void fun(BOOK *pd,int num,int size); void main() BOOK data10=“photoshop“,26.8,“计算机原理“,15.00,“数据结构“,35.6; int n=3,m=10; fun(data,n,m); printf(“%s,%s/n“,data8.name,data9.name); void
20、fun(BOOK*pd,int num,int size) int i,j,t; double mx,mn; mx=mn=pd0.price; j=t=0; for(i=1;inum;i+) if(pdi.pricemx) mx=pdi.price;j=i; if(pdi.pricemn) mn=pdi.price;t=i; pdsize-2=pdj; pdsize-1=pdt; 程序的运行结果是_。(分数:1.00)A.数据结构,计算机原理B.计算机原理,数据结构C.photoshop,计算机原理D.数据结构,photoshop40.有下列程序: #includestdio.h #inclu
21、destring.h typedef struct stu char name9; char gender; int score; STU; void f(STU *a) STU c=“Sun“,“f,90,*d= a=d; strcpy(a-name,c.name); a-gender=c.gender; a-score=c.score: printf(“%s,%c,%d,“,a-name,a-gender,a-score); main() STU a=“Zhao“,“m“,85; f( printf(“%s,%c,%d“,a.name,a.gender,a.score); 程序执行后的输出
22、结果是_。(分数:1.00)A.Zhao,m,85,Sun,f,90B.Sun,f,90,Sun,f,90C.Sun,f,90,Zhao,m,85D.Zhao,m,85,Zhao,m,85二、程序填空题(总题数:1,分数:18.00)41.下列给定程序中已建立一个带头节点的单向链表,链表中的各节点按节点数据域中的数据递增有序链接。函数 fun 的功能是:把形参 x 的值放入一个新节点并插入链表中,使插入后各节点数据域中的数据仍保持递增有序。 请在程序的下划线处填入正确的内容,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #include
23、stdio.h #includestdlib.h #define N 8 typedef struet list int data; struet list *next; SLIST; void fun(SLIST *h,int x) SLIST *p,*q,%s; s=(SLIST *)malloe(sizeof(SLIST); /*found*/ s-data= 1; q=h; p=h-next; while(p!=NULL p=p-next; s-next=p; /*found*/ q-next= 3; SLIST *creatlist(int *a) SLIST *h,*p,*q;in
24、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(“/nThe list is NULL!/n“); else printf(“/nHead“); do printf(“-%d“,p-data); p=p-next; while(p!=NULL); printf(
25、“-End/n“); main() SLIST *head; int x; int aN=11,12,15,18,19,22,25,29; head=creatlist(a); printf(“/nThe list before inserting:/n“); outlist(head); printf(“/nEnter a number:“); scanf(“%d“, fun(head,x); printf(“/nThe list after inserting:/n“); outlist(head); (分数:18.00)三、程序修改题(总题数:1,分数:18.00)42.下列给定程序中函
26、数 fun 的功能是:计算正整数 nun 各位上的数字之积。 例如,若输入 252,则输出应该是 20。若输入 202,则输出应该是 0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h #includeconio.h long fun(long num) /*found*/ long k; do k*=num%10; /*found*/ num/=10; while(num); return(k); main() long n; printf(“/n please enter a
27、number:“); scanf(“%ld“, printf(“/n%ld/n“,fun(n); (分数:18.00)_四、程序设计题(总题数:1,分数:24.00)43.编写函数 fun,其功能是:计算 n 门课程的平均分,结果作为函数值返回。 例如,若有 5 门课程的成绩是:90.5,72,80,61.5,55,则函数的值为 71.80。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includestdio.h float fun(float *a,int n) void main() fl
28、oat score30=90.5,72,80,61.5,55,aver; aver=fun(score,5); printf(“/nAverage score is:%5.2f/n“,aver); (分数:24.00)_二级 C 语言真题 2017 年 09 月-(1)答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.设有一个栈与一个队列的初始状态均为空。现有一个序列的元素为 A,B,C,D,E,F,G,H,先分别将序列中的前 4 个元素依次入栈,后 4 个元素依次入队;然后分别将栈中的元素依次退栈,再将队列中的元素依次退队。最后得到的序列为_
29、。(分数:1.00)A.A,B,C,D,H,G,F,EB.D,C,B,A,H,G,F,EC.A,B,C,D,E,F,G,HD.D,C,B,A,E,F,G,H 解析:解析 栈的特点是先进后出,而队列的特点是先进先出。前 4 个元素依次进栈为 ABCD,出栈后为DCBA,后 4 个元素入队列为 EFGH,出队列也是 EFGH,最后得到的序列为 DCBAEFGH。故 D 选项正确。2.设某棵树的度为 3,其中度为 2,1,0 的节点个数分别为 3,4,15,则该树中总节点数为_。(分数:1.00)A.30B.22C.35D.不可能有这样的树 解析:解析 在树结构中,一个节点所拥有的后件个数称为该节点
30、的度,所有节点中最大的度称为树的度,树中的节点数即为树中所有节点的度数之和再加 1。假设度为 3 的节点数为 n,总节点数为m,m=3n+23+14+1,叶子节点数 15=m-(3+4+n)。得 m=3n+11,2n=11,n 无法得到整数,说明不可能存在这样的树。故答案为 D 选项。3.设二叉树的前序序列为 ABDEGHCFIJ,中序序列为 DBGEHACIFJ。则按层次输出(从上到下,同一层从左到右)的序列为_。(分数:1.00)A.ABCDEFGHIJ B.DCHEBIJFCAC.JIHGFEDCBAD.GHIJDEFBCA解析:解析 二叉树遍历可以分为 3 种:前序遍历(访问根节点在访
31、问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。二叉树的前序遍历序列为 ABDEGHCFIJ,中序序列为 DBGEHACIFJ,可知该树 A 为根节点,右子树节点为 CFIJ,左子树节点为 BDEGH。从顶向下从左向右依次为 ABCDEFGHIJ,A 选项正确。4.设顺序表的长度为 16,对该表进行简单插入排序。在最坏情况下需要的比较次数为_。(分数:1.00)A.15B.60C.30D.120 解析:解析 简单插入排序在最坏情况下,即初始排序序列是逆序的情况下,比较次数为 n(n-1)/2,移动次数为 n
32、(n-1)/2。本题中即 16(16-1)2=815=120。故答案为 D 选项。5.软件系统总体结构图的作用是_。(分数:1.00)A.描述软件系统结构的图形工具 B.描述软件系统的控制流C.描述软件系统的数据流D.描述软件系统的数据结构解析:解析 软件系统总体结构图是描述软件系统结构的图形工具,它包括软件系统的控制流、软件系统的数据流、软件系统的数据结构等。故答案为 A 选项。6.不属于对象构成成份的是_。(分数:1.00)A.属性B.规则 C.方法(或操作)D.标识解析:解析 一个对象通常可由对象名、属性和操作 3 部分组成,对象名唯一标识一个对象。故答案为B 选项。7.十进制整数设为整
33、数类,则下面属于类的实例的是_。(分数:1.00)A.-518 B.0.518C.518E-2D518解析:解析 类是具有共同属性、共同方法的对象的集合。-518 是整数,0.518 是浮点数,518E-2 是指数。故答案为 A 选项。8.结构化程序设计原则强调的是_。(分数:1.00)A.自顶向下 B.可封装性C.可复用性D.可恢复性解析:解析 结构化程序设计的原则强调自顶向下、逐步求精、模块化、限制使用 goto 语句。故答案为A 选项。9.违背数据流图(DFD)构造规则的是_。(分数:1.00)A.“加工”应既有输入又有输出B.“数据存储”间有数据流 C.“数据流”应标识数据流名D.父图
34、子图是指相邻上下两层的数据流图解析:解析 数据流图(DFD)应遵循以下构造规则。 对加工处理建立唯一、层次性的编号,且每个加工处理通常要求既有输入又有输出。 数据存储之间不应有数据流。 “数据流”应标识数据流名,数据流图的一致性,即输入输出、读写的对应。 父图、子图关系与平衡规则。相邻两层 DFD 之间具有父子关系,子图代表父图中某个加工的详细描述,父图代表子图间的接口。子图个数不大于父图中的处理个数。所有子图的输入输出数据流和父图中相应处理的输入输出数据流必须一致。故本题答案为 B 选项。10.关系数据库规范化主要为克服数据库逻辑结构中的插入异常、删除异常以及_。(分数:1.00)A.数据丢
35、失的问题B.结构不合理的问题C.数据不一致的问题D.冗余度大的问题 解析:解析 规范化主要为克服数据库逻辑结构中的插入异常、删除异常、数据冗余以及修改异常。故本题答案为 D 选项。11.以下叙述中正确的是_。(分数:1.00)A.C 语言既可以用来编写系统软件,又可以用来编写应用软件 B.机器中只要安装有任一种编译程序,就能对 C 源程序进行编译C.若程序中不使用 C 语言提供的库函数,则可以不运行连接程序D.调试程序时若发现语法错误,改正后即可直接运行,无需再次编译解析:解析 C 语言既可以用来编写系统软件,又可以用来编写应用软件,选项 A 正确;机器中必须安装 C 语言的编译程序,才能对
36、C 源程序进行编译,选项 B 错误;C 语言源程序中函数的定义和调用不在同一个源文件,就需要使用链接程序,选项 C 错误;调试程序时若发现语法错误,改正后需要重新再次编译,选项 D 错误。本题答案为 A 选项。12.以下说法正确的是_。(分数:1.00)A.由 3 种基本结构组成的结构化程序只能解决一些简单的问题B.由 3 种基本结构组成的结构化程序可以解决任何复杂的问题 C.由 3 种基本结构组成的结构化程序只能解决那些可以结构化的问题D.由 3 种基本结构组成的结构化程序只能解决一些数学上有解析解的问题解析:解析 由 3 种基本结构组成的算法可以解决任何复杂的问题,由 3 种基本结构所构成
37、的算法称为结构化算法,由 3 种基本结构所构成的程序称为结构化程序,故本题答案为 B 选项。13.以下说法正确的是_。(分数:1.00)A.C 语言标识符中字母、数字和下划线字符必须同时出现B.C 语言标识符中仅出现下划线字符是不允许的C.C 语言标识符中可以出现多个字母、数字和下划线字符 D.C 语言标识符中字母、数字和下划线字符不能同时出现解析:解析 C 语言中合法的标识符命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,选项 A、B、D 错误。故本题答案为 C 选项。14.以下属于 C 语言标识符的是_。 A_6_ B#6# C6 D (分数:1.00)A
38、. B.C.D.解析:解析 C 语言中合法的标识符命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,选项 B 中的“#”不合法;选项 C 中的“”不合法;选项 D 中的“$”不合法。故本题答案为 A 选项。15.以下不能作为合法常量的是_。(分数:1.00)A.1.234e0B.1.234e04C.1.234e+4D.1.234e0.4 解析:解析 实数的指数形式为:尾数 E(e)整型指数,其中字母 E 或 e 之前必须要有数字,E 或 e 后面的指数必须是整数。选项 A、B、C 都正确;选项 D 中 e 后面的指数是小数,不合法。故本题答案为 D 选项。16.
39、设有如下语句: int k=0; k=printf(“OK/n“); 则以下叙述中正确的是_。(分数:1.00)A.printf 必须作为独立语句出现B.变量 k 得到的是输出的可见字符个数 2C.变量 k 得到的是输出字符的总个数 3 D.变量 k 仍保持初值 0解析:解析 printf()函数的原型如下: extern int printf(const char *format,.); 它是有返回值的,返回值是打印出来的字符个数,题意中的字符串“OK/n”输出 3 个字符,所以 k 的值为3。故本题答案为 C 选项。17.以下说法正确的是_。(分数:1.00)A.赋值语句是一种可执行语句,
40、应当出现在函数的可执行部分 B.赋值语句可以出现在函数中的任意位置C.赋值语句可以出现在函数外单独执行D.赋值语句可以出现在源程序中的任意位置解析:解析 在赋值表达式的尾部加上分号就构成了赋值语句,赋值语句是一种可执行语句,应当出现在函数的可执行部分。故本题答案为 A 选项。18.有以下程序: #includestdio.h main() char*s=“01234“; while(*(+s)!=“/0“) switch(*s-“0“) case 0: case 1: putchar(*s+1);break; case 2: putchar(*s+1);break; case 3: putch
41、ar(*s+1); default: putchar(*s+1);break; 程序执行后的输出结果是_。(分数:1.00)A.22345B.2345C.12345D.23445 解析:解析 程序首先定义一个字符指针 s,指向一个常量字符串“01234”;接着 while 循环的循环条件每次将 s 指向下一个字符,然后判断 s 指向的字符是否为空字符“/0“,若不是,则执行循环体,将当前字符与“0“的 ASCII 码差值作为 switch 语句的常量表达式,执行对应的 case 语句;若是则终止循环,程序结束。所以对于常量字符串“01234”可知:循环过程中 s 指向的各个字符分别是:“1“、
42、“2“、“3“、“4“,当*s 是“1“时,*s-“0“的值为 1,执行 case 1 语句,输出*s+1 即字符“2“;当*s 是“2“时,*s-“0“的值为 2,执行 case 2 语句,输出*s+1 即字符“3“;当*s 是“3“时,*s-“0“的值为 3,执行case 3 和 default 语句,两次输出*s+1 级字符“4“;当*s 是“4“时,*s-“0“的值为 4,执行 default 语句,输出*s+1 即字符“5“;综上所述程序输出结果为:23445。故本题答案为 D 选项。19.有如下程序: #includestdio.h main() int i; for(i=0;i5
43、;i+) putchar(“9“-i%2); 程序运行后的输出结果是_。(分数:1.00)A.98989 B.98765C.“9“8“7“6“5“D.“98989“解析:解析 main()函数中,for 循环遍历 i 的值为 0、1、2、3、4,每次遍历调用 putchar()函数输出表达式“9“-i%2 的结果,由运算符优先级可知表达式“9“-i%2 首先计算 i%2 的值,再执行减法操作,所以当 i 取值为偶数时,i%2 的值为 0,“9“-0 结果为“9“;当 i 取值为奇数时,i%2 的值为 1,“9“-1 结果为“8“,所以程序输出结果为 98989。故本题答案为 A 选项。20.以
44、下关于 switch 语句的叙述中正确的是_。(分数:1.00)A.所有 case 的标号都应当是连续的B.每个 case 语句标号后面可以没有 break 语句 C.char 型常量不能做 case 的标号使用D.default 必须放在全部 case 的最后解析:解析 switch 语句中,case 标号不需要是连续的,选项 A 错误;每个 case 语句标号后面可以没有 break 语句,此时程序会接着执行下一个 case 语句,选项 B 正确;case 标号后必须是常量表达式,可以是整型、char 型、枚举型或常量表达式,选项 C 错误;default 标号可以出现在 switch 语
45、句体中任何标号位置上,选项 D 错误。故本题答案为 B 选项。21.有下列程序: #includestdio.h main() int a=6,i; for(i=1;i=3;i+) if(a5)break; if(a%2)a+=2;continue; a=a+4; printf(“%d,%d“,i,a); 程序执行后的输出结果是_。(分数:1.00)A.4,9B.3,18C.4,18 D.4,2解析:解析 main()函数中,a 的初值为 6,for 循环首先判断 i 的值是否小于 5,若小于 5。执行 break语句终止循环;若不小于 5,接着判断 a 的奇偶性,若 a 是奇数,将 a 自增
46、 2 后执行 continue 语句,执行下一轮循环;若 a 是偶数,将 a 自增 4;可见无论程序如何执行,a 的值只会增不会减。所以 for 循环过程中,两个 if 语句都不会执行,每次都是将 a 自增 4,又由 i 取值可以是 1,2,3 知变量 a 一共自增3 次,最终 i 的值为 4,a 的值为 18。故本题答案为 C 选项。22.有以下程序: #includestdio.h main() int a=1,b=2,c=3; char flag; flag=b=2 switch(a) case 1:switch(flag) case 0: printf(“*“);break; case 1: printf(“%“);break; case 0: switch(c) case 1: printf(“$“);break; case 2: printf(“break; default: printf