1、二级 C语言分类模拟题 532及答案解析(总分:55.50,做题时间:90 分钟)一、选择题(总题数:35,分数:55.50)1.有以下程序: #includestdio.h main() int m=1, n=2, *p= r=p; p=q; q=r; printf(“%d, %d, %d, %d/n“, m, n, *p, *q); 程序运行后的输出结果是_。(分数:1.00)A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,12.以下叙述中正确的是_。(分数:1.00)A.continue语句使得整个循环终止B.break语句不能用于提前结束 for语句的本层循环C.
2、使用 break语句可以使流程跳出 switch语句体D.在 for语句中,continue 与 break的效果是一样的,可以互换3.有以下程序: int f1(double a) return a*a; int f2(int x,int y) double a,b; a=f1(x); b=f1(y); return a+b; main() double w; w=f2(2.1,4.0); ) 变量 w的值是_。(分数:2.00)A.20.21B.20C.20.0D.0.04.关于字符常量,以下叙述正确的是_。(分数:2.00)A.空格不是一个字符常量B.字符常量能包含大于一个的字符C.单引
3、号中的大写字母和小写字母代表的是相同的字符常量D.所有的字符常量都可以作为整型量来处理5.有以下程序: #include stdio.h main( ) int i,t3=9,8,7,6,5,4,3,2,1; for(i=0;i3;i+ +) printf(“%d“,t2-ii); 程序执行后的输出结果是_。(分数:2.50)A.3 5 7B.7 5 3C.3 6 9D.7 5 16.有以下程序: #include stdio.h main() int x=102,y=012; printf(“%2d,%2d/n“,x,y); 执行后的输出结果是 _ 。(分数:1.00)A.10,01B.02
4、,12C.102,10D.02,107.以下能正确定义二维数组的是_。(分数:1.00)A.int a3;B.int a3=2*3;C.int a3=;D.int a23=1),2,3,4);8.有如下程序: #include stdio.h main() char ch=“M“; while(ch !=“K“) ch-; putchar(ch); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.MNB.LKC.OPD.MM9.C语言中,凡未指定存储类别的局部变量的隐含存储类别是_。(分数:2.00)A.自动(auto)B.静态(static)C.外部(extern
5、)D.寄存器(register)10.有以下程序 #include stdio.h main() int k=10; printf(“%4d, %o, %x/n“, k, k, k); 程序的运行结果是(代表一个空格)(分数:2.00)A.10,12,aB.10,012,aC.010,12,aD.10,12,a11.下面程序的输出结果是_。 typedef union double x3; int y4; char z10; M; M t; main() printf(“%dkn“,sizeof(t);(分数:2.00)A.32B.26C.24D.412.C语言中的简单数据类型有(分数:2.0
6、0)A.整型、实型、逻辑型B.整型、实型、字符型C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型13.设有:char s5, c;,则调用函数 scanf能正确给 s和 c读入数据的是(分数:2.00)A.scanf(“%s%c“, s, c);B.scanf(“%d%c“, C.scanf(“%d%c“, s, D.scanf(“%s%c“, s, 14.以下选项中非法的 C语言字符常量是_。(分数:2.50)A.“aa“B.“/b“C.“/007“D.“/xaa“15.以下选项中能表示合法常量的是_。(分数:1.00)A.整数:1,200B.实数:1.5E2.0C.字符斜杠:“D.字
7、符串:“/007“16.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:1.00)A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA17.有以下程序段: int i,n; for(i=0;i8;i+) n=rand()%5; switch(n) case 1: case 3:printf(“%d/n“,n); break; case 2: case 4:printf(“%d/n“,n); continue; case 0:exit(0); printf(“%d/n“,n
8、); 以下关于程序段执行情况的叙述,正确的是_。(分数:1.00)A.for循环语句固定执行 8次B.当产生的随机数 n为 4时结束循环操作C.当产生的随机数 n为 1和 2时不做任何操作D.当产生的随机数 n为 0时结束程序运行18.以下叙述中正确的是_。(分数:4.00)A.构成 C程序的基本单位是函数B.可以在一个函数中定义另一个函数C.main函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义19.在数据结构中,从逻辑结构上看可以分成_。(分数:2.00)A.动态结构和静态结构B.线性结构和非线性结构C.内部结构和外部结构D.紧凑结构和非紧凑结构20.有以下程序: #
9、include stdio.h int f(int n); main() int a=3, s; s=f(a); s=s+f(a); printf(“%d/n“, s); int f(int n) static int a =1; n+=a+; return n; 程序运行后的输出结果是_。(分数:2.00)A.9B.8C.7D.1021.avg功能是求整形数组中的前若干个元素的平均值,设数组元素个数最多不超过 10,则下列函数说明语句错误的是_。(分数:1.00)A.int avg(int*a,int n);B.int avg(int a10,int n);C.int avg(int a,i
10、nt n);D.int avg(int a,int n);22.下面结构体的定义语句中,错误的是_。(分数:1.00)A.struct ordint x;int y;int z;struct ord a;B.struct ordint x;int y;int z;struct ord a;C.struct ordint x;int y;int z;a;D.structint x;int y;int z;a;23.有以下程序: #includestdio.h main() int k=-3; if(k=0)printf(“*/n“) else printf(“ 程序的输出结果是_。(分数:2.5
11、0)A.输出#B.输出 x=y=1; z=x+,y+,+y; printf(“%d,%d,%d/n“,x,y,z); 程序运行后的输出结果是_。(分数:1.00)A.2,3,1B.2,3,2C.2,3,3D.2,2,126.设 a、b、c、d、m、n 均为 int型变量,且 a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=ab)while(y-); printf(“y=%d/n“, y); 程序执行后的输出结果是_。(分数:1.00)A.y=0B.y=-1C.y=1D.while构成无限循环30.数据库系统在其内部具有 3级模式,用来描述数据库中全体数据的全局逻辑结构和特性的
12、是_。(分数:2.50)A.外模式B.概念模式C.内模式D.存储模式31.下面程序的输出结果是( )。 main() struct m1int a;int b;en2=1,3,2,7); printf(“%d/n“,en0.b/en0.a*en1.a);(分数:1.00)A.6B.0C.1D.332.有以下程序: #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=5
13、B.x=4C.x=6D.x=833.下面不能作为结构化方法软件需求分析工具的是_。(分数:1.00)A.系统结构图B.数据字典(DD)C.数据流程图(DFD 图)D.判定表34.以下选项中,合法的 C语言常量是_。(分数:1.00)A.21.84B.“CPP“C.“/1.0D.2MB35.结构化分析可以使用的工具是(分数:2.00)A.N-S图B.DFD图C.PAD图D.程序流程图二级 C语言分类模拟题 532答案解析(总分:55.50,做题时间:90 分钟)一、选择题(总题数:35,分数:55.50)1.有以下程序: #includestdio.h main() int m=1, n=2,
14、*p= r=p; p=q; q=r; printf(“%d, %d, %d, %d/n“, m, n, *p, *q); 程序运行后的输出结果是_。(分数:1.00)A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,1 解析:解析 int m=1, n=2, *p= int f2(int x,int y) double a,b; a=f1(x); b=f1(y); return a+b; main() double w; w=f2(2.1,4.0); ) 变量 w的值是_。(分数:2.00)A.20.21B.20C.20.0 D.0.0解析:4.关于字符常量,以下叙述正确的
15、是_。(分数:2.00)A.空格不是一个字符常量B.字符常量能包含大于一个的字符C.单引号中的大写字母和小写字母代表的是相同的字符常量D.所有的字符常量都可以作为整型量来处理 解析:5.有以下程序: #include stdio.h main( ) int i,t3=9,8,7,6,5,4,3,2,1; for(i=0;i3;i+ +) printf(“%d“,t2-ii); 程序执行后的输出结果是_。(分数:2.50)A.3 5 7 B.7 5 3C.3 6 9D.7 5 1解析:解析 二维数组 t3实际上指 t33=9,8,7,6,5,4,3,2,1,通过循环语句 for语句可以得到 i=
16、0,t20=3;i=1,t11=5;i=2,t02=7;i=3时循环结束,即 t20=3,t11=5,t02=7。因此 A选项正确。6.有以下程序: #include stdio.h main() int x=102,y=012; printf(“%2d,%2d/n“,x,y); 执行后的输出结果是 _ 。(分数:1.00)A.10,01B.02,12C.102,10 D.02,10解析:解析 y=012 是将八进制数 12赋给变量 y。格式符%d,用于输出十进制整数;%md,m 为指定的输出值的宽度,如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出。本题是将八进制数 12
17、也按十进制数输出,八进制数 12转换为十进制数为 10,输出结果为 102,10。7.以下能正确定义二维数组的是_。(分数:1.00)A.int a3;B.int a3=2*3;C.int a3=;D.int a23=1),2,3,4); 解析:解析 本题中,A、B、C 选项犯了同样的错误,没有对数组 a的第一个下标进行初始化,不能正确地申请空间,因此是错误的,而在 D选项中,数组的存放形式是:1,0,0),2,0,0,3,4,0。8.有如下程序: #include stdio.h main() char ch=“M“; while(ch !=“K“) ch-; putchar(ch); pr
18、intf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.MNB.LK C.OPD.MM解析:解析 字符之间做加减法,是用其 ASCII码进行加减,但是不能超过范围 0255,否则不是合法的字符。while 循环语句一般形式为:while(表达式)循环体,执行过程为,首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环。程序执行过程为:定义字符变量 ch=“M“,判断 ch !=“K“成立,ch=“L“,输出 L;判断 ch !=“K“成立,ch=“K“,输出 K;判断 ch!=“K“不成立,退出循环。程序运行后的输出结果是 LK,故 B选项正确。9.C语言中,凡未指
19、定存储类别的局部变量的隐含存储类别是_。(分数:2.00)A.自动(auto) B.静态(static)C.外部(extern)D.寄存器(register)解析:10.有以下程序 #include stdio.h main() int k=10; printf(“%4d, %o, %x/n“, k, k, k); 程序的运行结果是(代表一个空格)(分数:2.00)A.10,12,aB.10,012,aC.010,12,aD.10,12,a 解析:11.下面程序的输出结果是_。 typedef union double x3; int y4; char z10; M; M t; main()
20、printf(“%dkn“,sizeof(t);(分数:2.00)A.32B.26C.24 D.4解析:12.C语言中的简单数据类型有(分数:2.00)A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型解析:13.设有:char s5, c;,则调用函数 scanf能正确给 s和 c读入数据的是(分数:2.00)A.scanf(“%s%c“, s, c);B.scanf(“%d%c“, C.scanf(“%d%c“, s, D.scanf(“%s%c“, s, 解析:14.以下选项中非法的 C语言字符常量是_。(分数:2.50)A.“aa“ B
21、.“/b“C.“/007“D.“/xaa“解析:解析 单引号括起来一个字符表示字符常量,A 选项单引号引住两个字符,不合法,所以选择 A。15.以下选项中能表示合法常量的是_。(分数:1.00)A.整数:1,200B.实数:1.5E2.0C.字符斜杠:“D.字符串:“/007“ 解析:解析 选项 A:整数中不能用逗号分隔,选项 B:实数中 E后数值必须是整数,选项 C:C 语言里字符串中的字符“/”需转义,应为“/”。16.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:1.00)A.12345ABCDEB.EDC
22、BA54321 C.ABCDE12345D.54321EDCBA解析:解析 栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择 B选项。17.有以下程序段: int i,n; for(i=0;i8;i+) n=rand()%5; switch(n) case 1: case 3:printf(“%d/n“,n); break; case 2: case 4:printf(“%d/n“,n); continue; case 0:exit(0); printf(“%d/n“,n); 以下关于程序段执行情况的叙述,正确的是_。(分数:1.00)A.for循环语句固定执行 8次 B.当产生的
23、随机数 n为 4时结束循环操作C.当产生的随机数 n为 1和 2时不做任何操作D.当产生的随机数 n为 0时结束程序运行解析:解析 程序中的 for循环是固定地执行 8次,属于计数器,程序是从中随机抽取一个数,然后对5进行求余再输出,共抽取 8个数。所以答案为 A。18.以下叙述中正确的是_。(分数:4.00)A.构成 C程序的基本单位是函数 B.可以在一个函数中定义另一个函数C.main函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义解析:19.在数据结构中,从逻辑结构上看可以分成_。(分数:2.00)A.动态结构和静态结构B.线性结构和非线性结构 C.内部结构和外部结构
24、D.紧凑结构和非紧凑结构解析:20.有以下程序: #include stdio.h int f(int n); main() int a=3, s; s=f(a); s=s+f(a); printf(“%d/n“, s); int f(int n) static int a =1; n+=a+; return n; 程序运行后的输出结果是_。(分数:2.00)A.9 B.8C.7D.10解析:解析 题目中静态局部变量 a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第一次调用函数执行 n+=a+;时 a先与 n相加再进行自增。n 的值为 4,a 的值为 2,且 a变量执行完后空
25、间没有释放。再执行 s=s+f(a)时,s 的值为 4,调用 f(a)函数时 n的返回值为 n=3+2=5,且此时 a的值为 3了。所以 s的值为 9。21.avg功能是求整形数组中的前若干个元素的平均值,设数组元素个数最多不超过 10,则下列函数说明语句错误的是_。(分数:1.00)A.int avg(int*a,int n);B.int avg(int a10,int n);C.int avg(int a,int n); D.int avg(int a,int n);解析:解析 对于数组参数传递时 C语言中内部都使用指针进行传递,而 C选项中形参为两个 int型的值,所以答案选择 C。22
26、.下面结构体的定义语句中,错误的是_。(分数:1.00)A.struct ordint x;int y;int z;struct ord a; B.struct ordint x;int y;int z;struct ord a;C.struct ordint x;int y;int z;a;D.structint x;int y;int z;a;解析:解析 A 选项 struct ordint x;int y;int z;struct ord a;错误,不能在定义结构体的同时,又用结构体类型名定义变量,应该写成 B选项或者 D选项的格式。23.有以下程序: #includestdio.h m
27、ain() int k=-3; if(k=0)printf(“*/n“) else printf(“ 程序的输出结果是_。(分数:2.50)A.输出#B.输出 if(k=0)printf(“*/n“)else printf(“中 printf(“*/n“)缺少分号,因此会报编译错误。24.在数据管理技术发展的三个阶段中,数据共享最好的是_。(分数:2.50)A.人工管理阶段B.文件系统阶段C.数据库系统阶段 D.三个阶段相同解析:解析 数据管理技术发展至今经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,逻辑性强物理性少,使用方便,在各方面的表现都最好,一直
28、占据数据库领域的主导地位,因此本题答案为 C。25.有以下程序 #include stdio.h main() int x,y,z; x=y=1; z=x+,y+,+y; printf(“%d,%d,%d/n“,x,y,z); 程序运行后的输出结果是_。(分数:1.00)A.2,3,1 B.2,3,2C.2,3,3D.2,2,1解析:解析 对于表达式“z=x+,y+,+y;”,因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式改成“(z=x+),(y+),(+y)”。然后从左向右先计算表达式 z=x+,因为 x+先使用后自增,所以 z的值为 1,x 的值为 2。再计算逗号表达式第二个
29、表达式 y+,此时 y的值为 1,y+的值为 2。最后计算第三个表达式+y,y 的值为 3,故本题答案为 A。26.设 a、b、c、d、m、n 均为 int型变量,且 a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=ab)while(y-); printf(“y=%d/n“, y); 程序执行后的输出结果是_。(分数:1.00)A.y=0B.y=-1 C.y=1D.while构成无限循环解析:解析 执行 y-直到值为 0,由于 y-是先用再减,所以退出循环时,y 的值为-1。所以选择 B选项。30.数据库系统在其内部具有 3级模式,用来描述数据库中全体数据的全局逻辑结构和特性
30、的是_。(分数:2.50)A.外模式B.概念模式 C.内模式D.存储模式解析:解析 概念模式,也称逻辑模式,是对数据库系统中全局数据逻辑结构的描述,是全体用户应用公共数据视图。它不涉及具体的硬件环境与平台,与具体的软件环境也无关。31.下面程序的输出结果是( )。 main() struct m1int a;int b;en2=1,3,2,7); printf(“%d/n“,en0.b/en0.a*en1.a);(分数:1.00)A.6 B.0C.1D.3解析:解析 en2是结构体类型的数组,en0.b/en0.a*en1.a=3/1*2=6。32.有以下程序: #includestdio.h
31、 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。当 i=0时,x+后 x的值为 1,此时 j=0、2 都会执行 x+,x 的值为 3;for 循环
32、执行完毕后 j的值为 4,再执行 x+,x的值为 4;i=1 时,x+后 x的值为 5,此时 j的值为 4,for 循环不会执行,再执行 x+后 x的值为 6。故本题答案为 C选项。33.下面不能作为结构化方法软件需求分析工具的是_。(分数:1.00)A.系统结构图 B.数据字典(DD)C.数据流程图(DFD 图)D.判定表解析:解析 结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。34.以下选项中,合法的 C语言常量是_。(分数:1.00)A.21.84 B.“CPP“C.“/1.0D.2MB解析:解析 21.84 是典型的浮点型数据,故 A选项正确;字符常量是单引号括起来的一个字符,字符串常量是双引号括起来的字符序列,B、C 选项错误;C 语言常量不能直接用未加引号的字母、数字组合,故 D选项错误。35.结构化分析可以使用的工具是(分数:2.00)A.N-S图B.DFD图 C.PAD图D.程序流程图解析:解析 数据流图(DFD)、数据字典、判定表和判定树是结构化分析常用的工具。程序流程图、N-S图、PAD 图是详细设计过程中常用的图形工具。