[计算机类试卷]国家二级(C语言)笔试模拟试卷131及答案与解析.doc

上传人:bonesoil321 文档编号:503295 上传时间:2018-11-29 格式:DOC 页数:25 大小:71KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)笔试模拟试卷131及答案与解析.doc_第1页
第1页 / 共25页
[计算机类试卷]国家二级(C语言)笔试模拟试卷131及答案与解析.doc_第2页
第2页 / 共25页
[计算机类试卷]国家二级(C语言)笔试模拟试卷131及答案与解析.doc_第3页
第3页 / 共25页
[计算机类试卷]国家二级(C语言)笔试模拟试卷131及答案与解析.doc_第4页
第4页 / 共25页
[计算机类试卷]国家二级(C语言)笔试模拟试卷131及答案与解析.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、国家二级( C语言)笔试模拟试卷 131及答案与解析 1 程序流程图中带有箭头的线段表示的是 ( A)图元关系 ( B)数据流 ( C)控制流 ( D)调用关系 2 结构化程序设计主要强调的是 ( A)程序的规模 ( B)程序的效率 ( C)程序设计语言的先进性 ( D)程序易读性 3 下列选项中,不属于模块间耦合的是 ( A)数据耦合 ( B)标记耦合 ( C)异构耦合 ( D)公共耦合 4 需求分析阶段的任务是确定 ( A)软件开发方法 ( B)软件开发工具 ( C)软件开发费用 ( D)软 件系统功能 5 算法的时间复杂度是指 ( A)执行算法程序所需要的时间 ( B)算法程序的长度 (

2、 C)算法执行过程中所需要的基本运算次数 ( D)算法程序中的指令条数 6 对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2的排序方法是 ( A)快速排序 ( B)冒泡排序 ( C)直接插入排序 ( D)堆排序 7 栈底至栈顶依次存放元素 A、 B、 C、 D,在第五个元素 E入栈前,栈中元素可以出栈,则出栈序列可能是 ( A) ABCED ( B) DCBEA ( C) DBCEA ( D) CDABE 8 将 E-R图转换到关系模式时,实体与联系都可以表示成 ( A)属性 ( B)关系 ( C)键 ( D)域 9 关系表中的每一横行称为一个 ( A)元组 ( B)字段

3、 ( C)属性 ( D)码 10 下列有关数据库的描述,正确的是 ( A)数据处理是将信息转化为数据的过程 ( B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变 ( C)关系中的每一列称为元组,一个元组就是一个字段 ( D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本 关系的外关键字 11 以下 4个选项中,不能看成一条语句的是 ( A); ( B) a=5, b=2 5, c=3.6; ( C) if(a 5); ( D) if(b!=5)x=2; y=6; 12 可在 C程序中用作用户标识符的一组标识符是 ( A) and 2007

4、 ( B) Date y-m-d ( C) Hi Dr.Tom ( D) case Bigl 13 以下选项中不属于字符常量的是 ( A) C ( B) C ( C) xCC ( D) 072 14 若函数调用时的实参为变量 时,以下关于函数形参和实参的叙述中正确的是 ( A)函数的实参和其对应的形参共占同一存储单元 ( B)形参只是形式上的存在,不占用具体存储单元 ( C)同名的实参和形参占同一存储单元 ( D)函数的形参和实参分别占用不同的存储单元 15 若变量已正确定义并赋值,以下符合 C语言语法的表达式是 ( A) a: =b+1 ( B) a=b=c+2 ( C) int 18.5%

5、3 ( D) a=a+7=c+b 16 以下关于 long、 int和 short类型数据占用内存大小的叙述中正确的是 ( A)均占 4个字节 ( B)根据数据的大小来决定所占内存的字节数 ( C)由用户自己定义 ( D)由 C语言编译系统决定 17 已有定义: char c;,程序前面已在命令行中包含 ctype h文件,不能用于判断 c中的字符是否为大写字母的表达式是 ( A) isupper(c) ( B) A =c =Z ( C) A =cj-; main() int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, k; fun(a, 0,3); fun(a, 4,

6、 9); fun(a, 0, 9); for(k=0; k 10; k+)printf(“%d“,ak); printf(“n“); 程序的运行结果是 ( A) 987654321 ( B) 4321098765 ( C) 5678901234 ( D) 987651234 33 有以下程序 #include stdio h #include string h void fun(char,*s, int n) char *t; int i, j; for(i=0; i n-1; i+) for(j=i+1; j n;j+) if(strlen(si) strlen(sj) t=si; si:

7、sj; sj=t; main() char *ss=“bcc“, “bbcc“, “xy“, “aaaacc“, “aabcc“; fun(ss, 5); printf(“%s, %sn“, ss0, ss4); 程序的运行结果是 ( A) xy, aaaacc ( B) aaaacc, xy ( C) bcc, aabcc ( D) aabcc, bcc 34 有以下程序 int fun(int n) if(n=1)return 1; else return(n+fun(n-1); main() int x; seanf(“%d“, for(j=4; j 0; j-) for(i=1; i

8、=4; i+) x=(j-1)*4+【 】 ; printf(“% 4d“, x); printf(“n“); 42 有以下程序: main() char str=“xyz“, *ps=str; while(* ps)ps+; for(ps-; ps-str =0;ps-)puts(ps); 执行后的输出结果是【 】。 43 执行以下程序后,输出 #号的个数是【 】。 # include stdio. h main() int i, j; for(i=1; i 5; i+) for(j=2; j =i; j+)putchar(#); 44 请在以下程序第一行的下划线处填写适当内容,使程序能正确

9、运行。 【 】 (double, double); main() double x, y; scanf(“% lf % lf“, printf(“% 1fn“, max(x, y); double max(double a, double b) return(a b? a:b); 45 有以下程序: int sub(int n) return(n/10+n%10); main() int x, y; scanf(“% d“, y=sub(sub(sub(x); printf(“% dn“, y); 若运行时输入: 1234回车,程序的输出结果是【 】。 46 以下程序运行后的输出结果是【 】。

10、 void fun(int x, int y) x=x+y; y=x-y; x=x-y; printf(“% d, % d, “, x, y); main() int x=2, y=3; fun(x, y); printf(“% d, % dn“, x, y); 47 已知字母 A的 ASCII码为 65,以下程序运行后的输出结果是【 】。 main() char a, b; a=A+5-3; b=a+6-2; printf(“% d % cn“, a, b); 48 以下程序运行后的输出结果是【 】。 main() int a, b, c; a=25; b=025; c=0x25; prin

11、tf(“% d % d % dn“, a, b, c); 49 以下程序的功能是调用函数 fun计算: m=1-2+3-4+9 -10,并输出结果。请填空。 int fun(int n) int m=0, f=1, i; for(i=1; i =n; i+) m+=i*f; f=_; return m; main() printf(“% dn“,【 】 ); 50 以下程序中, for循环体执行的次数是【 】。 # define N 2 # define M N+1 # define K M+1*M/2 main() int i; for(i=1; i K; i+) . . 51 有以下程序:

12、 # define f(x)x*x main() int i; i=f(4+4)/f(2+2); printf(“% dn“, i); 执行后的输出结果是【 】。 52 以下程序中给指针 p分配 3个 double型动态内存单元,请填空。 # include stdllb. h main() double * p; p=(double*)malloc(【 】 ); p0=1.5; p1=2.5; p2=3.5 printf(“% f % f % fn“,p0,p1, p2); 53 以下程序运行后的输出结果是【 】。 main() char a=“Language“, b=“Programe“

13、; char * p1, * p2; int k; p1=a; p2=b; for(k=0; k =7; k+) if(*(p1+k)=*(p2+k)printf(“%c“, *(p1+k); 54 下面 rotate函数的功能:将 n行 n列的矩阵 A转置为 A,请填空。 # define N 4 void rotate(int aN) int i, j, t; fori=0; i N; j+ forj=0;【 】 ; j+ t=aij; aij=aji; aji=t; 国家二级( C语言)笔试模拟试卷 131答案与解析 1 【 正确答案】 C 【试题解析】 程序流程图是人们对解决问题的方法

14、、思路或算法的一种图形方式的描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容;流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流;带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。 2 【正确答案】 D 【试题解析】 结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用 goto语句,总的来说可 使程序结构良好、易读、易理解、易维护。 3 【正确答案】 C 【试题解析】 模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从强到

15、弱分别是:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合,没有异构耦合这种方式。 4 【正确答案】 D 【试题解析】 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象 (组织、部门、企业等 ),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。选项 A) 软件开发方法是在总体设计阶段需完成的任务;选项 B) 软件开发工具是在实现阶段需完成的任务;选项 C) 软件开发费用是在可行性研究阶段需完成的任务。 5 【正确答案】 C 【试题解析】 算法的复杂度主要包括算法的时间复杂度和空间复杂度。所谓算法的时间复杂度是

16、指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算的次数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。 6 【正确答案】 D 【试题解析】 在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都为 n(n-1)/2,堆排序需要的比较次数为 nlog2n。 7 【正确答案】 B 【试题解析】 栈操作原则上 “后进先出 ”,栈底至栈顶依次存放元素 A、 B、 C、D,则表明这 4个元素中 D是最后进栈, B、 C处于中间, A最早进栈,所以出栈时一定是先出 D,再出 C,最后出 A。 8 【正确答案】 B 【试题解析】 关系数据库逻辑设计的主要工作是将 E-R图转换成

17、指定 RDBMS中的关系模式。首先,从 E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系, E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。 9 【正确答案】 A 【试题解析】 关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。 10 【正确答案】 D 【试题解析】 数据处理是指将数据转换成信息的过程,故选项 A) 叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项 B) 叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称

18、为属性,对应存储文件中的字段,故选项 C) 叙述错误。 11 【正确答案】 D 【试题解析】 选项 D) 为两条语句。 12 【正确答案】 A 【试题解析】 在 C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下画线 3种字符组成,且第一个字符必须为字母或下画线。 C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项 B) 和 C) 中的横线以及点都不合法,选项 D) 中的 case为 C语言关键字。 13 【正确答案】 B 【试题解析】 在 C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项 A) 、 C) 和 D) 为正确的字符常量,而

19、选项 B) 是用双引号括起来的字符,表示一个字符串常量。 14 【正确答案】 D 【试题解析】 在内存中,实参单元与形参单元是不同的单元。在 C语言中,仅在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。 15 【正确答案】 B 【试题解析】 选项 A) 中包含一个不合法的运算符 “: ”;选项 C) 应改为(int)18.5%3;选项 D) 可理解为两个表达式: a+7 c+b和 a a+7,其中第一个 是错的,因为 C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项 B) ,它实际上相当于 a

20、(b c+2),进而可分解为两个表达式: b c+2和 a b。 16 【正确答案】 D 【试题解析】 在 ANSI标准中, long、 int和 short分别占用 4、 2和 2个字节。但实际上对于某些 C编译系统, int和 short都占用 4个字节,所以说各种类型数据占用内存大小是由选择何种 C编译系统决定的。 17 【正确答案】 B 【试题解析】 在本题中,选项 B) 实际是先计算关系表 达式 “A c”的值是 0还是 1,再比较该值与字符 “Z”之间的大小关系,显然不能实现题目所要求的功能,而选项 A) 、 C) 、 D) 都可以。 18 【正确答案】 B 【试题解析】 对于 d

21、owhile 循环,程序先执行一次循环体,再判断循环是否继续。本题先输出一次 i的值 “0, ”,再接着判断表达式 i+的值,其值为 0,所以循环结束。此时变量 i的值经过自加已经变为 1,程序再次输出 i的值 “1”。 19 【正确答案】 B 【试题解析】 两个 if语句的判断条件都不满足,程序只执行了 c a这条语句,所 以变量 c的值等于 3,变量 b的值没有变化,程序输出的结果为 3, 5, 3。 20 【正确答案】 A 【试题解析】 本题主要考查 switch语句的使用方法。 switch语句的执行过程为:进入 switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值

22、相匹配的 case,以此作为入口,执行 switch结构中后面的各语句,直到遇到break语句,则跳出 switch语句,如果各 case都不匹配时,则执行 default后面的语句。 21 【正确答案】 B 【试题解析】 continue语句的作 用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被 2整除时, a就会增 1,之后执行 continue语句,直接执行到 for循环体的结尾,进行 i+,判断循环条件。 22 【正确答案】 B 【试题解析】 本题中, “!”表示逻辑非运算符, “! ”表示不等于运算符,逻辑非运算符比不等于运算符的优先级高。 23 【正确答

23、案】 A 【试题解析】 在 C语言中,数组元素是从 0开始的。指针变量 p指向数组的首地址, (p+2)就会指向数组中的第 3个元素。题目中要求输出的是元素的值。 24 【正确答案】 A 【试题解析】 数组 c4表示一个 4行 4列数组, c22表示第 3行第 3列上的元素 62, *(*(c+1)+1)表示第 2行第 2列上的元素 6,通过十六进制输出为 3e, 6。 25 【正确答案】 B 【试题解析】 在内存中,字符数据以 ASCII码存储,它的存储形式与整数的存储形式类似。 C语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的 ASCII码进行

24、算术运算,在本题中, s+相当于 s s+1,即让 s指向数组中的下一个元素 。 26 【正确答案】 D 【试题解析】 C语言中数组下标是从 0开始的,所以二维数组 a23的第一维下标取值为 0、 1;第二维的下标取值为 0、 1、 2,因而选项 A) 、 B) 、 C) 都是错误的,选项 D) 表示数组元素 a00。 27 【正确答案】 D 【试题解析】 在格式输入中,要求给出的是变量的地址,而 D) 答案中给出的 s1是一个值的表达式。 28 【正确答案】 B 【试题解析】 根据宏替换的替换规则,我们可知, f(2)=2*N+1 2, 5+1 11,f(1+1) 1+1*N+1 1+1*5

25、+ 1 7。 29 【正确答案】 B 【试题解析】 本题中, typedef声明新的类型名 PER来代替已有的类型名, PER代表上面指定的一个结构体类型,此时,也可以用 PER来定义变量。 30 【正确答案】 D 【试题解析】 将有 6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。 31 【正确答案】 B 【试题解析】 选项 A) 中,定义 的初值个数大于数组的长度;选项 C) 中,数组名后少了中括号;选项 D) 中,整型数组不能赋予字符串。 32 【正确答案】 C 【试

26、题解析】 函数 fun(int *s, int n1, int n2)的功能是对数组 s中的元素进行首尾互相调换。所以在主函数中,当 fun(a, 0, 3)执行完后,数组 a12 4, 3,2, 1, 5.6, 7, 8, 9, 01;再执行 fun(a, 4, 9),数组 a12 4, 3, 2, 1, 0,9, 8, 7, 6, 5;再执行 fun(a, 0, 9)后,数组 a12 5, 6, 7, 8, 9, 0, 1,2, 3, 4。 33 【正确答案】 A 【试题解析】 函数 fun(char, s, int n)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执

27、行 fun(ss, 5)语句后, *ss “xy“,“bcc“, “bbcc“, “aabcc“, “aaaacc“, ss0, ss4的输出结果为 xy, aaaacc。 34 【正确答案】 A 【试题解析】 本程序考查的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果 为1+2+3+4+5+6+7+8+9+10 55。 35 【正确答案】 B 【试题解析】 考查指向字符串的指针变量。在该题中,指针变量 p指向的应该是该字符串中的首地址, p+3指向的是字符串结束标志 0的地址,因而 *(p+3)的值为 0。 36 【正确答案】 B 【试

28、题解析】 结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。 37 【正确答案】 B 【试题解析】 以 “wt”方式写入的是字符文件,转义字符 “n”被看做两个字符来处理。而 “wb”方式写入的是二进制文 件,转义字符 “n”是一个字符。 38 【正确答案】 B 【试题解析】 本题考查两个位运算符。按位异或运算符 “”是双目运算符,其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异或时,结果为 1。左移运算符 “ ”是双目运算符,其功能把 “ ”左边的运算数的各二进位全部左移若干位,由 “ ”右边的数指定移动的位数,高位丢弃,低位补 0,并且“ ”运算符的优先级于

29、“”。 39 【正确答案】 C 【试题解析】 本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析 可知,程序中的双重循环定义了一个如下的二维数组:由于数组的下标是从。开始的,所以二维数组元素 aij表示的是二维数组 a的第 i+1行、第 j+1列对应位置的元素。 40 【正确答案】 B 【试题解析】 本题考查的是指向函数的指针。语句 int(*f)(int);是对一个函数的声明,其中 f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。 41 【正确答案】 i 【试题解析】 外循环是递减的,方阵中的每个元素为 (j-1)*4+i,因此空格处填i。 42 【

30、正确答案】 z yz Xyz 【试题解析】 本题考查字符型指针变量的应用。程序中字符指针变量 ps指向字符串 “xyz“, while循环语句的作用使 ps指向字符串结尾, for循环的执行过程如下。 第一次循环: ps指向字符串 “z“,输出 z。 第二次循环: ps指向字符串 “yz“,输出 yz。 第三次循环: ps指向字符串 “xyz“,输出 xyz。 43 【正确答案】 6 【试题解析】 本题中 i循环执行 4次,当 i=1时, j循环执行 0次;当 i=2时, j循环执行 1次;当 i=3时, j循环执行 2次;当 i=4时 , j循环执行 3次,所以输出#号的个数是 0+1+2+

31、3=6。 44 【正确答案】 double max 【试题解析】 本题考查函数的声明。 C语言中函数声明的一般形式为: (1)函数类型 函数名 (参数类型 1,参数类型 2, ) (2)函数类型 函数名 (参数类型 1参数名 1,参数类型 2参数名 2, ) 题目中函数类型是 double。函数名是 max。故答案是 double max。 45 【正确答案】 10 【试题解析】 y=sub(sub(sub(x)=sub(sub(127)=sub(19)=10。 46 【正确答案】 3, 2, 2, 3 【试题解析】 函数 fun的功能是交换形参 x和 y的值,因此函数 fun中 printf

32、语句的输出为: 3, 2, 。由于实参向形参的传递是单向的值传递,形参的改变并不影响实参,故在主函数中执行完 fun(x, y)语句后, x和 y的值仍然是 2和 3,所以主函数中 printf语句的输出是 2, 3。 47 【正确答案】 67 G 【试题解析】 a=A+5-3=65+5-3=67,输出时 a为整型因此就输出 67。b=a+6-2=67+6-2=73。因为输出 b要以字符型输出,因此 b=G。 48 【正确答案】 25 21 37 【试题解析】 本题中 25是十进制整数, 025是八进制整数,其对应的十进制值为 28+5=21, 0x25是十六进制整数,其对应的十进制值为 21

33、6+5=37。 49 【正确答案】 fun中的答案为 -f, main函数中的答案为 fun(10) 【试题解析】 根据题意可知函数 fun的功能是计算 12+3-4+n 的和,所以空格处应填入 -f, main函数中输出 1-2+3-4+9 -10的结 果,所以函数的实参为 10,函数调用为 fun(10)。 50 【正确答案】 4 【试题解析】 本题考查宏定义。 K=M+1*M/2=N+1+1*N+1/2=2+1+1*2+1/2=5,故 for循环体执行的次数是 4。 51 【正确答案】 28 【试题解析】 i=f(4+4)/f(2+2)=4+44+4/2+22+2=4+16+2+4+2=28。 52 【正确答案】 3*sizeof(double) 【试题解析】 malloc(size)函数用于申请动态存储空间,故应填 3个 double型变量在内存中所占的字节数。 while循环的功能把字符从第二个元素开始左移一位,并将原第一个元素赋给最后一个元素。 53 【正确答案】 gae 【试题解析】 本题 for循环语句的功能是比较字符数组 a和 b中对应元素的字符值是否相同,如果相同,输出该字符。 54 【正确答案】 j =i 【试题解析】 由题意可知第一个空应填入 j =i,第二个空应填入 aij=aji。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1