1、国家二级( C语言)笔试模拟试卷 274 及答案与解析 1 数据处理的最小单位是 ( A)数据 ( B)数据元素 ( C)数据项 ( D)数据结构 2 软件工程的出现是由于 ( A)程序设计方法学的影响 ( B)软件产业化的需要 ( C)软件危机的出现 ( D)计算机的发展 3 数据结构作为计算机的一门学科 ,主要研究数据的逻辑结构、对各种数据结构进行的运算 ,以及 ( A)数据的存储结构 ( B)计算方法 ( C)数据映象 ( D)逻辑存储 4 下列数据结构中,能用二分法进行查找的是 ( )。 ( A)顺序存储的有序线性表 ( B)结性链表 ( C)二叉链表 ( D)有序线性链表 5 设树
2、T的度为 4,其中度为 1, 2, 3, 4的结点个数分别为 4, 2, 1, 1,则 T中的叶子结点数为 ( )。 ( A) 5 ( B) 6 ( C) 7 ( D) 8 6 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 _。 ( A)概要设计 ( B)详细设计 ( C)可行性分析 ( D)需求分析 7 在结构化方法中,软件功能 分解属于软件开发中的 _ 阶段。 ( A)详细设计 ( B)需求分析 ( C)总体设计 ( D)编程调试 8 计算机辅助教育的英文缩写是 ( ) ( A) CAD ( B) CAM ( C) CAI ( D) CAT 9 下列叙述中正确
3、的是 _。 ( A)线性表是线性结构 ( B)栈与队列是非线性结构 ( C)线性链表是非线性结构 ( D)二叉树是线性结构 10 结构化分析方法是面向 ( )的自顶向下逐步求精进行需求分析的方法。 ( A)对象 ( B)数据结构 ( C)数据流 ( D)目标 11 以下不合法的用户标识符是 ( )。 ( A) r3_t3 ( B) Else ( C) 6a ( D) 6 12 有以下程序: #include main() int a=6, b=7, m=1; switch(a 2) case 0: m+; break; case 1: m+: switch(b 2) defaut: m+; c
4、ase0: m+; break; printf(“ d n”, m); 程序运行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 13 以下合法的赋值语句是 _。 ( A) X=Y=100 ( B) D-; ( C) X+Y; ( D) C=int(A+B) 14 以下选项中可作为 C语言合法常量的是 ( A) -80 ( B) -80 ( C) -8e1.0 ( D) -80.0e 15 下列叙述中正确的是 ( )。 ( A)程序的执行效率与数据的存储结构密切相关 ( B)程序的执行效率只取决于程序的控制结构 ( C)程序的执行效率只取决于所处理的数据量 (
5、D)以上三种说法都不对 16 有下列程序: fun(int x,int y) return (x+y); main() int a=1,b=2,c=3,sum; sm=fun(a+,b+,a+B) ,c+); printf(“%dn“,sum); 执行后的输出结果是( )。 ( A) 6 ( B) 7 ( C) 8 ( D) 9 17 下列关于 switch语句和 break语句的结论中,正确的是 ( A) break语句是 switch语句中的一部分 ( B)在 switch语句中可以根据需要使用或不使用 break句 ( C)在 switch语句中必须使用 break语句 ( D)以上三个
6、结论中有两个是正确的 18 若变量 a是 int类型,并执行了语句: a=A+1.6;则正确的叙述是 ( A) a的值是字符 C ( B) a的值是浮点型 ( C)不允许字符型和浮点型相加 ( D) a的值是字符 A的 ASCII值加上 1。 19 在 C语言中,存储类型为 ( )的变量只在使用它们时才占用存储空间。 ( A) static和 auto ( B) register和 auto ( C) static和 register ( D) register和 extem 20 执行语句 printf(“%un”, +12345)的输出结果是 ( )。 ( A) 12345 ( B) 0
7、( C) -1 ( D)非定值 21 以下叙述中错误的是 _。 ( A) C语言中对二进制文件的访问速度比文本文件快 ( B) C语言中,随机文件以二进制代码形式存储数据 ( C)语句 FILE fp:定义了一个名为 fp的文件指针 ( D) C语言中的文本文件以 ASCII码形式存储数据 22 执行以下的程序段后, m的值是 _。 int a23=1,2,3,4,5,6; int m,*p; P= ( A) 4 ( B) 5 ( C) 3 ( D)不确定 23 以下叙述中正确的是 _。 ( A)全局变量的 作用域一定比局部变量的作用域范围大 ( B)静态 (statiC) 类别变量的生存期贯
8、穿于整个程序的运行期间 ( C)函数的形参都属于全局变量 ( D)未在定义语句中赋初值的 auto变量和 static变量的初值都是随机值 24 有如下程序; int func(int a, int b) return(a+b); main() int x=2, y=5, z=8, r; r=func(func(x, y), z); printf(“% dn“, r); 该程序的输出的结果是 _。 ( A) 12 ( B) 13 ( C) 14 ( D) 15 25 有以下程序 int fun(int n) if(n=1)return 1; else return(n+fun(n-1); ma
9、in() int x; seanf(“%d“, p=j; for(i=j;i Void Fun(char*c,int d) *c=*c+1;d=d+1; PrintF(“%c,%c,”,*c,d); Main() char B+a,a=A; Fun(printF(“%c,%cn”,B,a); 程序运行后的输出结果是 ( A) B, B, B, A ( B) B, B, B, A ( C) a, B, B, a ( D) a, B, a, B 42 Jackson方法是一种面向 _的结构化方法。 43 与结构化需求分析方法相对应的是【 】方法。 44 软件工程研究的内容主要包括:【 】技术和软件
10、工程管理。 45 最简单的交换排序方法是 _。 46 面向对象的模型中,最基本的概念是对象和【 】。 47 软件测试分为白箱 (盒 )测试和黑箱 (盒 )测试。基本路径测试方法属于 ( )测试。 48 以下函数的功能是输出链表结点中的数据,形参指针 h已知向如下链表请填空。 struct slist char data; struct slist *next; ; void fun(struct slist *h) struct slis *P; p=h; while(p) printf(“ c“, p- data); p=_; printf(“ n“); 49 以下程序中, fun函数的功能
11、是求 3行 4列二维数组每行元素中的最大值。请填空。 #include stdio, h void fun(int,int,int( * )4 ,int* ); main ( ) int a3 4 = 12,41,36,28, 19,33,15,27, 3,27,19,1 ,b3 ,i; fun(3,4,a,b); for(i =0;i 3;i + ) printf( “%4d“ ,bi ); prinff(“ n“ ); void fun(int m,int n,int ar 4 ,int* br) int i,j,x; for(i =0;i m;i + ) x = ari 0 ; for(
12、j = 0;j n;j + ) if(x ari j ) x = ari j; 【 】 =x; 50 下面程序的输出是【 】。 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); 51 以下程序的输出结果为【 】。 main() int k=1; white(k =15) if(+k%3!=2)continue; else printf(“%d “,k); printf(“n“); 52 将以下程序写成三目运算表达式是【 】。 if(a b)max=a; else
13、 max=b; 53 函数 pi的功能是根据以下公式近似求得的: pi*pi/6=1+1/(2*2)+1/(3*3)+1/(n*n) 请在下面的函数中填空,完成求 pi的功能。 #include math.h double pi(long n) double s=0.0,long i; for(i=1; i =n; i+)s=s+【 】。 return(sqrt(6*s); 54 有以下程序 int fa(int x)return x*x; int fb(int x)return x*x*x; int f(int(*fl)(),int(*f2)(),int x return f2(x)-f1(
14、x); main() int i; i=f(fa,fb,2); printf(“%dn“, i); 程序运行后,输出结果是【 】。 55 下列程序的输出结果是 _。 long fun5(int n) ( long s; if(n=l)(n=2) s=2; else s=n+fun5(n-1); return(s); main() long x; x=fun5(4); printf(%1dn“,x); 56 函数 void fun(float *sn, int n)的功能是:根据以下公式计算 s,计算结果通过形参指针 sn传回; n通过形参传入, n的值大于或等于 0。请填空。 void fun
15、(float *sn, int n) float s=0.0, w, f=-1.0; int i; for(i=0; i =n; i+) f=【 】 * f; w=f/(2*i+1); s+=w; 【 】 =s; 57 以下程序运行后的输出结果是【 】。 main() int a=3,b=4,c=5,t=99; if(b aa; a=c;c=t if(a ca=t; printf(“%d%d%dn“,a,b,c); 国家二级( C语言)笔试模拟试卷 274 答案与解析 1 【正确答案】 C 【试题解析】 数据处理的最小单位是数据项;由若干数据项组成数据元素;数据是指能够被计算机识别、存储和加工
16、处理的信息载体;数据结构是指数据之间的相互关系和数据运算。 2 【正确答案】 C 3 【正确答 案】 A 【试题解析】 数据结构作为计算机的一门学科 ,主要研究和讨论以下三个方面的问题 : 数据集合中各数据元素之间所固有的逻辑关系 ,即数据的逻辑结构 ; 在对数据进行处理时 ,各数据元素在计算机中的存储关系 ,即数据的存储结构 ; 对各种数据结构进行的运算。 4 【正确答案】 A 【试题解析】 二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。 5 【正确答案】 D 【试题解析】 根据给定的条件,在树中,各结点的分支总数为:41+22+13+41
17、=15,树中的总结点数为: 15(各结点的分支总数 )+1(根结点 )=16:非叶子结点总数为: 4+2+1+1=8。因此,叶子结点数为 16(总结点数 )-8(非叶子结点总数 )=8。 6 【正确答案】 D 【试题解析】 需求分析是对特开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。 7 【正确答案】 C 【试题解析】 总体设计过程通常由两个主要阶段组成:系统设计,确定系统的具体实现方案;结构设计,确定软件结构。为确定软 件结构,首先需要从实现角度把复杂的功能进一步分解。 8 【正确答案】 C 9 【正确答案】 A 【试题解
18、析】 一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。 10 【正确答案】 C 【试题解析】 结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。 11 【正确答案】 C 【试题解析】 字符变量 w的初值为字符 A, 其 ASCII码值为 65,字符 a的ASCIl 码值为 97,所以关系表达式 wa的值为 1;变量 x=14,变量 y=15,x y为或, x、 y均为真,所以 x y的结果 1。因而逻辑表达式(x y)”,而答案 C中,表达
19、式是不能独立成为语句的,答案 B 使用了 C语言的自减运算符它就相当于 D D-1,所以答案 B为 赋值语句。 14 【正确答案】 A 【试题解析】 选项 B) 中,以 0开头表示是一个八进制数,而八进制数的取值范围是 0 7,所以 -080是不合法的;选项 C) 和 D) 中, e后面的指数必须是整数,所以也不合法。 15 【正确答案】 A 【试题解析】 程序的执行效率是与数据的存储结构密切联系的。 16 【正确答案】 C 【试题解析】 函数 fun(int x,int y)的功能是返回两个整型数据的和。在主函数中,变量 a, b, c的初始值分别为 1,2,3。因此逗号表达式 “a+,b+
20、,a+b”的值等于5,表达式 c+的值为 3,调用于函数的表达式为 “fun(5,3);”,其返回值等 8。所以变量 sum的值等于 8。 17 【正确答案】 B 【试题解析】 break 语句可以用在 switch 和循环语句中,作用是跳出 switch 或循环结构,但并不要求 switch 结构和循环结构中必须有 break 语句,所以选项 B)的说法是正确的。注意: break、 continue语句在循环语句中的使用。 18 【正确答案】 D 【试题解析】 在 C语言中规定允许不同类型的量进行运算,但在运算时需转换成高级的类型进行运算。在表达式中有字符型和实型参加运算时,统一转换为实型
21、再运算,当运算结果存入变量时再转换为该变量的类型。 19 【正确答案】 D 20 【正确答案】 A 【试题解析】 “%u”表示输出无符号的整数 (注意;如果输出值前有符号,将自动转化为相应的无符号数输出 )。 21 【正确答 案】 C 【试题解析】 FILE 是由系统定义的一个结构体类型,并用该类型来定义若干个FILE 类型的变量,以便存放若干个文件。所以用 FILE 定义的变量必须是数组或指针,所以选项 C中的 “FILE fp; ”改为 “FILE*fp; ”就对了。 22 【正确答案】 B 【试题解析】 程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组 a的首元素的地址。
22、 p4等价于 *(p+4),即二维数组 a中第四个元素的值,而 a是一个 2*3的二维数组,其第四个元素为 a11,即 5。 23 【正确 答案】 B 【试题解析】 函数的形参是局部变量,只在函数内部起作用,调用函数时为形参分配存储空间,调用结束后释放形参的存储空间,因此选项 C错误。未在定义语句中赋初值的 static变量的初值是 0,选项 D错误。局部静态变量也是全局变量,选项 A错误。 24 【正确答案】 D 【试题解析】 函数 func的功能是计算两个形参之和,并将值返回主调函数。所以: r=func(func(x, y), z)=func(func(2, 5), 8)=func(7,
23、 8)=15。 25 【正确答案】 A 【试题解析】 本程序考查的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10 55。 26 【正确答案】 D 【试题解析】 通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项 B)和 C)后面的 0是多余的,在 C语言中,系统会自动在字符串的结尾处加上一个字符 0作为串的结束标记。 27 【正确答案】 D 【试题解 析】 该程序先判断 aiap,如果条件为真 ,则 ai比当前设定的最小
24、值小 (p 保留的当前最小元素的下标 ),那么将 i赋给 p,即将比较过的最小元素下标保留在 p 中 ,作为下面判断的标准。 28 【正确答案】 D 【试题解析】 本题考查指针变量的赋值。选项 A)中, p1、 p2本身都是地址变量,不能再将 p1取地址赋给 p2;选项 B)中,不能将整型数据直接赋值给指针型数据;选项 C)中, *p2代表了一个整型变量,而 *p2 p1这个语句试图把一个地址值放入一个整型变量中是错误的;选项 D)中指针间的赋值是正确的 。 29 【正确答案】 C 【试题解析】 A中 p是指针,没有初始化,且取 p的地址即类型为指向地址的地址,与输出参数类型不符。 B中指针
25、p没有初始化,且 p所指变量值不明。 D*p是整型变量, ”用于将指针变量 p指向 e字符所在的存 储单元, p-2指向了 c字符所在的存储单元,在函数 f中将这两个存储单元的内容交换,并使得 f 函数中指向 c字符的指针变量 s加 1。指向 c字符的指针变量 t减 1,然后继续将 s和 t指向的存储单元的内容进行交换,直到 s指向的存储单元的内容为空为止。所以本题程序输出的结果是字符串“abcdefg”的倒序形式 “gfedcba”。 41 【正确答案】 A 【试题解析】 函数 fun 的第一个参数传指针,可以将更改后的值传回调用函数,第二个参数传值,不能将更改后的值传回调用函数,故选 A。
26、 42 【正确答案】 数据结构 【试题解析】 Jackson 方法是一种结构化分析方法,它是一种面向数据结构的结构化方法。 43 【正确答案】 结构化设计 【试题解析】 与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方祛设计系统的各个组成部分以及各个成分之间的内部联系的技术。也就是说,结构化设计是这样一个过程,它决定用哪些方法把哪些部分联系起来,才能解决好某个具体且有清楚定义的问题。 44 【正确答案】 软件开发 【试题解析】 基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括: 软件开发技术和软件工程管理。软件开发技术包括;软件开发方法学、开发过程、开发
27、工具和软件工程环境,其主体内容是软件开发方法学。软件工程管理包括;软件管理学、软件工程经济学、软件心理学等内容。 45 【正确答案】 冒泡排序 【试题解析】 交换排序是指借助数据元素之间的互相交换进行排序的一种方法。冒泡排序是一种最简单的交换排序方法,它是通过相邻元素之间的相互交换逐步将线性表变成有序。 46 【正确答案】 类 【试题解析】 面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化; 将属性集和方法集相同的所有对象组合在一起,可以构成一个类。 47 【正确答案】 自盒 【试题解析】 自盒测试法即结构测试,它与程序内部结构相关,要利用程序结构的实现细节设计测试实例。白
28、盒测试法主要有逻辑覆盖、基本路径测试等。 48 【正确答案】 p=p- next 【试题解析】 fun 函数是输出链表的所有值,移动指针 p让它指向下一个结点,使用固定格式 p=p- next。 49 【正确答案】 bri或 *(br+i) 【试题解析】 程序中的数组 a是一个 3行 4列的二维数组,一维 数组 b 用于存放每行的最大数。在函数 fun 中,通过二重 for循环求每行的最大数,外层 for循环用于控制行数,内层 for循环用于控制列数,当外层循环执行一次时,内层循环则从一行的 4个数中找出最大数 x,然后将最大值 x赋给数组 br,故空格处应填 bri或 *(br+i)。 50
29、 【正确答案】 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+3 即 k=12; 51 【正确答案】 2 5 8 11 14 【试题解析】 本题通过 while和 if语句,求得出 1 15之间与 3取模为 2的整数,并依次输出。 52 【正确答案】 max=(a b)?a: b; 【试题解析】 本题考查三目运算符的用法,条件运算符要求有三个操作对象,称三目 (元
30、)运算符,它是 C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式 1?表达式 2:表达式 3所以,我们可以写成 (a, b)?a: b,它是一个 “条件表达式 ”。执行顺序是:如果 (a b)条件为真,则条件表达式取值 a,否则取值b。注意:逗号表达式的执行原理。 53 【正确答案】 0/i/i 或 1.0/(i*i) 【试题解析】 由题面中提供的计算 pi的公式可知;在第 i项其值为 1/(i*i),考虑到运算结果为浮点数,故必须要将 1转化为浮点数或采用 1.0/(i*i)的形式。故本题应填 1.0/(i*i)或其等效形式。 54 【正确答案】 4 【试题解析】 在主函数中调用
31、函数 f,函数 f 有三个参数,形参 f1与 f2分别是两个指向函 数的指针。在 f 中执行 f2(x)-f1(x),实际上是执行了 fb(2)-fa(2),故执行i=(fa,fb,2)后 i的龇 23-22=4。 55 【正确答案】 9 【试题解析】 考查 if else语句, n=4不满足条件,所以 fun5(4)=4+fun5(3),n=3也不满足条件, fun5(3)=3+fun5(2), n=2满足条件 fun5(2)=2,故x=4+3+2=9。 56 【正确答案】 -1 * sn 【试题解析】 根据公式可知,第一处应填 -1;由于计算结果要通过形参指针 sn传 回,所以第二处应填 *sn。 57 【正确答案】 4599 【试题解析】 本题需特别注意的是 “; ”的问题,不能把 “t=a; a=c;c=t”误认为是第一个 if的语句,实际上,只有 “t=a; ”才是第一个 if的语句。