1、国家二级( C语言)笔试模拟试卷 233 及答案与解析 1 有以下程序: main() unsigped int a; int b=-1; a=b; printf(“% u“, a); 程序运行后的输出结果是 _。 ( A) -1 ( B) 65535 ( C) 32767 ( D) -32768 2 需求分析阶段的任务是确定 ( A)软件开发方法 ( B)软件开发工具 ( C)软件开发费用 ( D)软件系统功能 3 在数据库系统中,用户所见的数据模 式为 ( )。 ( A)概念模式 ( B)外模式 ( C)内模式 ( D)物理模式 4 设有下列二叉树: 对此二叉树中序遍历的结果为_。 ( A
2、) ABCDEF ( B) DBEAFC ( C) ABDECF ( D) DEBFCA 5 与数据元素本身的形式、内容、相对位置、个数无关的是数据的 _。 ( A)存储结构 ( B)存储实现 ( C)逻辑结构 ( D)运算实现 6 视图设计一般有 3种设计次序,下列不属于视图设计的是 _。 ( A)自顶向下 ( B)由外向内 ( C)由内向外 ( D)自底向上 7 下列不属于软件调试技术的是 _ 。 ( A)强行排错法 ( B)集成测试法 ( C)回溯法 ( D)原因排除法 8 在 DOS环境下,为了得到 TYPE命令的帮助信息,正确的 DOS命令为 ( A) TYPE ( B) TYPE/
3、H ( C) TYPE/* ( D) TYPE/? 9 有三个关系 R, s和 T如下:其中关系 T由关系 R和 S通过某种操作得到,该操作为 ( A)选择 ( B)投影 ( C)交 ( D)并 10 有三个关系 R、 s和 T如下: 则由关系 R和 S得到关系 T的操作是 ( A)自然连接 ( B)交 ( C)除 ( D)并 11 表达式 8-2的值是 ( )。 ( A)整数 6 ( B)字符 6 ( C)表达式不合法 ( D)字符 8 12 已知 int a=6;则执行 a+=a-=a*a:语句后, a的值为 ( )。 ( A) 36 ( B) 0 ( C) -24 ( D) -60 13
4、 以下程序的输出结果是 ( )。 #include main() int af33: 0, 1, 2,0, 1, 2, 0, 1, 2, i,j, s=1; for(i=0; i ( B) x=12,y=34,z=45 ( C) x=12C,sumy=34,z=45 ( D) x=12 ,sum y=34,line z=45 36 标准库函数 fgets(s, n, f)的功能是 ( ) ( A)从文件 f中读取长度为 n的字符串存入指针 s所指的内存 ( B)从文件 f中读取长度不超过 n-1的字符串存入指针 s所指的内存 ( C)从文件 f中读取 n个字符串存入指针 s所指的内存 ( D)
5、从文件 f中读取长度为 n-1的字符串存入指针 s所指的内存 37 若有如下程序; main() char a=“china0name0“; printf(“%d, “,strlen(A) ); printf(“%dn“, sizeof(A) ); 则程序运行后的输出结果是 ( ) ( A) 5, 11 ( B) 5, 12 ( C) 11, 11 ( D) 12, 12 38 在 C语言中,引用数组元素时,其数组下标的数据类型允许是 _。 ( A)整型常量 ( B)整型表达式 ( C)整型常量或整型表达式 ( D)任何类型的表达式 39 设有以下语句 ( ) struct st int n;
6、 struct st * next; ; static struct st a 35, For (i=0;i3;i+) For (j=1;j=1;j+) t + =BiBji; printF(“%dn”,t); 程序运行后的输出结果是 ( A) 0次 ( B) 1次 ( C) 4次 ( D) 5次 40 长度为 n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 _。 41 软件测试中路径覆盖测试是整个测试的基础,它是对软件【 】进行测试。 42 数据库技术的主要特点为数据的集成性、数据的高【 】和低冗余性、数据独立性和数据统一管理与控制 。 4
7、3 在面向对象的程序设计中,类描述的是具有相似性质的一组【 】。 44 常见的拓扑结构有【 】。 45 程序测试分为静态测试和动态测试。其中 ( )是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。 46 已知字符 A的 ASC 代码值为 65,以下程序运行时若从键盘输入: B33回车则输出结果是 ( )。 #include main() char a,b; a=getchar(); scanf(“%d“, B); a=a-A+0;b=b*2; printf(“%c%cn“,a,B); 47 以下程序的输出结果是【 】。 #include stdio.h voi
8、d fun() static int a=0; a + =2; printf(“%d“,a); main() int cc; for(cc = 1;cc 4; cc+) fun(); printf(“n“); 48 以下程序用来统计文件中字符个数。请填空。 #include “stdio. h“ main() FILE *fp;long num=OL; if(fp=fopen(“fname.dat“,“r“)=NULL) Pirntf(“Open errorn“); exit(0); while(【 】 ) fgetc(fp);num+; printf(“num=%1dn“,num-1); f
9、close(fp); 49 下面程序的输出是【 】。 main() int arr10,i,k=0; for(i=0;i,10;i+) arri=i; for(i=1;i 4;i+) k+=arri+i; printf(“%dn“,k); 50 下面程序的输出是【 】。 main() int arr10,i,k=0; for(i=0;i 10;i+) arri=i; fov(i=1;i 4;i+) k+=arri+i; printf(“%dn“,k); 51 设在主函数中有以下定义和函数调用语句,且 fun函数为 void类型;请写出fun函数的首部【 】。要求形参名为 b。 main() d
10、ouble s1022; int n; fun(s); 52 以下程序的输出是【 】。 main() char str1=“How do you do“,*p1=str1; strcpy(str1+strlen(str1)/2,“es she“); printf(“%sn“,p1); 53 已有定义如下: struct node int data; struct node *next; *P; 以下语句调用 malloc函数,使指针 p指向一个具有 struct node类型的动态存储空间。 请填空。 p=(struct node *)malloc 【 】; 54 若运行时给变量 x输入 12
11、,则以下程序的运行结果是 【 】 ; main() int x,y; scanf(“%d“, printf(“input a,b: “); scanf (“%d%d“, 【 】 ; p2= if (a b) p=p1; p1=p2; p2=p; printf(“a=%d b=%dn“,a,b); printf(“max=%d min=%dn“,【 】 ); 国家二级( C语言)笔试模拟试卷 233 答案与解析 1 【正确答案】 B 【试题解析】 int型数据 -1与 unsigned int型数据 65535在内存中的存储内容相同。 2 【正确答案】 D 【试题解析】 需求分析是软件定义时期的
12、最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象 (组织、部门、企业等 ),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。选项 A) 软件开发方法是在总体设计阶段需完成的任务;选项 B) 软件开发工具是在实现阶段需完成的任务;选项 C) 软件开发费用是在可行性研究阶段需完成的任务。 3 【正确答案】 B 【试题解析】 数据库系统的三级模式: 概念模 式:数据库系统中全局数据逻辑结构的描述,全体用户公共数据视图; 外模式:也称子模式与用户模式,是用户的数据视图,也就是用户所见到的数据模式; 内模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法。
13、 4 【正确答案】 B 【试题解析】 中序遍历是指首先遍历左子树,然后访问根结点,最后遍历右子树;并且在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树的一种二叉树遍历算法。 5 【正确答案】 C 6 【正确答案】 B 【试题解析】 视图设计一般有 3种设计次序,它 们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际隋况灵活掌握,可以单独使用也可混合使用。 7 【正确答案】 B 【试题解析】 调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。 8 【正确答案】 D 9 【正确答案】 D 【试题
14、解析】 两个相同结构关系的并是由属于这两个关系的元组组成的集合。 10 【正确答案】 C 11 【正确答案】 A 【试题解析】 在 C语言中,虽然字符都是变为其 对应的 ASCII 码值来参与算术运算的,但字符间的相对位置关系还是不变的,字符 8和字符 2的 ASCII码值相差仍是 6。 12 【正确答案】 D 【试题解析】 此题考查的是赋值表达式。执行语句 “a+=a-=a*a: ”时,首先执行a=a a*g=-30,然后执行 a=a+a=-60。 13 【正确答案】 B 【试题解析】 当外层循环为 i时,内层循环 j只能取 j=i,所以 s+=aiajj,其实就是 s+=aiai i,当
15、i=0时, s=s+a0a0 O=s+a00=1, 当 i=1时,s=s+a1a11=s+a11=1+1=2,当 i=2 时,s=s+a2a22=s+a22=2+2=4。 14 【正确答案】 B 【试题解析】 本题考查函数调用时的参数传递。分析题目可知 fun函数的形参是指向实参的指针,但 main()函数中调用 fun()函数时,实参是指针变量 x、 y(分别为指向 8和 b的指针 ), a、 b的值在函数调用前后未发生变化,因而 a=1, b=2,即输出 12。 15 【正确答案】 C 【试题解 析】 “%X”以十六进制无符号形式输出整数,变量 m和 n 的初始值都是十六进制数, m=m-
16、n=0xabc-oxabc=0x0,所以输出结果为 0。 16 【正确答案】 D 【试题解析】 需求分析的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。 17 【正确答案】 B 【试题解析】 选项 A和 C一望而知其错;对于表达式 a=a+7=c+b(答案 D) ,是先执行赋值表达式 a+7=c+b,再把这个表达式的值赋给 a,显然,表达式 a+7=c+b非法,因为赋值表达式的左侧 不能为常量或表达式。 18 【正确答案】 A 【试题解析】 在 C语言中,数据类型可分为基本数据类型、构造数据类型、指针类型、空类型 4大类,其中基本类型;字符型、整型、实型
17、(单精度型和双精度型 )、枚举类型。构造类型:数组、结构体、公用体。选项 B 中的逻辑型和 C中双精度类型都属于基本数据类型,选项 D集合类型属于构造类型;而选项 A复数型不是 C语言的数据类型。 19 【正确答案】 B 【试题解析】 在 C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线, long 为 C语 言的保留字,不能作为用户标识符。 3Dmax开头的第一个字符为数字,而 C语言规定,第一个字符必须为字母或者下划线; A.dat中的字符 “.”不符合 C语言中用户标识符规定。 20 【正确答案】 D 【试题解析】 本题考查的是 for循环语句的使用以及
18、分号 “;”的使用,第一层 for循环由于 i两次自增运算故执行两次,每执行一次第一层 for循环,第二条 for循环语句执行三次,但由于语句后面加了分号,因此这一条空循环语句,结果当第一层的 for语句执行完,跳出整个循环语句后,执行 printf语句,因此执行一次printf 语句,选项 D是正确的。 21 【正确答案】 D 【试题解析】 在用基本输出语句 printf 时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数 (正如本题的情况 ),多余的输出项不予输出,如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或 0。故本题选项 D)是正确的输出结果。 2
19、2 【正确答案】 B 【试题解析】 二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。 数组第一维的下标是 i,说明它前面还有 i行,有 i*m个元 素,数组第二维的下标是 j,说明它前面还有 j列,有 j个元素,所以共有 i*m+j个元素。 23 【正确答案】 B 【试题解析】 子函数 fun(intx,inty),将变量 m和 i声明为局部静态变量,因此第 1次调用主函数后,局部静态变量 m和 i的值为 5和 3,第 1次函数调用结束时,它们的值不释放保持不变,所以第 2次调用时,局部静态变量 m和 i的初始值分别为 5和 3,即在执行 “i+ m+1”
20、时, i的值为 9,因此,最终 m的值为 11。 24 【正确答案】 D 【试题解析】 一个 C语言的源程序 (后缀名为 .c)在经过编译器编译后,先生成一个汇编语言程序,然后由编译程序再将汇编语言程序翻译成机器指令程序,即目标程序 (后缀名为 .obj) ,目标程序不可以直接运行,它要和库函数或其他目标程序连接成可执行文件 (后缀名为 .exe) 后方可运行。 25 【正确答案】 A 【试题解析】 函数 funl()实现的功能为将实参 p 所指的字符串顺序按位加 1,而实参 p通过 “p= a3; ”指向字符串数组 a中的 gram,敞输出结果为 Prohsbn。 26 【正确答案】 B 【
21、试题解析】 函数 getc()是从数据流中 读入一个字符。 getchar()从键盘读入一个字符。 scanf()是格式化输入函数,空格字符被用于多个数据输入的分隔符,含有空格的字符串会被截断。 gets()用于字符串的输入,并且以回车键为结束符。 27 【正确答案】 B 【试题解析】 语句 typedef struct Sint g; char h; T 的作用是用 T作为 struet Sint g; char h; )的简写,所以选 B。 28 【正确答案】 D 【试题解析】 因为字符数组 s中的数组名 s表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动
22、两位因而程序编译时出错。 29 【正确答案】 D 【试题解析】 p=,所以 a数组长度大于 b数组长度,应该选 C。 34 【正确答案】 A 【试题解析】 函数 rewind的功能是将文件指针重新指向一个流的开头。用法如下: int rewind(FILE * stream);并且无返值。 35 【正确答案】 D 【试题解析】 若在 scarf 的格式化控制串中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些 字符。格式化输入函数必须严格按照双引号里面的格式进行输入。在格式化输出函数中,格式控制串中除了合法的格式说明外,可以包含任意的合法字符。 36 【正确答案】 B 37 【正确答
23、案】 B 38 【正确答案】 C 【试题解析】 C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为数组名 下标 ,下标可以是整型常量或整型表达式。 39 【正确答案】 D 40 【正确答案】 C 【试题解析】 当 i=0, j=0时能进行相加操作, b 0 b 0 0 =0;当i=1, j=1时能进行相加操作, b 1 b 1 1 =1;当 i=2, j=2时能进行相加操作, b 2 b 2 2 =2。将以上各数值相加再加 1,得 4,故选 C。 41 【正确答案】 结构 【试题解析】 路径测试是白盒测试方法中的 种,它要求对程序中的每条路径最少检查一次,目的是对软件的
24、结构进行测试。 42 【正确答案】 共享性 【试题解析】 数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统一管理与控制。 43 【正确答案】 对象 【试题解析】 在而向对象的程序设计中,类是具有共同属性、共同方法的对象的集合,即类描述的是具有相似性质的一组对象。 44 【正确答案】 星型、总线型和环型 45 【正确答案】 静态测试 46 【正确答案】 1 B 47 【正确答案】 246 【试题解析】 函数 fun 中的 a是 static类型的变量,语句 static int a=0;是给 a赋初值 0,并且只初始化一次。由于 a是静态的,所以当
25、 fun函数返回 main 函数时, a值仍然保留在其所分配的存储空间。函数第一次调用时 a被赋值 2,然后 每调用一次增加 2。 48 【正确答案】 !feof(fp) 【试题解析】 本题中统计文件中字符个数的算法可描述为;首先判断文件位置指针是否指向了文件尾,如果不是则读出一个字符,同时字符的个数加 1,再判断文件位置指针是否位于文件尾,如此循环,直到文件位置指针位于文件尾为止。本题首先以读文件的方式打开了文件 “fname.dat”,如果打开成功则把返回的文件型指针赋值给 fp,然后通过循环求文件中的字符数。首先判断文件位置指针是否位于文件尾,如果不是则循环读取字符,每次字符数加 l。所
26、以下划处应填循环条件, 文件位置指针不是指向文件尾,即 “!feof(fp)”。 49 【正确答案】 12 【试题解析】 本题首先通过第一个 for语句把 0 9(包含 0和 9)间的整数依次赋值给数组 arr,第二个 for语句用于实现将满足条件的数组元素与对应的下标值求和并累加,并用变量 k保存。 50 【正确答案】 12 【试题解析】 本题通过第一个 for循环将数组 arr0=arr9分别赋值为 0-9,通过第二个 for循环的三次循环累加,求出结果为 12,具体分析如下: i=1:k=0+arr1+1 即 k=2; i=2:k=2+arr2+2 即 k=6; i=3:k=6+arr3
27、+3 即 k=12: 51 【正确答案】 void fun(double b1022) 【试题解析】 本题答案: void fun(double b1022)。 52 【正确答案】 How does she 【试题解析】 strcpy(str1, s1);字符串拷贝函数,作用是将字符串 s1拷贝到字符数组 strl中去。 strlen(str):测试字符串 str的长度,函数的值为字符串中实际长度,不包括 0在内。本题中 strlen(str1)的值为 13,则 strcpy(strl+strlen(strl)/2,“es she“);相当于 strcpy(strl+6,“es she“);,
28、因此可得答案为 How does she 53 【正确答案】 sizeof(struct node)或 4 【试题解析】 C标准规定 malloc()函数返回值的类型为 void*,函数的调用形式为: malloc (size)。要求 size的类型为 unsigned int,所以该空格处应该填sizeof(struct node)或 4。 54 【正确答案】 0 【试题解析】 三目运算符的形式为 (表达式 1)?(表达式 2): (表达式 3)。当 (表达式1)值为真时,返回 (表达式 2)的值;为假时,返回 (表达式 3)的值。题中因为 x 12为假,所以结果为 x-12,即为 0。 55 【正确答案】 *p, *p1, *p2 p1: &a *p1, *p2