1、国家二级( C语言)笔试模拟试卷 253 及答案与解析 1 栈通常采用的两种存储结构是 ( A)顺序存储结构和链式存储结构 ( B)散列方式和索引方式 ( C)链表存储结构和数组 ( D)线性存储结构和非线性存储结构 2 数据的存储结构是指 ( ) ( A)数据所占的存储空间 ( B)数据的逻辑结构在计算机中的存放形式 ( C)数据在计算机中的顺序存储方式 ( D)存储在计算机外存中的数据 3 为了提高软件的独立性,模块之间最好是 ( )。 ( A)控制耦合 ( B)公共耦合 ( C)内容耦合 ( D)数据耦合 4 在设计程序时 ,应采纳的原则之一是 ( A)不限制 goto语句的使用 ( B
2、)减少或取消注解行 ( C)程序越短越好 ( D)程序结构应有助于读者理解 5 下列叙述中正确的是 ( )。 ( A)数据的逻辑结构与存储结构必定一一对应 ( B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 ( C)程序设计语言小的数组般是顺序存储结构,因此,利用数组只能处理线性结构 ( D)以上 3种说法都不对 6 若待排序序列中元素非 常多,而且它们的排列是完全无序的,那么最好选用下列排序方法中的 _。 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排序 ( D)快速排序 7 数据库、数据库系统和数据库管理系统之间的关系是 ( A)数据库包括数据库系
3、统和数据库管理系统 ( B)数据库系统包括数据库和数据库管理系统 ( C)数据库管理系统包括数据库和数据库系统 ( D) 3者没有明显的包含关系 8 数据库的物理设计是为一个给定的逻辑结构选取一个适合应用环境的 _ 的过程,包括确定数据库在物理设备上的存储结构 和存取方法。 ( A)逻辑结构 ( B)物理结构 ( C)概念结构 ( D)层次结构 9 下列选项中不属于软件生命周期开发阶段任务的是 ( )。 ( A)软件测试 ( B)概要设计 ( C)软件维护 ( D)详细设计 10 结构化分析方法是面向 ( )的自顶向下逐步求精进行需求分析的方法。 ( A)对象 ( B)数据结构 ( C)数据流
4、 ( D)目标 11 两次运行下列的程序,如果从键盘上分别输入 3和 1,则输出结果是 ( )。 main() int x; scanf(“%d“, int k; ch=a; k=12; printf(“%c,%d,“,ch,ch,k); printf(“k=%d n“,k); 已知字符 a的 ASCII码值为 97,则执行上述程序段后输出结果是 ( A)因变量类型与格式描述符的类型不匹配输出无定值 ( B)输出项与格式描述符个数不符 ,输出为零值或不定值 ( C) a,97,12k=12 ( D) a,97,k=12 17 以下程序执行后 x的值是 main() int x,y=252,i=
5、386,*m= x=(z=y); printf(“%d“,x); ( A) 252 ( B) 1 ( C) 0 ( D)运行时出错 ,x无定值 18 若有语句 scanf(“%d%c%f“,b; ( B) double a=b=7; ( C) double a=7,b=7; ( D) double,a,b; 22 下列程序的输出结果是 ( )。 #include stdio.h void fun(int*a,int*B) int *k; k=a;a=b;b=k; main() int a=1,b=2,*x= fun(x,y); printf(“%d%d“,a,B); ( A) 2 1 ( B)
6、 1 2 ( C)编译出错 ( D) 0 0 23 有下列程序: void sort(int a, int n) int i, j, t; for(i=0; i n1; i+) for(j=i+1; j n; j+) if(ai aj)t=ai; ai=aj; aj=t; main() int aa10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10), i; sort(aa+2, 5); for(i=0; i 10; i+)printf(“ d, “, aai); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 1, 2, 3, 4, 5, 6, 7, 8
7、, 9, 10, ( B) 1, 2, 7, 6, 3, 4, 5, 8, 9, 10, ( C) 1, 2, 7, 6, 5, 4, 3, 8, 9, 10, ( D) 1, 2, 9, 8, 7, 6, 5, 4, 3, 10 24 若有定义 “float a=25, b, *p= char ch8; PER; 则下面叙述中正确的是 ( A) PER 是结构体变量名 ( B) PER是结构体类型名 ( C) typedef struct 是结构体类型 ( D) struct 是结构体类型名 27 以下叙述 中正确的是 ( )。 ( A)局部变量说明为 static存储类,其生存期将得到延长
8、 ( B)全局变量说明为 static存储类,其作用域将被扩大 ( C)任何存储类的变量在未赋初值时,其值都是不确定的 ( D)形参可以使用的存储类说明符与局部变量完全相同 28 以下程序中函数 f的功能是将 n个字符串按由大到小的顺序进行排序。 #include string. h void f(char p10, int n) chart20; int i,j; for(i=0; i n-1; i+) for(j=i+1;j n; j+) if(strcmp(pi, pj 0) strcpy(t, pi); strcpy(pi,pj); strcpy(pj,t); main() char
9、p10=“abc“, “aabdfg“, “abbd“, “dcdbe“, “cd“; int i; f(p,5); printf(“%dn“, strlen(p0); 程序运行后的输出结果是 ( )。 ( A) 6 ( B) 4 ( C) 5 ( D) 3 29 有如下程序: long fib(int n) if(n 2)return(fib(n-1)+fib(n-2); else return(2); main() printf(“%dn“, fib(3); 该程序的输出结果是 ( A) 2 ( B) 4 ( C) 6 ( D) 8 30 能正确表示逻辑关系 “a10或 a0“,的 C语言
10、表达式是 _。 ( A) a =10 or a =0 ( B) a =0|a =10 ( C) a =10;) if(i=3i=5) continue; if(i=6) break; i+; s+=i; ; printf(“%dn“,s); 程序运行后的输出结果是 ( A) 10 ( B) 13 ( C) 24 ( D)程序进入死循环 34 假定下面程序可执行文件名 prg.exe,则 该程序所在的子目录下输入命令行: prg hello good回车后,程序的输出结果是 _。 main(int argc, char*argv) int i; for(i=1; i argc; i+)print
11、f(“%c“,argvi); ( A) hello good ( B) hg ( C) hel ( D) hellogood 35 己知字母 A的 ASCII码值是 65,字母 a的 ASCII码值是 97,以下程序_。 main() char a=A; int b=20; printf(“%d,%o“,(a=a+a,a+b,B) ,a+a-A,b) ; ( A)表达式非法,输出零或不确定值 ( B)因输出项过多,无输出或输出不确定值 ( C)输出结果 20,141 ( D)输出结果为 20,141,20 36 请读程序: # include stdio h void fun(int * s)
12、 static int j 0; do sj+ sj+1 while( + + j 2); main( ) int k, a10l, 2, 3, 4, 5; for(k l; k 3; k+ +)fun(a); for(k 0; k 5;k+)prinf(“%d“, ak); 上面程序的输出结果是 ( ) ( A) 34756 ( B) 23445 ( C) 35745 ( D) 12345 37 下列叙述错误的是 ( )。 ( A)函数名是属于用户标识符,需符合 C语言对标识符的规定 ( B)形参只能是变最 ( C)为保证程序的正 常运行,函数中定义的变量不能与其他函数中的变量同名 ( D)
13、函数中定义的变量可以与其他函数中的变量同名 38 对两个数组 a和 b进行下列初始化: char m=“1234567“; char n= 1,2,3,4,5,6,7; 则下列叙述正确的是 ( )。 ( A)数组 m与数组 n完全相同 ( B)数组 m与数组 n长度相同 ( C)数组 m比数组 n长 1 ( D)数组 m与数组 n中都存放字符串 39 下列选项中正确的语句组是 ( A) char s8; s=“Beijing“; ( B) char s8; s=“Beijing“; ( C) char *s; s=“Beijing“; ( D) char *s; s=“Beijing“; 40
14、 要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是 _。 ( A) while(ch=getchar()! =N) printf(“%c“,ch); ( B) while (ch=getchar()! =N) printf(“%c“,ch); ( C) while (ch=getchar()=N) printf(“%c“,ch); ( D) while(ch=getchan()=N) printf(“%c“,ch); 41 度为 10的线性表进行冒泡排序,最坏情况下需要比较的次数为 _。 42 数据流图的类型有 _和事务型。 43 数据库保护
15、分为 :安全性控制、【 】、并发性控制和数据的恢复。 44 栈和队列通常采用的存储结构是【 】。 45 软件测试按功能划分的方法划分,通常分为【 】测试方法和黑盒测试方法。 46 若 a是 int型变量,则下列表达式的值为 _。 (a=2*3,a*2), a+4 47 有以下程序: main() int a=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, *p; for(p=a; p a+10; p+)printf(“% d,“, *p); 程序运行后的输出结果是【 】。 48 下列软件系统结构图的宽度为 ( )。 49 以下程序运行后的输出结果是 ( )。 fun(intA) i
16、nt b=0; static int c=3; b+;c+; return(a+b+C); main() int i, a=5; for(i=0;i 3;i+)printf(“%d%d“,i,fun(A); printf(“n“); 50 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 _。 51 有以下程序: main() int t=1,i=5; for(; i =0;i-) t*=i; printf(“%dn“,t); 执行后输出结果是【 】。 52 在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是【 】函数。 53 有以下定义和语句
17、,则 sizeof(a)的值是【 】,而 sizeof(a.share)的值是【 】。 struct date int day; int mouth; int year; unionint share1; float share2; share; a; 54 以下程序运行后的输出结果是【 】。 fun(int a) int b=0; static int c=3; b+; c+; return(a+b+c); main() int i,a=5; for(i=0; i 3;i+)printf(“%d%d“, i,fun(a); printf(“n“); 55 以下程序运行后的输出结果是【 】。
18、main() char c; int n=100; float f=10; double x; x=f*=n/=(c=50); printf(“%d %fn“,n,x); 56 下列程序的输出结果是【 】。 #include stdio.h void swap(int *a, int *B) int *t; t=a;a=b;b=t; main() int i=3,j=5,*p= swap(p,q);printf(“%d %dn“,*p,*q); 国家二级( C语言)笔试模拟试卷 253 答案与解析 1 【正确答案】 A 【试题解析】 和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈
19、的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针 top指示栈顶元素的位置,由于栈的操作是线性表 操作的特例,相对而言,链式栈的操作更易于实现。 2 【正确答案】 B 【试题解析】 数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式。数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。 3 【正确答案】 D 【试题解析】 在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,以有利于提高模块的独立性。耦合性与内聚性是模块独立的两个定性标准,是互相关联的。 4 【正确答案】 D 【试题
20、解析】 滥用 goto 语句将使程序流程无规律 ,可读性差 ,因此 A)不选 ;注解行有利于对程序的理解 ,不应减少或取消 ,B)也不选 ;程序的长短要依照实际情况而论 ,而不是越短越好 ,C)也不选。 5 【正确答案】 D 【试题解析】 一种数据的逻辑结构根据需要可以表示成多种存储结构,数据的逻辑结构与存储结构不一定一一对应,选项 A错误。计算机的存储空间是向量式的存储结构,但一种数据的逻辑结构根据需要可以表示成多种存储结构,如线性链表是线性表的链式存储结构,数据的存储结构不一定是线性结构,因此选项 B 错误。数组一般是顺序存储结构,但利 用利用数组也能处理非线性结构。选项 C错误。由此可知
21、,只有选项 D的说法正确。 6 【正确答案】 D 7 【正确答案】 B 【试题解析】 数据库系统 (Database System,简称 DBS)包括数据库 (Database,简称 DB)和数据库管理系统 (Database Management System,简称 DBMS)。 8 【正确答案】 B 【试题解析】 根据数据库物理设计的概念可知:为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,就是数据库的物理设计。数据库的物理结构 就是指数据库在物理设备上的存储结构与存取方法。 9 【正确答案】 C 【试题解析】 软件的生命周期可分为软件定义、软件开发及软件运行维护 3个阶段
22、。其中软件定义阶段的主要工作有可行性研究与计划制定和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等;软件运行维护阶段的主要工作是软件的运行及后期的维护等。 10 【正确答案】 C 【试题解析】 结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑 模型。 11 【正确答案】 A 【试题解析】 本题考查 if else语句。首先 scanf 函数通过键盘读入 x的值。当x=3时,第一个 if语句,先判断条件,取 x的值 3和 2比较,然后将 x的值加 1,发现条件成立,执行下列的 printf 语
23、句,输出 x的值 4。当 x=1时,第一个 if 语句,先判断条件,取 x的值 1和 2比较,然后将 x的值加 1(x的值变为 2),发现条件不成立,执行下列的 else语句,先输出 x的值 2,再将 x的值减 1。 12 【正确答案】 C 13 【正确答案】 C 【试题解析】 此题考查 的是数组元素的引用。对于已定义的数组 aMN,数组元素的正确引用必须满足行下标小于 M,列下标小于 N,且为正整数。因此,选项 A中列 F标溢出;选项 B中行下标出现小数;选项 C满足要求。 14 【正确答案】 B 【试题解析】 此题考查的是二维数组的初始化。题干中数组 a的第二个下标为3,由此可知数组 a是
24、一个 2行 3列的数组,初始化时未赋初值的元素的值自动为0,所以与选项 B 是等价的,最后一个元素的值为 0。 15 【正确答案】 C 【试题解析】 根据二分法查找法需要两次: 首先将 60与表中间的元素 55进行比较,由于 60大于 55,所以在线性表的后半部分查找。 第二次比较的元素是后半部分的中间元素,将 60与表中间的元素 70进行比较,由于 60小于 70,所以在线性表的前半部分查找。 第三次比较的元素是前半部分的中间元素,即 60,这时两者相等。即查找成功。 16 【正确答案】 D 【试题解析】 输出格式控制符 %c表示将变量以字符的形式输出 ;输出格式控制符 %d表示将变量以带符
25、号的十进制整型数输出 ,所以第一个输出语句输出的结果为 a,97;第二个输出语句输出的结果为 k=12。 17 【正确答案】 C 【试题解析】 本题考查复合的赋值表达式。指针变量 m和 z分别指向整型变量 y和 i,所以这两个指针变量中存储的地址是不同的。变量 x接受的是一个关系运算的结果 ,因为两个地址是不同的 ,所以 “z=y“的判断结果为 0。 18 【正确答案】 D 19 【正确答案】 A 【试题解析】 z的 ASCII码值为 122,经过 c-25运算后,得 97,以字符形式输出是 a。所以本题答案是 A)。 20 【正确答案】 A 21 【正确答案】 C 【试题解析】 C语言规定,
26、每个语句和数据定义以分号结束,则 说明选项 A是两条语句,前 条是对变量 a作双精度型定义的语句,而后一个 “b;”是一个缺少类型的不正确的定义形式,如果是定义多个变量,则应用逗号隔开;当定义多个变量赋同 个值时,不能用等式连写的方式,如选项 B的 “double a=b=7;”应写成“double a=7,b=7;”所以选项 B 错误,选项 C正确;在定义语句时,类型与变量名之间应用空格分隔,而不是逗号,所以选项 D错误。 22 【正确答案】 B 23 【正确答案】 C 【试题解析】 本题考查排序的使用由 sort()函数的两层 for循环语句可 知,其功能是把数组 a中的元素按照从大到小的
27、顺序进行排列。在 mam()函数中首先定义了一维整型数组 aa10,然后调用 sort(aa+2 5)实现从数组 aa 中下标为 2的元素“3”开始,其后连续的 5个素从大到小进行排列,其余元素不变。 24 【正确答案】 C 【试题解析】 “p”是指针变量,指向一个地址: “*p”为 p指针所指向地址的内容。 “”定义了一个字符型数组并进行了初始化, C语言规定,在字符串的末尾自动加上串结束标记, 0,因此数组 m的长度是 8;而数组 n 是按照字符方式对数组进行初始化,系统不会自动加上串结束标记 0,因此数组 n 的长度是7。 39 【正确答案】 D 【试题解析】 C语言不允许通过赋值语句给
28、字符数组赋值,故选项 A), C)不正确,而 “”是在定义变量的同时对变量进行初始化时使用,在赋值时不能使用。 40 【正确答案】 A 【试题解析】 此题中选项 B与选项 C首先在书写上就有错误,题目要求当读入的字母为非 N时才孰行 printf语句,依据选项 D的要求,只有当读入的字母为 N时才执行 printf语句,故也错误。所以答案为 A。 41 【正确答案】 45 【试题解析】 对于长度为 N的线性表,在最坏情况下 (即线性 表中元素现在的顺序与目标顺序正好相反 ),冒泡排序需要经过 N/2遍的从前往后的扫描和 N/2遍的从后往前的扫描,需要的比较次数为 N(N-1)/2。 42 【正
29、确答案】 变换型 【试题解析】 典型的数据流类型有两种:变换型和事务型 43 【正确答案】 完整性控制 【试题解析】 考查考生对数据库基本知识的了解。安全性控制 :防止未经授权的用户有意或无意存取数据库中的数据 ,以免数据被泄露、更改或破坏 ;完整性控制 :保证数据库中数据及语义的正确性和有效性 ,防止任何对数据造成错误的操作 ;并发控制 :正确处理 好多用户、多任务环境下的并发操作 ,防止错误发生 ;数据的恢复 :当数据库被破坏或数据不正确时 ,使数据库能恢复到正确的状态。 数据库的其他用途 ,如数据定义、数据操作和数据管理等。 44 【正确答案】 链式存储和顺序存储 45 【正确答案】 白
30、盒 【试题解析】 软件测试的方法分为白盒测试方法和黑盒测试方法。 46 【正确答案】 10 【试题解析】 此题考查逗号表达式。逗号表达式的值是最后一个表达式的值,所以本题的返回值是 a+4。前面已经给 a赋值 6,所以返回值 a+4=6+4=10。 47 【正确答案】 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 【试题解析】 p 指向 a的首地址。 a+10表示的是 a10的地址,嘲此此程序的功能就是输出数组 a。 48 【正确答案】 3 【试题解析】 软件系统结构图的宽度:整体控制跨度 (最大模块数的层 )的表示。 49 【正确答案】 0 10 1 11 2 12 50 【正
31、确答案】 可重用性 51 【正确答案】 0 【试题解析】 本题中的 for循环共执行了 6次,每执行一次将相应 i的值相乘,最后当 i=-1时停止循环。该 for循环执行完 后 t的值为 5*4*3*2*1*0=0,故最后输出 t的值为 0。 52 【正确答案】 rewind()或 fseek() 53 【正确答案】 10 4 【试题解析】 结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。 int占 2个字节, float占 4个字节,共用体变量所占的内存长度等于最长的成员的长度。所以, sizeof(a.share)的值是 4, sizeof(a)的值是 2
32、+2+2+4=10。 54 【正确答案】 10111212 【试题解析】 静态局部变 量是在编译时赋初值的,在程序运行时它已有初值。 55 【正确答案】 2 20.000000 【试题解析】 由于赋值运算符按照 “自右而左 ”的结合顺序,题中赋值表达式“x=f*=n/=(c=50)”的求解步骤如下:首先,进行 “n/=(c=50)”的运算,相当于n=n/c=100/50=2;其次,进行 “f*=n”的运算,相当于 “f=f*n”,故 f=20.000000;最后,得出 x的值为 20.000000。 56 【正确答案】 3 5 【试题解析】 本题考查函数中实参和形参的传递,在 C语言函数 中实参和形参传递具有不可逆性,参数只能由实参传向形参,而不能由形参传向实参,虽然swap 函数的功能是实现两个数的交换,但没有返回值,故最终的输出结果为 3 5。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1