1、二级 C语言分类模拟题 563及答案解析(总分:42.00,做题时间:90 分钟)一、选择题(总题数:30,分数:42.00)1.已知 char*s,下面正确的语句是_。(分数:2.00)A.s=“ABCDEF“;B.*s=“ABCDEF“;C.*s=“ABCDEF“;D.*s=“A“;2.若在定义语句: int a,b,c,*p= 接着执行以下选项中的语句,则能正确执行的语句是_。(分数:1.00)A.scanf(“%d%d%d“,a,b,c);B.scanf(“%d“,p);C.scanf(“%d“,a,b,c);D.scanf(“%d“,3.有如下程序段: int a=14, b=15,
2、 x; char c=“A“; x=(a 执行该程序段后,x 的值为(分数:1.00)A.trueB.falseC.0D.14.设有定义: double a10,*s=a; 以下能够代表数组元素 a3的是_。(分数:1.00)A.(*s)3B.*(s+3)C.*s3D.*s+35.在软件开发中,需求分析阶段产生的主要文档是_。(分数:1.00)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书6.下列叙述中正确的是_。(分数:1.00)A.顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结
3、构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间7.有以下程序: # include stdio.h int f(int x); main() int n=1,m; m=f(f(f(n);printf(“%d/n“,m); int f(int x) return x*2; 程序运行后的输出结果是_。(分数:1.00)A.1B.2C.4D.88.以下叙述中正确的是_。(分数:2.00)A.不能用字符串常量对字符数组名进行整体赋值操作B.字符串常量“Hello“会被隐含处理成一个无名字符型数组,它有 5个元素C.char str7=“string
4、!“;在语法上是合法的,运行也是安全的D.char *str;str=“Hello“;与 char str;str=“Hello“;效果是一样的9.设有定义: int x=0,*p; 紧接着的赋值语句正确的是_。(分数:2.00)A.p=NULL;B.*p=NULL;C.p=x;D.*p=x;10.有以下程序: #includestdio.h int fun(int x) int p; if(x=0|x=1) return(3); p=x-fun(x-2); return p; main() printf(“%d/n“,fun(7); 程序执行后的输出结果是_。(分数:1.00)A.2B.3C
5、.7D.011.开发软件时对提高开发人员工作效率至关重要的是 _(分数:1.00)A.操作系统的资源管理功能B.先进的软件开发工具和环境C.程序人员的数量D.计算机的并行处理能力12.当变量 c的值不为 2、4、6 时,值也为“真”的表达式是( )。(分数:2.00)A.(c=2)(c=4)(c=6)B.(c=2 printf(“%d/n“, y=x/y); 执行后的输出结果是_。(分数:2.50)A.0B.1C.3D.不确定的值14.下列选项中不属于结构化程序设计原则的是_。(分数:2.50)A.可封装B.自顶向下C.模块化D.逐步求精15.以下选项中可用作 C程序合法实数的是_。(分数:1
6、.00)Ale0B.3.0e0.2CE9D.9.12E16.有如下程序: #includestdio.h int sub(double a,double b) return(int)(a-b); main_ printf(“%d/n“,sub(3.8,2.1); 程序运行后的输出结果是_。(分数:1.00)A.2.0B.1.7C.2D.117.下面不能作为软件需求分析工具的是_。(分数:1.00)A.PAD图B.数据字典(DD)C.数据流程图(DFD 图)D.判定树18.有三个关系 R、S 和 T如下: RA B C a l 2 b 2 1 c 3 1 SA D c 4 TA B C D c
7、3 1 4 则由关系 R和 S得到关系 T的操作是_。(分数:1.00)A.自然连接B交C.投影D并19.以下对 C语言函数的有关描述中,正确的是 ( )(分数:1.00)A.在 C中,调用函数时,只能把实参的值传给形参,形参的值不能传送给实参B.C函数既可以嵌套定义又可递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中20.有以下函数 int aaa(char*s) char*t=s; while(*t+); t-; return(t-s); 以下关于 aaa函数功能叙述正确的是_。(分数:1.00)A.求字符串 s的长度B.比较两个串的
8、大小C.将串 s复制到串 tD.求字符串 s所占字节数21.软件系统总体结构图的作用是_。(分数:1.00)A.描述软件系统结构的图形工具B.描述软件系统的控制流C.描述软件系统的数据流D.描述软件系统的数据结构22.有以下程序: #includestdio.h main() FILE *pf; char*s1=“China“,*s2=“Beijing“: pf=fopen(“abc.dat“,“wb+“); fwrite(s2,7,1,pf); rewind(pf); /*文件位置指针回到文件开头*/ fwrite(s1,5,1,pf); fclose(pf); 以上程序执行后 abc.da
9、t文件的内容是 _ 。(分数:2.00)A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina23.计算机软件的构成是_。(分数:1.00)A.源代码B.程序和数据C.程序和文档D.程序、数据及相关文档24.以下程序的输出结果是_。 试题程序#include stdio.h main() int i=2, p; p=f(i, i+1); printf(“% d/n“, p); int f(int a, int b) int c; c=a; if(ab) c=1; else if(a=b) c=0; else c=-1; return(c); (分数:1.00)
10、A.-1B.0C.1D.225.下面描述错误的是_。(分数:1.00)A.模块的独立性与模块的信息隐蔽和局部化无关B.内聚性和耦合性是模块独立程度的定性度量标准C.一个模块的内聚性越高则该模块的独立性越强D.一个模块的耦合性越高则该模块的独立性越弱26.算法的空间复杂度是指_。(分数:2.50)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间27.在关系模式 A(S,SN,D)和 B(D,CN,NM)中,关系 A的主键是 S,关系 B的主键是 D,则属性 D在关系A中称为_。(分数:1.00)A.超键B.主键C.候选键D.外键28.以下正确
11、的数组定义语句是_。(分数:1.00)A.int y14=1,2,3,4,5;B.float x2=1,2),3;C.long s23=1,1,2,1,2,3;D.double t3=0;29.若有以下程序: #include stdio.h main( ) int i, sum; for(i=1; i6; i + + ) sum+ =1; printf(“%d/n“,sum); 则程序运行后的输出结果是_。(分数:2.50)A.随机值B.0C.15D.1630.为了建立如下图所示的存储结构(即每个节点含两个域,data 是数据域,next 是指向节点的指针域),则在( )处应填入的选项是_。
12、 Struct link char data;_ node; (分数:2.00)A.link next;B.struct link * next;C.link *next;D.struct link next;二级 C语言分类模拟题 563答案解析(总分:42.00,做题时间:90 分钟)一、选择题(总题数:30,分数:42.00)1.已知 char*s,下面正确的语句是_。(分数:2.00)A.s=“ABCDEF“;B.*s=“ABCDEF“; C.*s=“ABCDEF“;D.*s=“A“;解析:2.若在定义语句: int a,b,c,*p= 接着执行以下选项中的语句,则能正确执行的语句是_
13、。(分数:1.00)A.scanf(“%d%d%d“,a,b,c);B.scanf(“%d“,p); C.scanf(“%d“,a,b,c);D.scanf(“%d“,解析:解析 scanf 中参数列表,需为地址,B 符合题意,所以选择 B。3.有如下程序段: int a=14, b=15, x; char c=“A“; x=(a 执行该程序段后,x 的值为(分数:1.00)A.trueB.falseC.0D.1 解析:解析 在 C语言中,逻辑运算符有 4个,它们分别是:!(逻辑非)、|(逻辑或)、 以下能够代表数组元素 a3的是_。(分数:1.00)A.(*s)3B.*(s+3) C.*s3
14、D.*s+3解析:解析 语句*s=8;表示指针变量 s指向一维数组 a的首地址。a3表示引用数组 a的第 4个元素,*(s+i)表示引用指针 s所指数组 a的第 i+1个元素,选项 A、C、D 的表示方法错误,只有 B选项正确。5.在软件开发中,需求分析阶段产生的主要文档是_。(分数:1.00)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书 解析:解析 需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面,因此本题答案为 D。6.下列叙述中正确的是_。(分数:1.00)A.顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间
15、不一定是连续的 B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间解析:解析 链式存储结构既可以针对线性结构也可以针对非线性结构,因此 B与 C错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,因此 D错误。本题答案为 A。7.有以下程序: # include stdio.h int f(int x); main() int n=1,m; m=f(f(f(n);printf(“%d/n“,m); int f(int x) return x*2; 程序运行后的输出结
16、果是_。(分数:1.00)A.1B.2C.4D.8 解析:解析 本题考查函数返回值作参数,最初 n=1,f(n)=f(1)=2,将 f(n)的结果代入第二个 f(n)中,即 f(f(n)=f(2)=4,所以 f(f(f(f(n)=f(4)=8。8.以下叙述中正确的是_。(分数:2.00)A.不能用字符串常量对字符数组名进行整体赋值操作 B.字符串常量“Hello“会被隐含处理成一个无名字符型数组,它有 5个元素C.char str7=“string!“;在语法上是合法的,运行也是安全的D.char *str;str=“Hello“;与 char str;str=“Hello“;效果是一样的解析
17、:解析 字符数组在定义时可以用字符串赋初值,其后就不可以再用字符串常量进行赋值。答案选择 A。9.设有定义: int x=0,*p; 紧接着的赋值语句正确的是_。(分数:2.00)A.p=NULL; B.*p=NULL;C.p=x;D.*p=x;解析:解析 p=NULL 合法,使指针指向空。所以答案选择 A。10.有以下程序: #includestdio.h int fun(int x) int p; if(x=0|x=1) return(3); p=x-fun(x-2); return p; main() printf(“%d/n“,fun(7); 程序执行后的输出结果是_。(分数:1.00
18、)A.2 B.3C.7D.0解析:解析 因为 fun(int x)是一个递归函数,所以主函数中 fun(7)经过 3次递归调用,其过程可以描述为“fun(7)=7-fun(5)=7-(5-fun(3)=7-(5-(3-fun(1)=7-(5-(3-3)=7-5=2”,所以最后输出结果为2。因此 A选项正确。11.开发软件时对提高开发人员工作效率至关重要的是 _(分数:1.00)A.操作系统的资源管理功能B.先进的软件开发工具和环境 C.程序人员的数量D.计算机的并行处理能力解析:12.当变量 c的值不为 2、4、6 时,值也为“真”的表达式是( )。(分数:2.00)A.(c=2)(c=4)(
19、c=6)B.(c=2 printf(“%d/n“, y=x/y); 执行后的输出结果是_。(分数:2.50)A.0B.1C.3 D.不确定的值解析:解析 xy 都是整形,C 表达式的值的类型和参与运算的值的类型保持一致,而浮点数据转换为整形数据使用的方法是直接抛弃小数部分,所以 3.3的小数部分被舍弃了,于是结果就是 3。14.下列选项中不属于结构化程序设计原则的是_。(分数:2.50)A.可封装 B.自顶向下C.模块化D.逐步求精解析:解析 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 go to语句,因此本题答案为 A。15.以下选项中可用作 C程序合法实数的是_。(分数
20、:1.00)Ale0 B.3.0e0.2CE9D.9.12E解析:解析 C 语言中实数的指数计数表示格式为字母 e或者 E之前必须有数字,且 e或 E后面的指数必须为整数。所以选项 A正确。16.有如下程序: #includestdio.h int sub(double a,double b) return(int)(a-b); main_ printf(“%d/n“,sub(3.8,2.1); 程序运行后的输出结果是_。(分数:1.00)A.2.0B.1.7C.2D.1 解析:解析 在类型转换过程中,如果较高类型转换成较低类型,直接忽略多余位数。程序执行过程为:调用函数 sub(3.8,2.
21、1),3.8-2.1=1.7(double 类型),(int)强制转换将 1.7转换成 int类型 1,然后返回 1并输出。17.下面不能作为软件需求分析工具的是_。(分数:1.00)A.PAD图 B.数据字典(DD)C.数据流程图(DFD 图)D.判定树解析:解析 需求分析方法可以分为结构化分析方法和面向对象的分析方法,结构化分析工具包括:数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等。PAD 图是过程设计工具,所以 A选项正确。18.有三个关系 R、S 和 T如下: RA B C a l 2 b 2 1 c 3 1 SA D c 4 TA B C D c 3 1 4 则
22、由关系 R和 S得到关系 T的操作是_。(分数:1.00)A.自然连接 B交C.投影D并解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据 T中元素可以判断 R和 S做的是自然连接操作。19.以下对 C语言函数的有关描述中,正确的是 ( )(分数:1.00)A.在 C中,调用函数时,只能把实参的值传给形参,形参的值不能传送给实参 B.C函数既可以嵌套定义又可递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中解析:20.有以下函数 int aaa(char*s)
23、 char*t=s; while(*t+); t-; return(t-s); 以下关于 aaa函数功能叙述正确的是_。(分数:1.00)A.求字符串 s的长度 B.比较两个串的大小C.将串 s复制到串 tD.求字符串 s所占字节数解析:解析 本题考查的知识点是:while 循环的简单应用。aaa()函数中,首先定义了一个字符指针 t指向形参 s,然后通过一个 while循环让指针 t不断递增,直到 t指向字符串结束标志处。当 t指向结束标志处时,由于后缀+运算符的原因,它还会被再递增 1,所以接下来的 t-;语句让它回到结束标志处。最后返回 t-s,因为 s还是指向字符串第 1个字符处,而
24、t指向了字符串结尾,故返回值为字符串的长度值。21.软件系统总体结构图的作用是_。(分数:1.00)A.描述软件系统结构的图形工具 B.描述软件系统的控制流C.描述软件系统的数据流D.描述软件系统的数据结构解析:解析 软件系统总体结构图是描述软件系统结构的图形工具,它包括软件系统的控制流、软件系统的数据流、软件系统的数据结构等。故答案为 A选项。22.有以下程序: #includestdio.h main() FILE *pf; char*s1=“China“,*s2=“Beijing“: pf=fopen(“abc.dat“,“wb+“); fwrite(s2,7,1,pf); rewind
25、(pf); /*文件位置指针回到文件开头*/ fwrite(s1,5,1,pf); fclose(pf); 以上程序执行后 abc.dat文件的内容是 _ 。(分数:2.00)A.ChinaB.Chinang C.ChinaBeijingD.BeijingChina解析:解析 本题考查函数 fwrite的使用。函数 fwrite的调用形式为:int fwrita(char*pt,unsigned n,FILE*fp);其功能是把 pt所指向的 n*size个字节输出到 fp所指文件中,第二次调用该函数时,从文件的第一个位置开始写入,之前已有的会被覆盖掉,如果第二次写入的长度没有第一次的长,则后
26、面短出的部分保留原样。23.计算机软件的构成是_。(分数:1.00)A.源代码B.程序和数据C.程序和文档D.程序、数据及相关文档 解析:解析 计算机软件是程序、数据及相关文档的完整集合。24.以下程序的输出结果是_。 试题程序#include stdio.h main() int i=2, p; p=f(i, i+1); printf(“% d/n“, p); int f(int a, int b) int c; c=a; if(ab) c=1; else if(a=b) c=0; else c=-1; return(c); (分数:1.00)A.-1 B.0C.1D.2解析:解析 以上程序
27、中定义了名为 f()的整型函数,它有两个 int类型的形参。在 main()函数中调用了 f()函数,可以很直观地看到,实参的值分别是 2和 3,2 传给函数形参 a,3 传给函数形参 b。函数返回的值赋给变量 p,main()函数中输出的值就是函数中的返回值。在函数 f()中,若 a的值大于 b,c 被赋1;若 a的值等于 b,c 被赋 0;若 a的值小于 b,c 被赋-1。按照实参传送过来的值,a 的值小于 b,因此c被赋-1,所以函数的返回值为-1。总结:本题中没有复杂的算法,但读者必须熟练地掌握 if.else分支结构的执行流程,同时建立清晰的有关函数定义和函数调用的基本概念,就可得出
28、正确的答案。25.下面描述错误的是_。(分数:1.00)A.模块的独立性与模块的信息隐蔽和局部化无关 B.内聚性和耦合性是模块独立程度的定性度量标准C.一个模块的内聚性越高则该模块的独立性越强D.一个模块的耦合性越高则该模块的独立性越弱解析:解析 模块独立性的概念是抽象、模块化、信息隐蔽和局部化的直接结果。模块的独立性是指软件模块的编写和修改应使其具有独立功能,且与其他模块的关联尽可能少。故本题答案为 A选项。26.算法的空间复杂度是指_。(分数:2.50)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间 解析:解析 算法的空间复杂度是指执
29、行这个算法所需的存储空间。算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。27.在关系模式 A(S,SN,D)和 B(D,CN,NM)中,关系 A的主键是 S,关系 B的主键是 D,则属性 D在关系A中称为_。(分数:1.00)A.超键B.主键C.候选键D.外键 解析:解析 候选键(码)是二维表中能唯一标识元组的最小属性集。若一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。若表 M中的某属性集是表 N的候选键或者主键,则称该属性集为表M的外键(码)。本题中关系 A中的属性 D是关系 B的主键,那么属性 D是关系 A的
30、外键(码)。故答案为 D选项。28.以下正确的数组定义语句是_。(分数:1.00)A.int y14=1,2,3,4,5;B.float x2=1,2),3;C.long s23=1,1,2,1,2,3;D.double t3=0; 解析:解析 A、B、C 项均存在行或列上赋初值越界问题,所以都不正确。29.若有以下程序: #include stdio.h main( ) int i, sum; for(i=1; i6; i + + ) sum+ =1; printf(“%d/n“,sum); 则程序运行后的输出结果是_。(分数:2.50)A.随机值 B.0C.15D.16解析:解析 本题重点考查 for语句,变量没有初始化的情况下,默认值与编译器有关系,不同的编译器有不同的值。因此 A选项正确。30.为了建立如下图所示的存储结构(即每个节点含两个域,data 是数据域,next 是指向节点的指针域),则在( )处应填入的选项是_。 Struct link char data;_ node; (分数:2.00)A.link next;B.struct link * next; C.link *next;D.struct link next;解析:解析 本题主要考查链表中节点的概念,属于基础知识,其中指针域应该是指向下个节点,所以答案为 B。