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

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

1、国家二级( C语言)机试模拟试卷 68及答案与解析 一、选择题 1 算法的时间复杂度是指 ( )。 ( A)算法的长度 ( B)执行算法所需要的时间 ( C)算法中的指令条数 ( D)算法执行过程中所需要的基本运算次数 2 以下数据结构中,属于非线性 =数据结构的是 ( )。 ( A)栈 ( B)线性表 ( C)队列 ( D)二叉树 3 数据结构中,与所使用的计算机无关的是数据的 ( )。 ( A)存储结构 ( B)物理结构 ( C)逻辑结构 ( D)线性结构 4 内聚性是对模块功能 强度的衡量,下列选项中,内聚性较弱的是 ( )。 ( A)顺序内聚 ( B)偶然内聚 ( C)时间内聚 ( D

2、)逻辑内聚 5 在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的 ( )。 ( A)连接码 ( B)关系码 ( C)外码 ( D)候选码 6 检查软件产品是否符合需求定义的过程称为 ( )。 ( A)确认测试 ( B)需求测试 ( C)验证测试 ( D)路径测试 7 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构 成。下列图符名标识的图符不属于数据流图合法图符的是 ( )。 ( A)控制流 ( B)加工 ( C)存储文件 ( D)源和潭 8 待排序的关键码序列为 (15, 20, 9, 30, 67, 65, 45, 90),要按

3、关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码 15被放到第 ( )个位置。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 9 对关系 S和关系 R进行集合运算,结果中既包含关系 S中的所有元组也包含关系 R中的所有元组,这样的集合运算称为 ( )。 ( A)并运算 ( B)交运 算 ( C)差运算 ( D)除运算 10 下列选项中,不属于数据管理员 (DBA)职责的是 ( )。 ( A)数据库维护 ( B)数据库设计 ( C)改善系统性能,提高系统效率 ( D)数据类型转换 11 C语言规定,在一个 C程序中, main()函数的位置 ( )。 ( A)必须在系统调

4、用的库函数之后 ( B)必须在程序的开始 ( C)必须在程序的最后 ( D)可以在任意位置 12 以下叙述中正确的是 ( )。 ( A) C语言比其他语言高级 ( B) C语言可以不用编译就能被计算机识别执 行 ( C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 ( D) C语言出现的最晚,具有其他语言的一切优点 13 已知 int a=6:则执行 a+=a=a*a;语句后, a的值为 ( )。 ( A) 36 ( B) 0 ( C) -24 ( D) -60 14 下列叙述中错误的是 ( )。 ( A) C语句必须以分号结束 ( B)复合语句在语法上被看作一条语句 ( C)

5、空语句出现在任何位置都不会影响程序运行 ( D)赋值表达式末尾加分号就构成赋值语句 15 若有定义: int a=7; float x=2 5, y 4 7;则表达式 x+a 3*(int)(x+y) 2 4的值是 ( )。 ( A) 2 500000 ( B) 2 750000 ( C) 3 500000 ( D) 0 000000 16 若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是 ( )。 ( A) +i; ( B) n1=(n2 (n3=2); ( C) k=i=j; ( D) a=b+c=2; 17 下列关于逻辑运算符两侧运算对象的叙述中正确的是 ( )。 ( A)只

6、能是整数 0或 1 ( B)只能是整 数 0或非 0整数 ( C)可以是结构体类型的数据 ( D)可以是任意合法的表达式 18 若有说明 int a34;则 a数组元素的非法引用是 ( )。 ( A) a02*1 ( B) a13 ( C) a4-20 ( D) a 04 19 下列说法不正确的是 ( )。 ( A) int*ptr;指针指向整形数据 ( B) char*ptr;指针的类型是字符型指针 ( C) int*ptr;指针的类型是双重指针 ( D) int(*ptr)3;是一个指针 数组,数组共有三个元素,而三个元素是 int型指针 20 有以下程序 #include void ma

7、in() char s=“01aXy“); int i, n=0; for(i=0; si!=0; i+) if(si=z)n+; printf(“ d、 n“, n); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 2 ( C) 3 ( D) 5 21 有以下程序: #include main() int a=1, 2, 3, 4, y, *P= a3; -p; y=*p; printf(“y= d n“, y); 程序的运行结果是 ( )。 ( A) y=0 ( B) y=1 ( C) y=2 ( D) y=3 22 下面的 for语句的循环次数为 ( )。 for(x=1,

8、y=0; (y!=19)&(x void main() int a=0, b=1, c=2; if(+a0+b0) +c: printf(“ d, d, d“, a, b, c); ( A) 0, 1, 2 ( B) 1, 2, 3 ( C) 1, 1, 3 ( D) 1, 2, 2 24 有以下程序: #include main() int c; while(c=getchar()!= n switch(c-3) case 0: case 1: putchar(c+4); case 2: putchar(c+4); break; case 3: putchar(c+3); case 4: p

9、utchar(c+3); break; printf(“n“); 从第一列开始输入数据 (代表一个回车符 ): 3845,则程序输出结果为( )。 ( A) 77889 ( B) 77868 ( C) 776810 ( D) 77886610 25 C语言规定,函数返回值的类型是 ( )。 ( A)由调用该函数时的主调函数类型所决定 ( B)由 return语句中的表达式类型所决定 ( C)由调用该函数时系统临时决定 ( D)由定义该函数时所指定的数值类型决定 26 执行下列程序时输入 456789123,输出结果是 ( )。 #include main() char m80; intc, i

10、; scanf(“ c“, &c); scanf(“ d“, i); scanf(“ s“, m); printf(“ c, d, s n“, c, i, m); ( A) 456, 789, 123 ( B) 4, 789, 123 ( C) 4, 56, 789, 123 ( D) 4, 56, 789 27 已知下列函数定义: fun(int*b, int c, int d) int k; for(k=0; k int flint t, int n); main() int a4=1, 2, 3, 4, s; s=f(a, 2); printf(“ d n“, s); int flint

11、 t, int n) if(n0) &(n #include“string h“ void fun(char*s, int n) char*t; int i; j; for(i=0; istrlen(sj) t=si; si=sj; sj=t; main() char*ss=“bcc“, “bbcc“, “xy“, “aaaacc“, “aabcc“; fun(ss, 5); printf(“ s, s n“, ss0, ss4); 程序的运行结果是 ( )。 ( A) xy, aaaacc ( B) aaaacc, xy ( C) bee, aabcc ( D) aabcc, bcc 34

12、若已定义: int a=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *p=a, i; 其中 0i9,则对 a数组元素不正确的引用是 ( )。 ( A) ap-a ( B) *(&ai) ( C) pi ( D) a10 35 以下选项中可用作 C程序合法实数的是 ( )。 ( A) 1e0 ( B) 3 0e0 2 ( C) E9 ( D) 9 12E 36 以下叙述中不正确的是 ( )。 ( A)预处理命令行都必须以 号开始,结尾不加分号 ( B)在程序中凡是以 #号开始的语句行都是预处理命令行 ( C) C程序在执行过程中 对预处理命令进行处理 ( D)预处理命令可以放在程

13、序中的任何位置 37 以下程序的输出结果是 ( )。 #include #define F(x)2 84+x #define w(y)printf(“ D“, (int)(y) #define P(Y)w(y) main() intx=2; P(F(5)*x); ( A) 12 ( B) 13 ( C) 14 ( D) 16 38 设有下面的定义: stnlct st int a; float b; d; int*p; 要使 p指向结构变量 d中的 a成员,正确的赋值语句是 ( )。 ( A) *p=d a; ( B) p=&a; ( C) p=d a; ( D) p= d a; 39 交换两

14、个变量的值,不允许用临时变量,应该使用下列 ( )位运算符。 ( A) ( B) ( C) ( D) 40 如果需要打开一个已经存在的非空文件 “FILE”并进行修改,正确的语句是( )。 ( A) fp=fopen(“FILE“,“r“); ( B) fp=fopen(“FILE“, “a+“); ( C) fp=fopen(“FILE“, “w+“); ( D) fp=fopen(“FILE“, “r+“); 二、程序填空题 41 给定程序的功能是:从键盘输入若干行文本 (每行不超过 80个字符 ),写到文件myfile4 txt中,用 -1作为字符串输入结束的标志。然后将文件的内容读出显

15、示在屏幕上。文件的读写分别由自定义函数 ReadText和 WriteText实现。 请在程序的下划线处填入正确的内容并把下划线删除 ,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include #include #include void WriteText(FILE*); void ReadText(FILE*); main() FTLE*fp; if(fp=fopen(“myfile4 txt“, “w“) =NULL) printf(“open fail! n“); exit(0); WriteText(f

16、p); fclose(fp); if(fp=fopen(“myfile4 txt“, “r“)=NULL) printf(“open faill n“); exit(0); ReadText(fp); fclose(fp); *found* void WriteText(FILE_1_) char str81; printf(“ nEnter string with -1 to end: n“); gets(str); while(strcmp(str, “-1“)!=0) *found* fputs(_2_, fw); fputs(“ n“, fw); gets(str); void Rea

17、dText(FTLE *fr) char str81; printf(“ nRead file and output to screen : n“); fgets(str, 81, fr); whlle(!feof(fr) *found* printf(“ s“, _3_); fgets(str, 81, fr); 三、程序修改题 42 给定程序 MODI1 C中 fun函数的功能是:求出以下分数序列的前 n项之和。和值通过函数值返回 main函数。 例如,若 n=5,则应输出:8 391667。 请改正程序中的错误,使它能得出正确的结果。 注 意:不要改动main函数,不得增行或删行,也不得

18、更改程序的结构 !#include*found* fun(int n) int a=2, b=1, C, k; double s=0 0; for(k=1; k 四、程序设计题 43 请编一个函数 fun,函数的功能是使实型数保留 2位小数,并对第三位进行四舍五入 (规定实型数为正数 )。 例如:实型数为 1234 567,则函数返回 1234 572000; 实型数为 1234 564,则函数返回 1234 562000。 注意:部分源程序存在文件 PROG1 C文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include fl

19、oatun(float h) main() float a; void NONO(); printf (“Enter a: “); scanf (“ f“, a); printf(“The original data is: “); printf(“ f n n“, a); printf(“The result: f n“, fun (a); NONO(); void NONO() * 请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 * int i; float a; FILE *rf, *wf; rf=fopen(“in dat“, “r“); wf=fopen(

20、“out dat“, “w“); for(i=0, i0,所以条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算对象的真假,即不进行 +b操作,就可以直接得出整个表达式的值为逻辑 1,执行下面的 +c。 24 【正确答案】 A 【试题解析】 题中 while循环的条件是:当从键盘读入的字符不是 n时,执行while循环。 输入第一个字符 3时:执行 case 0,什么也不输出; case 1,输出 7; case 2,输出 7;遇到 break语句,跳出 switch语句。输 入第二个字符 8时: c-3=5,不执行任何语句。输入第三个字符 4时: c-

21、3=1,执行 case 1输出 8; case 2,输出 8;遇到 break语句,跳出 switch语句。输入第四个字符 5时: c-3=2,执行 case 2,输出 9;遇到 break语句,跳出 switch语句。 25 【正确答案】 D 【试题解析】 本题考查函数调用时的数值类型。函数调用时,函数返回值的类型既不由主调函数类型所决定,也不由 return语句中的表达式类型所决定,更不是由系统临时决定,而是由定义该函数时所指定的数值类型 所决定。 26 【正确答案】 D 【试题解析】 scanf函数中的 “ c”表示通过键盘只读入一个字符型的数据, “c”表示将该数据赋值给 c,所以 c

22、=4。另外,以 “ d”格式读入数据时,只有遇到空格或者换行等间隔时符才停止读入,所以 i=56, m=789。 27 【正确答案】 C 【试题解析】 本题考查函数调用时的参数传递。 fun函数的调用形式为fun(int*b, int c, int d)。调用数组时,用数组名表示一个指向数组的第一个元素的指针,因此调用时的形式为 fun(a, 8, 4)。 28 【正确答案】 D 【试题解析】 &是取地址运算符, Y=&B是将 B的地址赋给 Y,因此 Y值为EF01。 29 【正确答案】 B 【试题解析】 本题主要考查的是函数的递归调用,子函数 f是一个递归函数,所以主函数中执行 f(a, 2

23、)时,其执行过程是 a3+f(a, 1)=a3+a2+f(a, 0)=7。 30 【正确答案】 D 【试题解析】 本题考查如何对二维数组的元素赋值。 选项 A,数组第二维的大小是 4,但是却赋值了 5个元素,数组溢出;选项 B,C语言规定,对于二维数组, 只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式;选项 C,数组第一维的大小是 2,但是赋值超过了 2;选项 D,在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0。 31 【正确答案】 A 【试题解析】 本题考查一维数组的赋值。一维数组的一般定义格式为:类型说明符数组名 常量表达式 。其中,

24、 “”中的内容可以是整型常量,也可以是整型表达式。选项 A中的 N是一个变量,所以错误。 32 【正确答案】 B 【试题解析】 *s-*t的输出实际是比较两个字 符的 ASCII码值,比较两个字符串的大小。 33 【正确答案】 A 【试题解析】 从 main函数入手,定义了一个一维数组并赋初值,接着调用函数fun(),函数的功能是:比较数组中各元素的长度,按元素长度从小到大的顺序排列元素,所以执行 fun(ss, 5)函数后, *ss=“xy“, “bcc“, “bbcc“, “aabcc“,“aaaacc“,所以调用 printf函数输出 ss0, ss4的值分别为 xy, aaaacc。

25、34 【正确答案】 D 【试题解析】 此题考查对一维数组的引用。 对于已定义的数组 aM,数组元素的正确引用必须满足下标小于 M且为正整数。选项 D中下标值出现溢出。 35 【正确答案】 A 【试题解析】 C程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对于用指数形式表示的实数来说,需要注意的是字母 e或 E之前必须要有数字,且字母 e或 E后面的指数必须为整数,所以选项 A为正确答案。 36 【正确答案】 C 【试题解析】 本题考查预处理命令的特点。编译预处理命令的特点有: 为了区分一般的语句,预处理命令行都必须以撑开始,结尾不加分号; 预处理 命令可以放在程序中的任意位置

26、; 在程序中凡是以 #开始的语句都是预处理命令行。 37 【正确答案】 A 【试题解析】 本题考查带参数的宏定义及相关运算。P(F(5)*x)=P(2 84+5*2)=P(12 84),调用 w(12 84),输出 (int)(12 84)=12。 38 【正确答案】 D 【试题解析】 本题主要考查按结构数组元素方式引用结构成员。结构体变量的成员引用方法有 3种: 结构体变量名成员名; 指针变量名 -成员名; (*指针变量名 )成员名。因为 p是指针变量,所以应该将地 址值赋给 p。 39 【正确答案】 B 【试题解析】 按逻辑位运算的特定作用主要有 3点: 用按位与运算将特定位清0或保留特定

27、位; 用按位或运算将特定的位置设置为 1; 用按位异或运算将某个变量的特定位翻转或交换两个变量的值。 40 【正确答案】 D 【试题解析】 本题考查打开文件函数 fopen(),打开文件函数 fopen()的调用形式为: fp=fopen(文件名,文件使用方式 )。 “文件使用方式 ”说明:方式 “r”为以输入方式打开一个文本文件;方式 “a+”为以读写方式打开一个文本文件,保留文件中原有的数据;方式 “w+”为以读写方式建立一个新的文本文件;方式 “r+”为以读写方式打开一个文本文件。 二、程序填空题 41 【正确答案】 (1)*fw (2)str (3)str 【试题解析】 第一空:此处是

28、补充函数参数名,参数类型已知是 FILE文件指针, fputs(“ n“, fw)是将字符 “ n“写入文件,可知 fw是文件指针名,因此第一空处应该是 void WriteText(FILE*fw)。 第二空: while(strcmp(str, “-1“)!=0)循环的结束标志 是 str字符串等于 “-1”时循环退出,如果 s仃不等于 “-1”,执行循环体内容:用 fputs函数将 str字符串写入文件。 fputs函数的调用形式是: fputs(s, fp),其中 s是指向字符串的指针或字符串数组名, fp是指向将要被写入的文件的文件指针,因此第二处应该是fputs(str, fw)。

29、 第三空: while(!feof(fr)循环的作用是不断读取文件直到到达文件尾,每次最多读 81个,将读到的数据放在 str字符串里,并用 printf输出到屏幕,因此第三处应该是 printf(“ s“, str)。 三、程序修改题 42 【正确答案】 (1)double fun(int n) (2)c=a; a+=b; b=c; 【试题解析】 (1)fun函数中的语句 “double s=0 0; ”以及 “retum(s); ”说明 fun函数具有 double返回值,所以应将 “fun(int n)”改为 “double fun(int n)”。 (2)根据题干中给出的公式可以推出每一项的特点,知道每一项的 b值是前一项的 c值,所以第二个标识下 “b+=c; ”改为 “b=c; ”。 四、程序设计题 43 【正确答案】 long w; w=h*1000+5; return(float)w 1000; 【试题解析】 进入 fun函数,根据前面的分析: 本题可以分解为,把一个浮点数截成只带两位小数的算法和将小数点后第三位四舍五入的算法。其中,四舍五入,如果值大于 5那么加上 5就会进位;反之,如果小于 5,加上 5就不会进位,所以在扩大后的值加上 5,实现四舍五入的截取。

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

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

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