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

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

1、国家二级( C语言)笔试模拟试卷 86及答案与解析 1 下列数据结构中,按先进后出原则组织数据的是 ( )。 ( A)循环队列 ( B)栈 ( C)顺序表 ( D)循环链表 2 下列叙述中正确的是 ( )。 ( A)线性表是线性结构 ( B)栈与队列是非线性结构 ( C)线性链表是非线性结构 ( D)二叉树是线性结构 3 在深度为 5的满二叉树中,叶子结点的个数为 ( )。 ( A) 31 ( B) 32 ( C) 16 ( D) 15 4 对于建立良好的程序设计风格,下面描述正确的是 ( )。 ( A) 程序应简单、清晰、可读性好 ( B)符号名的命名只要符合语法即可 ( C)充分考虑程序的

2、执行效率 ( D)程序的注释可有可无 5 结构化程序设计主要强调的是 ( )。 ( A)程序的规模 ( B)程序的易读性 ( C)程序的执行效率 ( D)程序的可移植性 6 下列叙述中正确的是 ( )。 ( A)黑箱 (盒 )测试方法完全不考虑程序的内部结构和内部特征 ( B)黑箱 (盒 )测试方法主要考虑程序的内部结构和内部特征 ( C)白箱 (盒 )测试不考虑程序内部的逻辑结构 ( D)上述三种说法都不对 7 下面不 属于软件设计原则的是 ( )。 ( A)抽象 ( B)模块化 ( C)自底向上 ( D)信息隐蔽 8 下列叙述中正确的是 ( )。 ( A)程序设计过程中的主要工作是编制程序

3、 ( B)程序设计的主要目标是编制出运行结果正确的程序 ( C)不良的程序设计风格会增加程序的复杂性 ( D)上述三种说法都不对 9 在面向对象的程序设计中,下列叙述错误的是 ( )。 ( A)任何一个对象构成一个独立的模块 ( B)一个对象不是独立存在的实体,各个对象之间有关联,相互依赖 ( C)下一层次的对象可以继承上一层次 对象的某些属性 ( D)上述三种说法都正确 10 将 E-R图转换到关系模式时,实体与联系都可以表示成 ( )。 ( A)属性 ( B)关系 ( C)键 ( D)域 11 以下选项中合法的字符常量是 ( )。 ( A) “B” ( B) O1O ( C) 68 ( D

4、) D 12 在 C语言中,合法的长整型常数是 ( )。 ( A) OL ( B) 4962710 ( C) 324562 ( A) 11 ( B) 12 ( C) 13 ( D) 17 15 设有 int x=11:表达式 (x+*1/3)的值是 ( )。 ( A) 3 ( B) 4 ( C) 11 ( D) 12 16 x、 y、 z被定义为 int型变量,若从键盘给 x、 y、 z输入数据,正确的输入语句是 ( )。 ( A) INPUTx、 y、 z; ( B) scanf(“%d%d%d“, ( C) scanf(“%d%d%d“,x,y,z); ( D) read(“%d%d%d“

5、, 17 以下函数值的类型是 ( )。 fun (float x) float y; y=3*x-4; return y; ( A) int ( B)不确定 ( C) void ( D) float 18 若有如下程序: main() int x=3,y=4,z; z=(x+(y-=X*X); printf(“%d,%dn“,y,z); 则程序执行后的输出结果是 ( )。 ( A) -4, 2 ( B) -5, -2 ( C) -5, -1 ( D) 4, -2 19 下面的程序运行后输出为 ( )。 #include stdio.h # include math.h main() int a

6、,b; float c; b = 5;c = 6;c = b+7;b = c+1; a = sqrt(double)b+c); printf(“%d,%f,%d“,a+6,C,b); ( A) 11.000000, 12.0000000, 13.000000 ( B) 11.000000, 12.000000, 13 ( C) 11.0000000, 12, 13 ( D) 11, 12.000000, 13 20 设有定义: 10ng x=-123456L,则以下能够正确输出变量 x值的语句是 ( )。 ( A) printf(“x=%dn“,x); ( B) printf(“x=%1dn“

7、,x); ( C) peintf(“x=%8dLn“,x); ( D) printf(x=%LDn“,x); 21 若 x、 a、 b和 c均是 int型变量,则执行表达式 x=(a=1, b=2)后 x的结果为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D)不确定 22 以下程序的输出结果是 ( )。 main() int i, x33=9, 8, 7, 6, 5, 4,3, 2, 1, *p=; p+; main() char s50=“abcdeeffgee“, b=e; a(s, b);printf(“%sn“, s); 则程序运行后的输出结果是 ( )。 ( A) Ab

8、cdeeffgee ( B) ABCDeeFFGee ( C) abcdEEffgEE ( D) ABCDEEFFGEE 39 下面程序输出的结果是 ( )。 #include stdio.h main() char *a=“1234“; fun(a); printf(“n“); fun(char *s) char t; if(*s) t=*S+; fun(s); else return; if(t!=0) putchar(t); ( A) 1234 ( B) 4321 ( C) 1324 ( D) 4231 40 有以下程序: #include stdio.h main() FLLE *fp

9、; int i=20, j=30, k,n; fp=fopen(“d1.dat“w“); fprintf(fp, “%dn“, i); fprintf(fp, “%dn“, j); fclose(fp); fp=fopen(“d1.dar“, “r“); fp=fscanf(fp, “%d%d“, char ch; float f; a,b,c; 则共用体变量 a, b, c占用内存的字节数为( )。 ( A) 1 ( B) 2 ( C) 4 ( D) 6 51 设一棵二叉树中有 3个叶子结点,有 8个度为 1的结点,则该二叉树中总的结点数为【 】。 52 类是一个支持集成的抽象数据类型,而对

10、象是类的【 】。 53 结构 化设计主要分为系统设计和模块设计,【 】的任务是决定系统的模块结构。 54 数据模型分为格式化模型与非格式化模型,层次模型与网状模型属于【 】。 55 数据库系统中实现各种数据管理功能的核心软件称为【 】。 56 以下程序段的输出结果是【 】。 int i=9; printf(“%on“, i); 57 有以下语句段 int n1=10, n2=20; printf(“【 】 “, n1, n2); 要求按以下格式输出 n1和 n2的值,每个输出行从第一列开 始,请填空。 n1=10 n2=20 58 以下程序运行后的输出结果是【 】。 main() int a=

11、l, b=3, c=5; if(C=a+b)printf(“yesn“); else printf(“non“); 59 设 a、 b、 c为整数,且 a=2、 b=3、 c=4,则执行完以下语句后, a的值是【 】。 a*=18+(b+)-(+c); 60 用复合的赋值运算符将变量 x中的值增大 2的赋值表达式是【 】。 61 若有如下程序: sub(int*y) while(-(*y); printf(“%d“, (*y)-); main() int x=10; sub(”此时 n的值为 0,所以执行结果为:输出一个 0, n的值变为 -1。此时循环条件 !(-n)=!(-2)为假,程序结

12、束。故程序运行后的输出结果是 20,应该选择 D。 28 【正确答案】 A 【试题解析】 在循环体中有一条 if语句, 其后面表达式为 i%2,当 i的值为奇数时,其值为真,执行其后面的语句, i的值加 1,重新开始循环,当 i的值为偶数时, i%2为假,执行 “i+; s+=i。在循环中 i为偶数时的值分别为 0、 2、 4、 6,加1后的值分别为 1、 3、 5、 7, s中存放的是它们的和,值为 16。 29 【正确答案】 D 【试题解析】 a的初值为 10, b的初值为 50, a b为真,执行 a=b,则 a的值为50。继续执行 b=c;和 c=a;,则 b=30, c=50。所以选

13、项 D正确。 30 【正确答案】 D 【试题解析】 本题中首先定义了 一整型变量 n并赋初值为 2,接着定义了一个整型指针变量 p并让它指向 n,接着又定义了一指向指针的指针变量 q。选项 A中给指针变量 p赋值 q,故这个赋值语句正确。选项 B中 *p=*q就是将 *q的值赋给指针变量 p所指向的变量 n,故这个赋值语句不是非法的赋值语句。选项 C中是将*q的值赋给变量 n,故这个表达式不是非法的赋值语句。选项 D中 p为一指针变量,应该将一地址赋给它,而在此选项的表达式中将变量 n而不是 n的地址赋给它,故这个表达式不合法。 31 【正确答案】 C 【试题解析】 在定义字符数组用字符串常量

14、进行初始化 时,系统会自动在结尾加0做结束标志,所以数组 array所占的空间为 6个字节。 32 【正确答案】 C 【试题解析】 func(b)调用函数 func并将实参传递给形参 x, x的值为 2。a+=x=2+2=4,返回值为 4。 func(c)调用函数 func并将实参传递给形参 x, x的值为 4。因为 a被定义为静态的整型变量,当第一次调用函数 func返回后 a存储单元中的数据仍然保留值为 4,所以 a+=x=4+4=8。 33 【正确答案】 B 【试题解析】 在 C语言中,调用函数时是将实参复制一份给形参,所 以无论怎么改变形参的值,都不会影响到实参,即传值调用。即使形参是

15、指针变量,也没有改变 C语言传值调用这个事实,实参指针也还是复制了一份给形参指针,无论怎么改变形参指针的内容 (注意:不是形参指针所指向的内容 ),也不会影响实参指针的内容。但它们两个现在的值一样,即指向的是同一个内存地址,所以改变形参指针所指向的内容,也就改变了实参指针所指向的内容, C语言就是这样实现传址调用的。本题中 fun()函数的形参就是两个指针,但函数中没有任何语句改变这两个指针所指向的内容,只是交换了两个参数的内容,所以该函数不会对传递给它 的实参以及实参所指向的内容造成任何影响,故 a, b初始化时为 3, 6,输出结果亦为 3和 6。应该选择 B。 34 【正确答案】 B 【

16、试题解析】 通过分析不难写出, f()函数的数学表达式为: f(n)=1 n=l; f(n)=f(-1)+1 n1; 在主函数中 for循环执行了两次函数调用 f(i)。第一次: i为 1,调用 f(1)得到返回值 1,并把它加到 j中, j的值为 1。第二次 i为 2,调用 f(n),根据递归公式可知 f(2)=f(1)+1,得到返回值 2并把它加到 j中, j的值为 3。所 以最后输出, i的值为 3。 35 【正确答案】 D 【试题解析】 执行 prty(&a);将变量 a的地址传递给形参。 x是指针型变量,值为变量 a的地址, *x就是取存储单元的值即 25,输出 *x加 1后的值 2

17、6。 36 【正确答案】 C 【试题解析】 以 b+c代替参数 x,a*=a*(2*b+c+1/2*b+c+1)=3*(2*2+1+1/2*2+1+1)=21。 37 【正确答案】 A 【试题解析】 在函数的形参中使用 int*类型和使用 int类型并无区别,两者都可用宋传递数组名或指针 变量,所以 func()函数的形参是两个指针 a和 b,又因为b0亦可写成 *b,所以表达式 b0=*a+6也可以写成 *b=*a+6,其意思是:将 a所指内容加上 6赋给 b所指内容。所以主函数中对 func()的调用 func(&a, b)可看成b0=a+6,所以最后 b0的结果为 6。正确答案为选项 A

18、。 38 【正确答案】 C 【试题解析】 函数 a的功能是将字符数组 s中的小写字母 e变为大写字母,其余字符不变, 4个选项中只有 C符合题意。 39 【正确答案】 B 【试题解析】 本题的 fun()函 数是用递归法实现逆序输出一个字符串。函数中首先定义一个局部变量 t,然后 s所指的内容是否为字符串结束符,不是的话将 s所指的内容赋给 t,同时使 s后移一位,然后递归调用 fun(s)。到这条语句为止是递归过程,即接下来连续递归调用 fun(s)都只会执行到这一半,直到回朔条件 (s所指内容是字符串结束符 )出现, fun()函数连续返回,判断 t不等于 0的话,就输出 t,所以输入的字

19、符串被逆序输出,故本题的正确答案应该是 B。 40 【正确答案】 A 【试题解析】 本题首先以创建方式打开文件 d1.dat,两次调用 fpnntf()把 i和 j的值写到文件 d1.dat中,文件 d1.dat的内容为 20回车 30回车后把该文件关闭再以读的方式打开,文件位置指针指向文件头,再通过 fscanf()函数从中读取两个整数到 k和 n中,由于格式符无间隔,因此输入数据可以用回车隔开,故输入的 k值为 20, n值为 30。所以 4个选项中 A正确。 41 【正确答案】 D 【试题解析】 本题中定义了一个二维数组 c和一个指针数组 p,并初始化让 p指向 c。显然此时 p中的各元

20、素为地址,选项 A中 p+1,此时其中的 1代表的长度是整个二维数组 c的长度,故 p+l将让 p指向 c数组后面的元素,不能引用 c数组中的成员,故选项 A错误;同理选项 B和选项 C都不正确,选项 D中 p0指的是指针数组中的第一个元素的地址即 c的首地址,此时的 1的长度代表的是数组 C中一行的长度,故 p0+2代表的是第 3行的首地址,而 *(p0+2)将代表第 3行的第一个元素的地址,所以, 4个选项中选项 D符合题意。 42 【正确答案】 C 【试题解析】 malloc函数的调用形式: malloc(size)。 malloc函数用来分配 size个字节的存储区,返回一个指向存储区

21、首地址基类型为 void的地址,可以利用强制类型转换将其换成所需的类型,这里需转换为整型 (int*)。若不能确定数据类型所占的字节数,可使用 sizeof运算符来求得,这里要求两个连续的整型动态存储单元即 2*sizeof(int)。 4个选项中只有 C符合题意。 43 【正确答案】 A 【试题解析】 本题通过一个 while循环向键盘缓冲区读取字符,直到读到的字符是回车键结束循环。当读到的 c为 2时, c-2为 0, switch语句中没有 case 0:所以没有输出,继续读下一个;当 c为 7时, c-2=5,也没有输 出;当 c为 4时, c-2=2,执行 case 2:后面的语句输

22、出一个字符 c+4=4+4=8;当 c为 3时, c-2=1,执行 case 1:后面的语句,连续输出两次 c+4=3+4=7。故程序输出结果是 877,应该选择 A。 44 【正确答案】 D 【试题解析】 第一次调用函数 sub返回后, d的值为 2+1=3;第二次调用函数sub返回后, e的值为 3+3=6。 45 【正确答案】 C 【试题解析】 让指针变量 t指向一个整型动态存储空间。函数 sub中的语句“*p=b21”是将数组元素 b2)(1即 h赋给 p所指向的存储单元中。 46 【正确答案】 C 【试题解析】 将变量 a按位求反,再与 b按位与,最后左移 1位。 9的二进制表示为

23、00001001, 020的二进制表示为 00010000。 a按位求反为 11110110,再与 b按位与结果为 00010000,左移 1位结果为 00100000。按八进制输出为 040。 47 【正确答案】 C 【试题解析】 函数 strcmp(字符串 1,字符串 2)作用是将 “字符串 1”和 “字符串 2”进行比较,如果 “字符串 1” “字符串 2”,返回一个人于 0的整数值;如果 “字符串 1” “字符串 2”,返回一个小于 0的整数值;如果 “字符串 1” “字符串 2”,返回 0。 函数 strcpy(字符串数组名,字符串, 整型表达式 )的作用是将 “字符串 ”的前 “整

24、型表达式 ”个字符存入到指定的 “字符数组 ”中,若省略 “整型表达式 ”,则将整个 “字符串 ”存入 “字符数组 ”中。 函数 f()的功能是利用选择法把一个具有 n行的二维数组中按行存放的 n个字符串由大到小排序。在主函数中定义了一个二维字符数组 p并给它按行赋初值,然后调用 f()函数,把它按行从大到小排列。字符串比较大小 的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串。由此可知最大的字符串为 “dcdbe”,排序后存放在第一行,其首地址为 p0,在输出语句输出的 p0指向的字符串长度是 5。 48 【正确答案】 C 【试题解析】 程序首先定义

25、了两个文件类型的指针 fp1、 fp2。为读打开文件filel,并让指针 fp1指向该文件;为写打开文件 file2,并让指针 fp2指向该文件。循环执行从文件 file1中读取一个字符,输出到文件 file2中,直到文件 file1结束。因此程序的 功能是将文件 file1中的内容复制到文件 file2中。 49 【正确答案】 B 【试题解析】 调用 fputc函数输出成功,则返回值是输出的字符。 50 【正确答案】 C 【试题解析】 共用体变量中的所有成员占有同一个存储空间,其字节数与成员中占字节数最多的那个成员相等。 char占 1个字节, int占 2个字节, float占 4个字节,

26、因此本题中的共用体变量 a, b, c占用内存的字节数为 4。 51 【正确答案】 13 【试题解析】 在任意一棵二叉树中,叶子结点总是比度为 2的结点多一个。 本题中的二叉树有 3个叶子结点,所以,该二叉树有 3-1=2个度为 2的结点;又知本题中的二叉树有 8个度为 1的结点。所以,本题中的二叉树总结点数为:叶子结点数 +度为 l的结点数 +度为 2的结点数 =3+8+2=13。所以,本题的正确答案为 13。 52 【正确答案】 实例 【试题解析】 在面向对象的程序设计中,类描述具有相似性质的一组对象,具体对象称为类的实例。 53 【正确答案】 系统设计 【试题解析】 结构化设计主要分为系

27、统设计和模块设计。系统设计决定系统的模块结构,模块设计具体考虑每个模块内部的 算法、模块输入、输出及模块功能。 54 【正确答案】 格式化模型 【试题解析】 层次模型与网状模型属于格式化模型。 55 【正确答案】 数据库管理系统 【试题解析】 数据库系统中实现各种数据管理功能的核心软件称为数据库管理系统,负责数据库中所有数据的存储、检索、修改以及安全保护等,数据库内的所有活动都是在其控制下进行。 56 【正确答案】 11 【试题解析】 本题中定义了一个整型变量 i并赋初值为 9,然后要求以八进制输出 i的值, 9的八进制表示为 11,所以最后输出的值为 11。 57 【正确答案】 n1=%dn

28、n2=%dn或 n1=%dnn2=%d或 n1=%2dnn2=%2dn或n1=%2dnn2=%2d 【试题解析】 printf函数有两种参数,格式控制参数和输出项参数。其中格式控制参数由两种成分组成:格式说明和普通字符,普通字符将被简单地复制显示,格式说明项将引起一个输出参数项的转换与显示,它是由 %引出并以一个类型描述符结束的字符串。本题中, n1=和 n2=就是普通字符,可以直接输出,因为 n1,n2为整数,所以格式说明项为 %d,在每行输出结束时加转义字符 n进行换 行。 58 【正确答案】 yes 【试题解析】 本题中, if后面括号里的表达式为 c=a+b为真 (即 c=1+3=4为

29、真 ),所以,执行 printf(“yesn“),最后输出 yes。 59 【正确答案】 32 【试题解析】 a*=18+(b+)-(+c)即 a=a* (18+(b+)-(+c), +c的值为 5, a=2* (18+3-5)=32。 b+是先使用 b的值在对 b加 1, +c是先对 c加 1再使用 c的值。 60 【正确答案】 x+=2 【试题解析】 x+=2等价于 x=x+2, “+=”为复合的赋值运算符。 61 【正确答案】 0 【试题解析】 while循环的条件为即当 *y非零时执行循环, -(*y)先对 *y的值减1,再使用 *y的值,不再执行 while循环时最后 *y的值为 0

30、,输出函数中的 (*y)-,是先使用 *y的值再对 *y减 1,就是先输出 0。 62 【正确答案】 struct list *next 【试题解析】 定义的指针类型变量 next也应该是结构体类型的。 63 【正确答案】 1F 【试题解析】 11=0, 01=1,实现了按位的求反。 64 【正确答案】 rewind函数 【试题解析】 rewind函数的功能是使文件的位置指针回到文件的开头。 65 【正确答案】 m =100 n%4=0 【试题解析】 题目要求在 100以内, for循环是控制数据搜索的范围为小于等于100。题目要求被 4整除所以 if语句中的判断条件判断数据是否能被 4整除。 66 【正确答案】 float y; struct stu * 【试题解析】 float定义变量 y为实型变量。要求变量 next是指向自身结构体的指针,因此变量 next应该是结构体 stu的指针型变量。 67 【正确答案】 “bi.dat“ fp 【试题解析】 要向文件 bi.dat中写数据,所以要打开文件 bi.dat。 fp是指向文件bi.dat的指针,是将数据写入 fp指向的文件中去。

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

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

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