1、二级 C 语言笔试-451 及答案解析(总分:89.50,做题时间:90 分钟)一、选择题(总题数:40,分数:57.00)1.下列对队列的叙述正确的是_。A) 队列属于非线性表 B) 队列按“先进后出”原则组织数据C) 队列在队尾删除数据 D) 队列按“先进先出”原则组织数据(分数:2.00)A.B.C.D.2.下列关于栈的描述中错误的是( )。A) 栈是先进后出的线性表 B) 栈只能顺序存储C) 栈具有记忆作用 D) 对栈的插入与删除操作中,不需要改变栈底指针(分数:1.00)A.B.C.D.3.下列关于栈的叙述正确的是_。A) 栈按“先进先出”组织数据 B) 栈按“先进后出”组织数据C)
2、 只能在栈底插入数据 D) 不能删除数据(分数:2.00)A.B.C.D.4.软件没计中划分模块的一个准则是( )。A低内聚、低耦合 B高内聚、低耦合C低内聚、高耦合 D高内聚、高耦合(分数:1.00)A.B.C.D.5.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指A) 模块间的关系 B) 系统结构部件转换成软件的过程描述C) 软件层次结构 D) 软件开发过程(分数:2.00)A.B.C.D.6.下列不属于软件工程的 3 个要素的是( )A) 工具 B) 过程 C) 方法 D) 环境(分数:2.00)A.B.C.D.7.下面选项中不属于面向对象程序设计特征的是_。(A)
3、继承性(B) 多态性(C) 类比性(D) 封闭性(分数:2.00)A.B.C.D.8.下列所述中,是软件调试技术的是( )。A) 错误推断 B) 集成测试 C) 回溯法 D) 边界值分析(分数:2.00)A.B.C.D.9.语句:printf(“%d/n“,12的输出结果是( )。A) 12 B) 8 C) 6 D) 012(分数:1.00)A.B.C.D.10.以下叙述中错误的是_。(A) 算法正确的程序最终一定会结束(B) 算法正确的程序可以有零个输出(C) 算法正确的程序可以有零个输入(D) 算法正确的程序对于相同的输入一定有相同的结果(分数:1.00)A.B.C.D.11.下列关于 C
4、 语言的叙述中,正确的是A) C 语言中的注释不可以夹在变量名或关键字的中间B) C 语言中的变量可以在使用之前的任何位置进行定义C) 在 C 语言算术表达式的书写中,运算符两侧的运算数类型必须一致D) C 语言的数值常量中夹带空格不影响常量值的正确表示(分数:1.00)A.B.C.D.12.以下合法的赋值语句是_。A) X=Y=100B) D-;C) X+Y;D) C=int(A+B)(分数:1.00)A.B.C.D.13.有定义语句:int x,y;,若要通过 scanf(“%d,%d“,printf(“%c,“,+a) ;printf(“%c/n“,b=a+) ;程序运行后的输出结果是_
5、。A) b,b B) a,b C) b,c D) a,c(分数:1.00)A.B.C.D.16.有以下程序main()int i,s=1;for(i=1;i50;i+)if(!(i%5)printf(“%d/n“,s);程序的输出结果是A) 409 B) 277 C) 1 D) 91(分数:1.00)A.B.C.D.17.有以下程序:main()int a, b, d=25;a=d/10%9; b=aprintf(“% d, % d/n“, a, b) ;程序运行后的输出结果是_。A) 6, 1 B) 2, 1 C) 6, 0 (D) 2, 0(分数:1.00)A.B.C.D.18.下列程序的
6、运行结果是( )。main()int x=1,y=3,a=0;while(x+!=(y=1)a+1;if(yx)break;printf(“%d,%d,%d/n”,x,y,a) ;A) 2,3,2 B) 2,3,1 C) 1,3,3 D) 3,1,2(分数:1.00)A.B.C.D.19.以下程序段中,与语句:k=ab?(bc?1:0):0;功能相同的是A) if(ab)printf(“%d/n“,*(p+3) );A) 67 B) 0 C) 字符C的地址 D) 字符C(分数:2.00)A.B.C.D.22.设有定义 double a10,*s=a;,以下能够代表数组元索 a3的是A) (*s
7、)3 B) *(s+3)C) *s3 D) *s+3A.B.C.D.23.下面能正确进行字符串赋值操作的是( )。A) chars5=“ABCDE“; B) chars5=A,B,C,D,E;C) char*s;s=“ABCDE“; D) char *s;scanf(“%s“,char ch;double f;b;则结构变量 b 占用内存的字节数是A) 1 B) 2 C) 7 D) 11(分数:1.00)A.B.C.D.26.以下能正确定义二维数组的是_。A) int a3; B) int a3=2*3;C) int a3=; D) int a23=1), 2, 3,4;(分数:2.00)A.
8、B.C.D.27.下列二维数组初始化语句中,不正确的是( )。A) intb21,2,3,4,5,6,7; B) intb350,0,0;C) intb41,2,3,4,5,6; D) intb32(1,2),(3,4),(5,6);(分数:2.00)A.B.C.D.28.以下叙述中错误的是( )。A) 用户所定义的标识符允许使用关键字B) 用户所定义的标识符应尽量做到“见名知意”C) 用户所定义的标识符必须以字母或下划线开头D) 用户定义的标识符中,大、小写字母代表不同标识(分数:1.00)A.B.C.D.29.若有定义:“int a 23;”则对 a 数组的第 i 行第 j 列元素的正确引
9、用为( )。A)*(*(a+i)+j) B)(a+i)j C)*(a+i+j) D)*(a+i)+j(分数:1.00)A.B.C.D.30.设有定义语句 int(*f)(int);,则以下叙述正确的是_。(A) f 是基类型为 int 的指针变量(B) f 是指向函数的指针变量,该函数具有一个 int 类型的形参(C) f 是指向 int 类型一维数组的指针变量(D) f 是函数名,该函数的返回值是基类型为 int 类型的地址(分数:2.00)A.B.C.D.31.有以下程序#include stdio.hvoid fun(int *a,int n)/*fun 函数的功能是将 a 所指数组元素
10、从大到小排序*/int t,i,j;for(i=0;in-1;j+)for(j=i+1;jn;j+)if(aiaj) t=ai;ai:aj;aj=t;main()int c10=1,2,3,4,5,6,7,8,9,0,ifun(c+4,6);for(i=0;i10;+) printf(“%d,“,ci);printf(“/n“);程序的运行结果是A) 1,2,3,4,5,6,7,8,9,0, B) 0,9,8,7,6,5,1,2,3,4,C) 0,9,8,7,6,5,4,3,2,1, D) 1,2,3,4,9,8,7,6,5,0,(分数:2.00)A.B.C.D.32.若有定义:float x
11、=1.5;int a=1,b=3,c=2; 则正确的 switch 语句是( )。A) switch(x)case 1.0: printf(“*/n“);case 2.0: printf(“ * * /n“ );B) switch(iht)x);case 1: printf(“ * /n“ );case 2: printf(“ * * /n“ );C) switch(a +b)case 1: printf(“ * /n“ );case 2 + 1: printf(“ * * /n“ );D) switch(a + b)case 1: pfintf(“ * /n“ );case c: pfint
12、f(“ * * /n“);(分数:1.00)A.B.C.D.33.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为( )。A) EOF B) 非 0 值 C) 0 D) NULL(分数:1.00)A.B.C.D.34.有以下程序:#include stdio.hmain( )intc = 35; printf( “% d /n“ , e 程序运行后输出结果是( )。A) 0 B) 70 C) 35 D) 1(分数:1.00)A.B.C.D.35.以下程序运行后的输出结果是#includestdio.h#define PT 3.5;#define S(x
13、) PT*x*x;main()int a=1, b=2; printf(“%4.1f/n“, S(a+b); A) 14.0 B) 31.5C) 7.5 D) 程序有错,无输出结果(分数:2.00)A.B.C.D.36.若已定义:int a9,*p=a;并在以后的语句中未改变 p 的值,下列选项中不能表示 a1地址的表达式是( )。A) p+1 B) a+1 C) a+ D) +p(分数:1.00)A.B.C.D.37.以下选项中不能正确把 cl 定义成结构体变量的是( )。A) typedef structint red;int green;int blue;COLOR;COLOR cl;B
14、) struct color clint red;int green;int blue;C) struct colorint red;int green;int blue;cl;D) structint red;int green;int blue;cl;(分数:1.00)A.B.C.D.38.union dtint a;char b;double c;data;以下叙述中错误的是A) data 的每个成员起始地址都相同B) 变量 data 所占内存字节数与成员 c 所占字节数相等C) 程序段:data.a=5;printf(“%f/n“,data.c);输出结果为 5.000000D) da
15、ta 可以作为函数的实参(分数:2.00)A.B.C.D.39.设 intx7,则x 的值是( )。A) -8 B) -7 C) -1 D) 1(分数:2.00)A.B.C.D.40.在 C 语言中,下列关于文件操作的叙述正确的是( )。A) 对文件操作必须先关闭文件 B) 对文件操作必须先打开文件C) 对文件操作顺序没有统一规定 D) 以上全错(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:32.50)41.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个 1 实际上对应一个处理模块。(分数:2.00)填空项 1:_42.算法的基本特征是可行性、确
16、定性、U /U和拥有足够的情报。(分数:2.00)填空项 1:_43.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和U /U的设计来实现。(分数:2.00)填空项 1:_44.对下列二叉树进行中序遍历的结果为_。(分数:2.50)填空项 1:_45.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是U /U。(分数:2.00)填空项 1:_46.数据流图的类型有 1 和事务型。(分数:2.00)填空项 1:_47.表示“整数 x 的绝对值大于 5”时值为“假”的 C 语言表达式是 1。(分数:2.00)填
17、空项 1:_48.以下程序运行后的输出结果是_。main()int x,a=1,b=2,c=3,d=4;x=(aB)?A:B;NBSP;X=(AC)?X:C;NBSP;X=(Dx)?x:d;printf(“%d/n“,x);(分数:2.00)填空项 1:_49.已知字母 A 的 ASC码为 65。以下程序运行后的输出结果是_。main()char a,b;a=A+5-3;b=a+6-2;printf(“%d%c/n“,a,b);(分数:2.00)填空项 1:_50.strcat 函数的作用是U /U。(分数:2.00)填空项 1:_51.以下程序的输出结果是_。main()int a=1,b=
18、2;a=a+b;b=a-b;a=a-b;printf(“%d,%d/n“,a,b);(分数:4.00)填空项 1:_52.下列程序的运行结果是_。#define POWER(x) (x)*(x)main ()int i=1;printf(“%d,%d“,POWER(i+),i);(分数:2.00)填空项 1:_53.下面程序的运行结果是_。#includestdio.h#define SlZE 12main()char sSIZE;int i;for(i=0;iSIZE;i+) si=A+i+32;sub(s,5,SIZE-1);for(i=0;iSIZE;i+)printf(“%c“,si)
19、;printf(“/n“);sub(char *a,int t1,int t2)char ch;while(t1t2)ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1+;t2-;(分数:2.00)填空项 1:_54.以下程序的功能是从名为 filea.dat 的文本文件中逐个读入字符并显示在屏幕上。请填空。majn()FILE *fp; char ch;fp=fopen(_);ch=fgetc(fp);whle(!feof(fp) putchar(ch); ch=f8etc(fp); putchar(/n); fclose(fp);(分数:2.00)填空项 1:
20、_55.问题处理方案的正确而完整的描述称为 1。(分数:2.00)填空项 1:_二级 C 语言笔试-451 答案解析(总分:89.50,做题时间:90 分钟)一、选择题(总题数:40,分数:57.00)1.下列对队列的叙述正确的是_。A) 队列属于非线性表 B) 队列按“先进后出”原则组织数据C) 队列在队尾删除数据 D) 队列按“先进先出”原则组织数据(分数:2.00)A.B.C.D. 解析:解析 队列是“先进先出”的数据结构,栈是“先进后出”的数据结构,它们都是特殊的线性表。队列在队头删除数据。2.下列关于栈的描述中错误的是( )。A) 栈是先进后出的线性表 B) 栈只能顺序存储C) 栈具
21、有记忆作用 D) 对栈的插入与删除操作中,不需要改变栈底指针(分数:1.00)A.B. C.D.解析:解析 栈是一种特殊的线性表,它只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,所以栈又称先进后出表。线性表可以顺序存储,也可以链式存储,而栈是一种线性表,也可以采用链式存储结构。3.下列关于栈的叙述正确的是_。A) 栈按“先进先出”组织数据 B) 栈按“先进后出”组织数据C) 只能在栈底插入数据 D) 不能删除数据(分数:2.00)A.B. C.D.解析:解析 栈是限定在一端进行插入与删除的线性表,允许
22、插入元素的一端为栈顶,允许删除元素的一端为栈底,故选项 C、D 是错误的。栈顶元素总是最后被插入的元素,也是最先被删除的元素;栈底元素则总是最先被插入而最后被删除的元素,即栈是按“先进后出”的原则组织数据的。4.软件没计中划分模块的一个准则是( )。A低内聚、低耦合 B高内聚、低耦合C低内聚、高耦合 D高内聚、高耦合(分数:1.00)A.B. C.D.解析:解析 耦合性和内聚性是模块独立性的两个定性标准,是互相关联的。在软件设计中,各模块间的内聚性越强,则耦合性越弱。一般优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。5.软件设计包括软件的结构、数据接口和过程设计,其中软件的
23、过程设计是指A) 模块间的关系 B) 系统结构部件转换成软件的过程描述C) 软件层次结构 D) 软件开发过程(分数:2.00)A.B. C.D.解析:解析 软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中,结构设计是定义软件系统各主要部件之间的关系;数据设计将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。6.下列不属于软件工程的 3 个要素的是( )A) 工具 B) 过程 C) 方法 D) 环境(分数:2.00)A.B.C.D. 解析:解析 软件工程包括 3 个要素,即方法、
24、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成:过程支持软件开发的各个环节的控制、管理。7.下面选项中不属于面向对象程序设计特征的是_。(A) 继承性(B) 多态性(C) 类比性(D) 封闭性(分数:2.00)A.B.C. D.解析:8.下列所述中,是软件调试技术的是( )。A) 错误推断 B) 集成测试 C) 回溯法 D) 边界值分析(分数:2.00)A.B.C. D.解析:解析 软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。9.语句:printf(“%d/n“,12的输出结果是( )。A) 12 B) 8 C) 6
25、 D) 012(分数:1.00)A.B. C.D.解析:解析 位运算 12”,而答案 C 中,表达式是不能独立成为语句的,答案 B 使用了 C 语言的自减运算符它就相当于 D=D-1,所以答案 B 为一赋值语句。13.有定义语句:int x,y;,若要通过 scanf(“%d,%d“,printf(“%c,“,+a) ;printf(“%c/n“,b=a+) ;程序运行后的输出结果是_。A) b,b B) a,b C) b,c D) a,c(分数:1.00)A. B.C.D.解析:解析 本题与上题类似,考查的同样是+的前缀与后缀的区别。前缀形式表达式的值为增加 1 后的值,而后缀表达式为增加
26、1 之前的值。因此,两次输出的结果都是b。16.有以下程序main()int i,s=1;for(i=1;i50;i+)if(!(i%5)printf(“%d/n“,s);程序的输出结果是A) 409 B) 277 C) 1 D) 91(分数:1.00)A.B.C.D. 解析:解析 本题是计算 50 之内的自然数相加之和,题中 if 语句括号中的条件表达式!(i%5)a=d/10%9; b=aprintf(“% d, % d/n“, a, b) ;程序运行后的输出结果是_。A) 6, 1 B) 2, 1 C) 6, 0 (D) 2, 0(分数:1.00)A.B. C.D.解析:解析 “/”除,
27、“%”取余,“printf(“%d/n“,*(p+3) );A) 67 B) 0 C) 字符C的地址 D) 字符C(分数:2.00)A.B. C.D.解析:解析 先定义了一个指向字符型数组 str 的指针 p,指针 p 指向数组 str 的首地址,p+3 将指针指向 str3,又因为字符型数组在存放字符串时会自动在末尾加上/0,所以*(p+3)=0。22.设有定义 double a10,*s=a;,以下能够代表数组元索 a3的是A) (*s)3 B) *(s+3)C) *s3 D) *s+3A.B. C.D.解析:解析 s 指向数组首元素,s+3 表示指针 s 向后移动 3 个位置,即数组的第
28、 4 个元素 a3,故选B。23.下面能正确进行字符串赋值操作的是( )。A) chars5=“ABCDE“; B) chars5=A,B,C,D,E;C) char*s;s=“ABCDE“; D) char *s;scanf(“%s“,char ch;double f;b;则结构变量 b 占用内存的字节数是A) 1 B) 2 C) 7 D) 11(分数:1.00)A.B.C.D. 解析:解析 结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量 i所占用的内存是 2 字节,字符型变量 ch 所占用的内存是 1 字节,双精度型变量 f 所占用的内存是 8 字节,三者相加
29、即可。26.以下能正确定义二维数组的是_。A) int a3; B) int a3=2*3;C) int a3=; D) int a23=1), 2, 3,4;(分数:2.00)A.B. C.D.解析:解析 (1)二维数组的定义二维数组的定义方式为:类型说明符数组名常量表达式常量表达式。二维数组在内存中是按行优先的顺序存放的,即先存放第一行的元素,再存放第二行的元素,依次类推。(2)二维数组元素的引用二维数组元素的表示形式为:数组名下标下标,下标可以是整型常量或整型表达式;其范围为:0(常量表达式-1)。(3)二维数组的初始化可以用以下方法对二维数组元素初始化。分行给二维数组赋初值,例如;in
30、t a22=(1, 2), 3, 4);这种赋值方式比较直观,把第 1 个大括号内的数据赋给第 1 行的元素,第 2 个大括号内的数据赋给第 2 行的元素,即按行赋值。可以将所有数据写在一个大括号内,按数组排列的顺序对各个元素赋初值。可以对部分元素赋初值,没有初始化的元素值为 0。如果对全部数组元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。27.下列二维数组初始化语句中,不正确的是( )。A) intb21,2,3,4,5,6,7; B) intb350,0,0;C) intb41,2,3,4,5,6; D) intb32(1,2),(3,4),(5,6);(分数:
31、2.00)A.B.C.D. 解析:解析 在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0;C 语言规定,对于二维数组,只可以省略第 1 个方括号中的常量表达式,而不能省略第 2 个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。在选项 D)赋值表达式中,对每一维的元素赋初值应用,而不是()。28.以下叙述中错误的是( )。A) 用户所定义的标识符允许使用关键字B) 用户所定义的标识符应尽量做到“见名知意”C) 用户所定义的标识符必须以字母或下划线开头D) 用户定义的标识符中,大、小写字母代表不同标识(分数:1.00)A. B.C.D.解析:解析 C 语
32、言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应尽量做到“见名知意”,且不允许使用关键字作标识符。29.若有定义:“int a 23;”则对 a 数组的第 i 行第 j 列元素的正确引用为( )。A)*(*(a+i)+j) B)(a+i)j C)*(a+i+j) D)*(a+i)+j(分数:1.00)A. B.C.D.解析:解析 本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列 5 种:aij:*(ai+j);*(*(a+i)+j):*(aij;*(,则以下叙述正确的是_。(
33、A) f 是基类型为 int 的指针变量(B) f 是指向函数的指针变量,该函数具有一个 int 类型的形参(C) f 是指向 int 类型一维数组的指针变量(D) f 是函数名,该函数的返回值是基类型为 int 类型的地址(分数:2.00)A.B. C.D.解析:31.有以下程序#include stdio.hvoid fun(int *a,int n)/*fun 函数的功能是将 a 所指数组元素从大到小排序*/int t,i,j;for(i=0;in-1;j+)for(j=i+1;jn;j+)if(aiaj) t=ai;ai:aj;aj=t;main()int c10=1,2,3,4,5,
34、6,7,8,9,0,ifun(c+4,6);for(i=0;i10;+) printf(“%d,“,ci);printf(“/n“);程序的运行结果是A) 1,2,3,4,5,6,7,8,9,0, B) 0,9,8,7,6,5,1,2,3,4,C) 0,9,8,7,6,5,4,3,2,1, D) 1,2,3,4,9,8,7,6,5,0,(分数:2.00)A.B.C.D. 解析:解析 在本题中,主函数在调用 fun()函数进行排序时,传递的参数是 c+4 和 6,fun()函数实现的功能是将数组 c 的第 5 个元素开始的 6 个元素依次进行从大到小的顺序排列。排序之后,数组 c 的内容变为1,
35、2,3,4,9,8,7,6,5, 0。32.若有定义:float x=1.5;int a=1,b=3,c=2; 则正确的 switch 语句是( )。A) switch(x)case 1.0: printf(“*/n“);case 2.0: printf(“ * * /n“ );B) switch(iht)x);case 1: printf(“ * /n“ );case 2: printf(“ * * /n“ );C) switch(a +b)case 1: printf(“ * /n“ );case 2 + 1: printf(“ * * /n“ );D) switch(a + b)case
36、 1: pfintf(“ * /n“ );case c: pfintf(“ * * /n“);(分数:1.00)A.B.C. D.解析:解析 选项 A)中 case 后面的表达式为浮点型,选项 D)中 case 后面的表达式存在字符变量 c,故选项 A)、D)错误;在选项 B)中,switch 后面的表达式加了分号显然有错。33.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为( )。A) EOF B) 非 0 值 C) 0 D) NULL(分数:1.00)A.B. C.D.解析:解析 ANSI C 提供的 feof 函数的功能是判断 fp 所指的文件
37、的位置是否已达到文件尾,如果达到文件尾,则 feof 函数的值为 1,否则为 0,表示文件尚未结束。34.有以下程序:#include stdio.hmain( )intc = 35; printf( “% d /n“ , e 程序运行后输出结果是( )。A) 0 B) 70 C) 35 D) 1(分数:1.00)A.B.C. D.解析:解析 按位与运算符“#define S(x) PT*x*x;main()int a=1, b=2; printf(“%4.1f/n“, S(a+b); A) 14.0 B) 31.5C) 7.5 D) 程序有错,无输出结果(分数:2.00)A.B.C.D. 解
38、析:解析 本题考查宏定义的用法,进行宏定义时语句不能用分号结束,否则会出现错误。36.若已定义:int a9,*p=a;并在以后的语句中未改变 p 的值,下列选项中不能表示 a1地址的表达式是( )。A) p+1 B) a+1 C) a+ D) +p(分数:1.00)A.B.C. D.解析:解析 本题考查数组地址的表示。选项 C)中,数组名所表示的数组地址不能被重新赋值。37.以下选项中不能正确把 cl 定义成结构体变量的是( )。A) typedef structint red;int green;int blue;COLOR;COLOR cl;B) struct color clint r
39、ed;int green;int blue;C) struct colorint red;int green;int blue;cl;D) structint red;int green;int blue;cl;(分数:1.00)A.B. C.D.解析:解析 本题选项 A)、C)、D)是定义结构体及其变量的三种正确的形式,能正确将 c1 定义为结构体变量。选项 B)错误。38.union dtint a;char b;double c;data;以下叙述中错误的是A) data 的每个成员起始地址都相同B) 变量 data 所占内存字节数与成员 c 所占字节数相等C) 程序段:data.a=5
40、;printf(“%f/n“,data.c);输出结果为 5.000000D) data 可以作为函数的实参(分数:2.00)A.B.C. D.解析:解析 输出不会是 5.00000 的,因为单精度浮点数和双精度浮点数在内存中的存储形式不一样。39.设 intx7,则x 的值是( )。A) -8 B) -7 C) -1 D) 1(分数:2.00)A. B.C.D.解析:解析 本题主要考查按位求反运算和 C 语言中正负数的表示,“0”代表正数,“1”代表负数;x7 的二进制为 00111,第一个 0 代表正数,x 为 11000,第一个 1 代表负数,值为 8。40.在 C 语言中,下列关于文件
41、操作的叙述正确的是( )。A) 对文件操作必须先关闭文件 B) 对文件操作必须先打开文件C) 对文件操作顺序没有统一规定 D) 以上全错(分数:2.00)A.B. C.D.解析:解析 本题考查对文件的操作。文件打开后才可以对文件进行操作,使用结束后要关闭文件。对文件的操作都是顺序读写,即从文件的第一个数据开始,依次进行读写。二、填空题(总题数:15,分数:32.50)41.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个 1 实际上对应一个处理模块。(分数:2.00)填空项 1:_ (正确答案:加工)解析:解析数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出
42、的移动变换过程。其中的每一个加工对应一个处理模块。42.算法的基本特征是可行性、确定性、U /U和拥有足够的情报。(分数:2.00)填空项 1:_ (正确答案:有穷性)解析:解析 算法有四个基本特征:可行性、确定性、有穷性和拥有足够的情报。43.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和U /U的设计来实现。(分数:2.00)填空项 1:_ (正确答案:测试实例)解析:评析 进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。44.对下列二叉树进行中序遍历的结果为_。(分数:2.50)填空项 1:_ (正确答案:ACBDFEHGP)解
43、析:解析 中序遍历是指在遍历过程中,首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,仍然按照这样的顺序遍历。45.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是U /U。(分数:2.00)填空项 1:_ (正确答案:数据库系统)解析:解析 数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。(1)人工管理阶段。这一阶段的计算机主要用于科技计算。外存只有磁带、卡片和纸带等,软件只有汇编语言,尚无数据管理方面的软件。数据处理方式是批处理。(2)文件系统阶段。文件系统是数据库系统发展的初级阶段,它提
44、供了简单的数据共享与数据管理能力,但是它无法提供完整的、统一的管理和数据共享的能力。由于它的功能简单,因此它附属于操作系统而不能成为独立的软件,目前一般将其看成仅是数据库系统的雏形,而不是真正的数据库系统。(3)数据库系统阶段。数据库阶段用数据模型表示复杂的数据模型,有较高的数据独立性。数据库系统为用户提供了方便的用户接口,用户可使用查询语言或终端命令操作数据库,也可以用程序方式(用COBOL、C 一类高级语言和数据库语言编制的程序)操作数据库。数据库管理系统提供了数据控制功能。46.数据流图的类型有 1 和事务型。(分数:2.00)填空项 1:_ (正确答案:变换型)解析:解析典型的数据流类
45、型有两种:变换型和事务型。47.表示“整数 x 的绝对值大于 5”时值为“假”的 C 语言表达式是 1。(分数:2.00)填空项 1:_ (正确答案:(x-5)x=(aB)?A:B;NBSP;X=(AC)?X:C;NBSP;X=(Dx)?x:d;printf(“%d/n“,x);(分数:2.00)填空项 1:_ (正确答案:1)解析:49.已知字母 A 的 ASC码为 65。以下程序运行后的输出结果是_。main()char a,b;a=A+5-3;b=a+6-2;printf(“%d%c/n“,a,b);(分数:2.00)填空项 1:_ (正确答案:67 G)解析:解析 根据题意,a=A+5
46、-3=65+2=67,b=67+4=71,71 即为字母 G 的 ASC码值。程序要求按十进制形式输出 a,按字符形式输出 b,所以结果为 67 G。50.strcat 函数的作用是U /U。(分数:2.00)填空项 1:_ (正确答案:连接两个字符数组中的字符)解析:解析 函数 strcat 的功能是连接两个字符数组中的字符串。51.以下程序的输出结果是_。main()int a=1,b=2;a=a+b;b=a-b;a=a-b;printf(“%d,%d/n“,a,b);(分数:4.00)填空项 1:_ (正确答案:2,1)解析:解析 根据程序依次执行“a=a+b;b=a-b;a=a-b;”即 a=1+2=3,b=3-2=1,a=3-1=2,最后 a 的值为 2,b 的值为 1,故填 2,1。52.下列程序的运行结果是_。#define POWER(x) (x)*(x)main ()int i=1
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1