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

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

1、国家二级( C语言)机试模拟试卷 25及答案与解析 一、选择题 1 设某二叉树的后序序列为 CBA,中序序列为 ABC,则该二叉树的前序序列为 ( A) BCA ( B) CBA ( C) ABC ( D) CAB 2 下列叙述中正确的是 ( A)存储空间不连续的所有链表一定是非线性结构 ( B)结点中有多个指针域的所有链表一定是非线性结构 ( C)能顺序存储的数据结构一定是线性结构 ( D)带链的栈与队列是线性结构 3 算法时间复杂度的度量方法是 ( A)算法程序的长度 ( B)执行算法所需要的基本运算次数 ( C)执行算法所需要的所有运算次数 ( D)执行算法所需要的时间 4 设循环队列为

2、 Q(1: m),初始状态为 front=rear=m。现经过一系列的入队与退队运算后, front=rear=1,则该循环队列中的元素个数为 ( A) 1 ( B) 2 ( C) m-1 ( D) 0或 m 5 计算机软件的构成是 ( A)源代码 ( B)程序和数据 ( C)程序和文档 ( D)程序、数据及相关文档 6 下面不属于软件设计阶段任务的是 ( A)软件的详细设计 ( B)软件的总体结构设计 ( C)软件的需 求分析 ( D)软件的数据设计 7 下面属于黑盒测试方法的是 ( A)边界值分析法 ( B)基本路径测试 ( C)条件覆盖 ( D)条件 -分支覆盖 8 一名雇员就职于一家公

3、司,一个公司有多个雇员。则实体公司和实体雇员之间的联系是 ( A) 1:1联系 ( B) 1:m联系 ( C) m:1联系 ( D) m:n联系 9 有关系 R如下,其中属性 B为主键: 则其中最后一个记录违反了 ( A)实体完整性约束 ( B)参照完整性约束 ( C)用户定义的完整性约束 ( D)关系完整性约束 10 在数据库系统中 ,用于对客观世界中复杂事物的结构及它们之间的联系进行描述的是 ( A)概念数据模型 ( B)逻辑数据模型 ( C)物理数据模型 ( D)关系数据模型 11 以下选项中可用作 C语言中合法用户标识符的是 ( A) _123 ( B) void ( C) #NAME

4、? ( D) 2a 12 以下选项中合法的 C语言赋值语句是 ( A) +i; ( B) a=b=34 ( C) a=3,b=9 ( D) k=int( a+b ); 13 以下程序段中的变量已定义为 int类型 sum = pad = 5; pAd = sum+, pAd+, +pAd; printf( “%dn“, pad ); 程序段的输出结果是 ( A) 6 ( B) 4 ( C) 5 ( D) 7 14 有以下程序 #include stdio.h #include math.h main() int a=1, b=4, c=2; double x=10.5, y=4.0, z; z

5、 = ( a+b )/c + sqrt( y ) * 1.2 / c + x; printf(“%fn“, z); 程序运行后的输出结果是 ( A) 13.700000 ( B) 14 ( C) 15.4 ( D) 14.9 15 有以下程序 (字母 A的 ASCII代码为 65) #include stdio.h main() char c1 = A, c2 = Y; printf(“%d, %dn“, c1, c2 ); 程序运行后的输出结果是 ( A)输出格式不合法 ,输出出错信息 ( B) A, Y ( C) 65, 90 ( D) 65,89 16 若变量已正确定义,则 以下 for

6、循环 for ( x=0,y=0; ( y!=123 ) x+ ); ( A)执行 4次 ( B)执行 3次 ( C)执行次数不确定 ( D)执行 123次 17 若有说明语句: char c = 72 ; 则变量 c中存放的是 ( A) 2个字符 ( B) 1个字符 ( C) 3个字符 ( D)说明语句不合法 18 以下叙述正确的是 ( A) do-while语句构成的循环,当 while语句中的表达式值为 0时结束循环 ( B) do-while语句和 while-do构 成的循环功能相同 ( C) while-do语句构成的循环,当 while语句中的表达式值为非 0时结束循环 ( D)

7、 do-while语句构成的循环,必须用 break语句退出循环 19 有以下程序 #include stdio.h main() int a, b, c=241; a = c/100 % 9; b = ( -1 ) printf(“%d, %dn“, a, b ); 程序运行后的输出结果是 ( A) 2,1 ( B) 6,1 ( C) 6,0 ( D) 2,0 20 有以下程序 #include stdio.h main( ) int i ; for( i=1; i = 5; i+ ) if( i % 2 ) printf( “*“ ); else continue; printf( “#“

8、 ); printf( “$n“ ); 程序运行后的输出结果是 ( A) *#*#*#$ ( B) *#*#*$ ( C) *#*#$ ( D) *#*#*#*$ 21 若有说明语句 : int *ptr10; 以下叙述正确的是 ( A) ptr是一个具有 10个指针元素的一维数组,每个元素都只能指向整型变量 ( B) ptr是指向整型变量的指针 ( C) ptr是一个指向具有 10个整型元素的一维数组的指针 ( D) ptr是一个指向 10个整型变量的函数指针 22 有以下程序 #include stdio.h main() printf(“%dn“, NULL ); 程序运行后的输出结果是

9、 ( A) 0 ( B)变量无定义,输出不确定 ( C) -1 ( D) 1 23 函数调用语句: fun( ( exp1, exp2 ), ( exp1, exp2, exp3) ); 含有的实参个数是 ( A) 1 ( B) 4 ( C) 5 ( D) 2 24 若有定义语句 :int a10=0,1,2,3,4,5,6,7,8,9,*p=a;,以下选项中错误引用 a数组元素的是 (其中 0i 10) ( A) *(*(a+i) ( B) a p-a ( C) pi ( D) *( printf( “%d,%d,%dn“,a p-a , pi,*( 程序运行后的输出结果是 ( A) 11,

10、19,19 ( B) 12,20,20 ( C) 11,20,20 ( D) 12,19,20 26 有以下程序 #include stdio.h void fun( int *s, int t, int *k ) int p; for( p=0, *k=p; p t; p+ ) if( sp s*k ) *k = p; main() int a10 = 11,12,13,14,15,16,20,18,19,10 ,k ; fun( a,10, printf( “%d,%dn“,k, ak ); 程序运行后的输出结果是 ( A) 6,20 ( B) 10,9 ( C) 7,20 ( D) 10

11、,10 27 有以下说明语 句 char *s = “NameAddressn“; 指针 s所指字符串的长度是 ( A) 17 ( B) 15 ( C) 14 ( D)说明语句不合法 28 有以下程序 #include stdio.h #include string.h main() char str12 = s,t , r , i , n , g ; printf(“%dn“, strlen( str ) ); 程序运行后的输出结果是 ( A) 6 ( B) 7 ( C) 11 ( D) 12 29 有以下程序 #include stdio.h main() char *s6 = “ABCD

12、“, “EFGH“,“IJKL“,“MNOP“,“QRST“,“UVWX“ , *p ; int i; p = s; for( i = 0; i 4; i+ ) printf( “%s“, pi ); printf( “n“ ); 程序运行后的输出结果是 ( A) ABCDEFGHIJKLMNOP ( B) ABCDEFGHIJKL ( C) ABCD ( D) AEIM 30 有以下程序 #include stdio.h main() int i=1, j=3; printf(“%d,“ ,i+ ); int i=0; i+=j*2; printf(“%d,%d,“ ,i,j ); prin

13、tf(“%d,%dn“ ,i,j ); 程序运行后的输出结果是 ( A) 1,6,3,1,3 ( B) 1,6,3,2,3 ( C) 1,6,3,6,3 ( D) 1,7,3,2,3 31 有以下程序 #include stdio.h int fun(int a,int b) static int m=0, i=2; i +=m+1; m = i + a + b; return m; main() int k=4, m=1, p; p = fun( k,m ); printf(“%d,“, p); p = fun( k,m ); printf(“%dn“ ,p ); 程序运行后的输出结果是 (

14、 A) 8,17 ( B) 8,16 ( C) 8,8 ( D) 8,20 32 若有以下程序段 char str412 = “aaa“,“bbbb“,“ccccc“,“dddddd“,*strp4; int i; for( i=0; i 4; i+) strpi=stri; 则以下错误引用字符串的选项是(其中 0k 4) ( A) strp ( B) strk ( C) strpk ( D) strp 33 有以下程序 #include stdio.h #define F(x) 2.84+x #define PR(a) printf(“%d“ ,(int)(a) #define PRINT(

15、a) PR(a);putchar(n) main() PRINT( F(5)*2 ); 程序运行后的输出结果是 ( A) 12 ( B) 13 ( C) 15 ( D) 11 34 以下关于 fclose(fp)函数的叙述正确的是 ( A)当程序中对文件的所有写操作完成之后,必 须调用 fclose(fp)函数关闭文件 ( B)当程序中对文件的所有写操作完成之后,不一定要调用 fclose(fp)函数关闭文件 ( C)只有对文件进行输入操作之后,才需要调用 fclose(fp)函数关闭文件 ( D)只有对文件进行输出操作之后,才能调用 fclose(fp)函数关闭文件 35 若有以下定义和语句

16、 struct st int n; struct st *next; ; struct st a3 = 5, p= 则值为 6的表达式是 (提示:运算符 -的优先级高于 +) ( A) (*p).n+ ( B) p+ - n ( C) p - n+ ( D) (+p) - n 36 标准库函数 fgets( s,n,f )的功能是 ( A)从文件 f中读取长度不超过 n-1的字符串存入指针 s所指的内存 ( B)从文件 f中读取长度为 n的字符串存入指针 s所指的内存 ( C)从文件 f中读取 n个字符串存入指针 s所指的内存 ( D)从文件 f中读取 n-1个字符串存入指针 s所指的内存 3

17、7 有以下程序 #include stdio.h main() char c=A; int x=36, b; b= (x 2) printf(“%dn“, b ); 程序运行后的输出结果是 ( A) 1 ( B) 0 ( C) 2 ( D) 4 38 有以下程序 #include stdio.h typedef struct char name10; int age; ST; main() ST stud10= “Adum“, 15, “Muty“, 16, “Paul“, 17, “Johu“, 14, ; 程序运行后不能输出字符 u的语句是 ( A) printf(“%cn“, stud1

18、.name1 ); ( B) printf(“%cn“, stud3.name3 ); ( C) printf(“%cn“, stud2.name2 ); ( D) printf(“%cn“, stud0.name3 ); 39 设有定义: int a=64,b=8;,则表达式 (a int i, a6=1,2,3,4,5,6,k; fp = fopen(“data.dat“, “w+“); fprintf(fp, “%dn“, a0); for (i=1; i 6; i+) fseek(fp, 0L, 0); fscanf(fp, “%d“, fseek(fp, 0L, 0); fprint

19、f(fp, “%dn“, ai+k); rewind(fp); fscanf(fp, “%d“, fclose(fp); printf(“%dn“, k); 程序的运行结果是 ( A) 21 ( B) 6 ( C) 123456 ( D) 11 二、程序填空题 41 给定程序中,函数 fun的功能是:将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程 序的结构 ! 试题程序: #include stdio h vo

20、id fun char*s, int a, double f) /*found*/ 【 1】 fp; char ch; fp=fopen(“filel txt”, “w”); fprintf(fp, “ S d f n”, s, a, f); fclose(fp); fp=fopen(“filel txt”, “r”); printf(“ nThe result: nn”); ch=fgetc(fp); /*found*/ while(!feof(【 2】 ) /*found*/ putchar(【 3】 ); ch=fgetc(fp); putchar( n); fclose(fp); ma

21、in() char a10=“Hello!”; int b=12345; double c=98 76; fun(a, b, c); 三、程序修改题 42 假定整数数列中的数不重复,并存放在数组中。下列给定程序中函数 fun的功能是:删除数列中值为 x的元素,变量 n中存放数列中元素的个数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 mmn函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #define N 20 fun(int*a, int n, int X) int p=0, i, an=X; while(x!=ap) P=P+

22、1; /*found*/ if(P=n) retuEn一 1; else for(i=p, i n;i+) /*found*/ ai+1=ai; return n一 1: void main() int wN=一 3, 0, 1, 5, 7, 99, 10, 15, 30, 90), x, n, i; n=10; printf(“The original data: n”); for(i=0, i n, i+) printf(“ 5d”, wi); printf(“nInput x(to delete): ”); scanf(“ d”, x), prLntf(“Delete: d n”, x)

23、; n=fun(w, n, x); if(n=一 1) printf(“*No be found!* n n”); else printf(“The data after deleted: n”); for(i=0; i n, i+) printf(“ 5d”, wi), printf(“ n n”); 四、程序设计题 43 请编写函数 fun,其功能是:找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。数组元素中的值已在主函数中赋予。 主函数中 X是数组名, n是 x中的数据个数, max存放最大值, index存放最大值所在元素的下标。 注意:部分源程序给出如下。 请勿改动主函

24、数 main和其他函数中 的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include time h #include stdlib h #include stdio h void fun(int a, int n, int*max, int*d) voidmain() int i, X20, max, index, n=10; srand(unsigned)time(NULL); for(i=0; i =n, i+) Xi=rand() 50; printf(“ 4d”, xi); *输出一个随机教组 * printf(“ n”); fun(x, n, 相当于

25、i=i+1;,是合法赋值语句, A选项正确。 13 【正确答案】 C 【试题解析】 自增和自减运算符的两种用法:前置运算,运算符放在变量之前,规则是先使变量的值增(或减) 1,然后以变化后表达式的值参与其他运算:后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)。逗号表达式的计算过程是从左到右逐个求每个表达式的值,取最右边一个表达式的值作为该逗号表达式的值。逗号运算符的优先级低于赋值运算符。程序执行过程为: sum=5,pad=5;pAd=5,sum=6,pAd=6, pAd=7。输出 pad=5,C选项正确。 14 【正确答案】 A 【试题解析】 如果一个运算

26、符两边的运算数类型不同,要先将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算。程序执行过程为: a+b=5,5/2=2( int类型) , sqrt(y)=2.0( double类型), 2.0*1.2/2=1.2( double类型),z=2.0(由 int类型自动转换成 double类型) +1.2+10.5=13.7。 A选项正确。 15 【正确答案】 D 【试题解析】 一个整数,只要它的值在 0255范围之内,也可以用字符形式输出,输出之前,系统会将该整数转化 为相应的 ASCII码字符;字符也可以用整型来输出,输出的是对应的 ASCII值。 A的 ASCII值为 65,

27、 Y的 ASCII值为 89,D选项正确。 16 【正确答案】 A 【试题解析】 for循环语句格式: for(exp1;exp2;exp3)。 exp1通常用来给循环变量赋初值; exp2通常是循环条件,以便决定是否继续执行循环体; exp3通常可用来修改循环变量的值。程序执行过程为:赋初值 x=0,y=0;逻辑表达式 y!=123为真, x 4为真,则整个表达式 ( y!=123 ) “=“优先级低于“得 i=6;输出 i=6 , j=3;花括号内的 i与花括号外 i作用域不同,属于不同的变量,之后再输出 i=2,j=3。 B选项正确。 31 【正确答案】 A 【试题解析】 static变

28、量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初值为;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值。程序执行过程为:调用函数, m=0,i=2,i=i+m+1=3,m=8,返回 p=8,再次调用函数,m=8,i=3,i=i+m+1=12,m=12+4+1=17,返回 p=17, A选项正确。 32 【正确答案】 A、 D 【试题解析】 for循环实现将每个字符串的首地址赋给指针数组中每一个

29、元素。strp为指针数组首地址,不是字符串的引用。 strk为第 k个字符串的地址,表示第 k个字符串的引用。 strpk表示指针数组的第 k个元素,为第 k个字符串的地址,也是这个字符串的引用。 *strp取指针数组第一个元素,即为第一个字符数组的地址,也即 为第一个字符串的引用。选择 A、 D选项。 33 【正确答案】 A 【试题解析】 带参数的宏的调用格式:宏名(实参表),替换过程是,用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。将 PRINT( F(5)*2 )用 PR(F(5)*2);putchar(n)替换,将 PR(F(5)*2)用print

30、f(“%d“ ,(int)( F(5)*2)替换,再将 F(5)用 2.84+5替换,最后替换结果为printf(“%d“ ,(int)( 2.84+5*2);putchar(n),运行结果为: 12回车。 A选项正确。 34 【正确答案】 A 【试题解析】 对一个文件操作完成后,要将该文件关闭, “关闭 “就是使文件指针变量不再指向该文件。程序编写者应该在程序终止之前关闭所有文件,如果不关闭,文件将会丢失数据。因为,在向文件写数据时,是先将数据输出到缓冲区,待缓冲区充满后才正式输出给文件。如果当数据未充满缓冲区而程序结束运行,就会将缓冲区中的数据丢失。用 fclose函数关闭文件,可以避免这

31、个问题,它先把缓冲区中的数据输出到磁盘文件,然后才释放文件指针变量。所 以对文件的所有写操作完成之后必须要关闭文件, A选项正确, B选项错误。只要对文件进行操作后,都要调用 fclose文件关闭文件, C、 D选项错误。 35 【正确答案】 D 【试题解析】 定义指向结构体变量的指针 p,并将结构体数组首地址赋给 p。(+p)- n, p指针自加一指向数组第二个元素,其成员 n=6, D选项正确。 p+-n, p指向结构体数组第一个元素,其成员 n=5。 p- n+, p指向结构体数组第一个元素,其成员 n=5,由于 +是后缀,先取值,所以表达式为 5,之后再自加一。(*p).n+, *p为

32、 结构体数组第一个元素,其成员 n=5,先取值,表达式为 5。 36 【正确答案】 A 【试题解析】 fgets函数功能是从 f所指文件中读入 n-1个字符放入 s为起始地址的空间内;并在尾端自动加一个结束标志 “0“。同时将读 /写位置指针向前移动字符串长度个字节。在读出 n-1个字符之前,如遇到了换行符或 EOF,则读出结束, A选项正确。 B选项中 “读取长度为 n“错误。 C选项与 D选项中 “读取 n/n-1个字符串 “错误,读取的是 n-1个字符。 37 【正确答案】 A 【试题解析】 右移运算符, x=36, 执行 x 2后, x=9; “ *max=a0, *d=0; for(i=0; i n;i+) *将最大的 元素放入指针 max所指的单元,最大元素的下标放入 指针 d所指的单元 * if(*max ai) *max=ai; *d=i; 【试题解析】 查找最大值及其下标需要定义两个变量,该程序直接使用形参 max和 d,由于它们都是指针变量,所以在引用它所指向的变量时要对它进行指针运算。循环语句用来遍历数组元素,条件语句用来判断该数组元素是否最大。

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

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

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