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

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

1、国家二级( C语言)机试模拟试卷 15 及答案与解析 一、选择题 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.5 ( D) 0 16 若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是 ( )。 ( A) +i; ( B) n1=(n2/(n3=2); ( C) k=i=j; ( D) a=b+c=2; 17 下列关于逻辑运算符两侧运算对象的叙述中正确的是 ( )。 ( A)只能是整数 0或 1 ( B)

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

7、s=“01 aXy“); int i, n=0; for(i=0; si!=0; i+) if(si=z)n+; printf(“ da“,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= dn“, y); 程序的运行结果是 ( )。 ( A) y=0 ( B) y=1 ( C) y=2 ( D) y=3 22 下面的 for语句的 循环次数为 ( )。 for(x=1, y=0; (y!=19)

8、&(x void main() int a=0, b=1, c=2; if(+a0|+b0) +C; printf(“ d, d, (1“, 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=getchar0)!=n) switch(c-3) case 0: case 1: putchar(c+4); case 2: putchar(c+4); break; case 3: putchar(c+3); case 4: putchar(c+3

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

10、nf(“ c“, &c); scanff“ d“, &i): scanf(“ s“, &m); printf(“ c, d, sn“, 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 a41=1, 2, 3, 4, s; s=f(a, 2); printf(“ dn“, s); int flint t,

11、int n) if(n0)&(n #include“string h“ void fun(char*s, int n) char*t; int ij; for(i=0; istrlen(sj) t=si; si=si; sj=t; main() char*ss=“bcc“, “bcc“, “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 a=

12、0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *p=a, i; 其中 09,则对 a数组元素不正确的引用是 ( )。 ( A) apa ( 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)预处理命令可以放在程序中的任何位置 37 以下程序

13、的输出结果是 ( )。 #include #define F(x)2 84+x #define w(y)printf(” d-I, (int)(y) #define P(y)w(y) main() intx=2; P(F(5)*x); ( A) 12 ( B) 13 ( C) 14 ( D) 16 38 设有下面的定义: Stnuct 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 WrJ_teText(FTLE *); void Readq?ext(FTLE*); raain() (FTLE*fp; if(fp=fopen(“myfile4 txt“, “w“) =NULL) pri ntf(“open fail!n“); exit(0); WriteText(fp);

16、 fclose(fp); if(fp=fopen(“myfile4 txt“, “r“)=NULL) printf(“open fail!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(strcrnp(str, “一 1“)!=0) /*found*/ fputs(_2_, fw)j fputs(“n“, fw); gets(str); void Read

17、Text(FTLE*fr) char str81; printf f“nRead file and output to ScEeen: n“); fgets(str, 81, fr); while(!leof(fr) /*found*/ printf(“ s“, _3_); fgets(str, 81, fr); 三、程序修改题 42 给定程序 MODI1 C中函数 fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。 例如,若字符串为 abcd,则应输出: dcba。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的

18、结构 ! #include /*found*/ fun(char a) if(*a) fun(a+1); /*found*/ printf(“ c“*a); main() char s10=“abcd“; printf(“处理前字符 Ig= sn处理后字符串 =“, s); fun(s); printf(“n“); 四、程序设计题 43 请编写函数 fun,函数的功能是:将大于形参 m且紧靠 m的 k个素数存入 xx所指的数组中。例如,若输入 17, 5,则应输出: 19, 23, 29, 3 1, 37。 注意:部分源程序在文件 PROG1 C文件中。 请勿改动主函数 main和其他函数中的

19、任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include Void fun(int m, int k, int xx) Main() int m, n, z z1000; void NONO(); printf(“nPlease enter two integers: “); scanf(“ d d“, &m, &n); fun(m, n, z z); for(m=0 ; m0,所以条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算对象的真假,即不进行 +b操作,就可以直接得出整个表达式的值为逻辑 1,执行下面的 +c。 24 【正确

20、答案】 A 【试题解析】 题中 while循环的条件是:当从键盘读入的字符不是 n时,执行while循环。输入第一个字符 3时:执行 case 0,什么也不输出: case1,输出 7;case 2,输出 7;遇到 break 语句,跳出 switch 语句。输入第二个字符 8时: c一3=5,不执行任何语句。输入第三个字符 4时: c-3=1,执行 case 1输出 8; case 2,输出 8;遇到 break 语句,跳出 switch 语句。输入第四个字符 5时: c-3=2,执行 case 2,输出 9;遇到 break 语句,跳出 switch 语句。 25 【正确答案】 D 【试题

21、解析】 本题考查函数调用时的数值类型。函数调用时,函数返回值的类型既不由主调函数类 型所决定,也不由 retum语句中的表达式类型所决定,更不是由系统临时决定,而是由定义该函数时所指定的数值类型所决定。 26 【正确答案】 D 【试题解析】 scanf函数中的 “ c”表示通过键盘只读入一个字符型的数据,“&c”表示将该数据赋值给 c,所以 c=4。另外,以 “ d”格式读入数据时,只有遇到空格或者换行等间隔时符才停止读入,所以 i=56, m=789。 27 【正确答案】 C 【试题解析】 本题考查函数调用时的参数传递。 fun函数的调用形式为fun(int*b,int c,int d)。调

22、用数组时,用数组名表示一个指向数组的第一个元素的指针,因此调用时的形式为 fun(a,8,4)。 28 【正确答案】 D 【试题解析】 &是取地址运算符, Y=&B 是将 B 的地址赋给 Y,因此 Y值为EF01。 29 【正确答案】 B 【试题解析】 本题主要考查的是函数的递归调用,子函数 f 是一个递归函数,所以主函数中执行 f(a,2)时,其执行过程是 a3+f(a, 1)=a3+a2+f(a,0)=7。 30 【正确答案】 D 【试题解析】 本题考查如何对二维数组的元素赋值。选项 A),数组第二维的大小是 4,但是却赋值了 5个元素,数组溢出;选项 B), C语言规定,对于二维数组,只

23、可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式;选项 C),数组第一维的大小是 2,但是赋值超过了 2;选项 D),在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0。 31 【正确答案】 A 【试题解析】 本题考查一维数组的赋值。一维数组的一般定义格式为:类掣说明符数组名 常量表达式 。其中, “”中的内容可以是 整型常量,也可以是整型表达式。选项 A)中的 N是一个变量,所以错误。 32 【正确答案】 B 【试题解析】 *s 一 *t的输出实际是比较两个字符的 ASCII码值,比较两个字符串的大小。 33 【正确答案】 A 【试题解析】 从

24、。 main 函数入手,定义了一个一维数组并赋初值,接着调用函数 fun(),函数的功能是:比较数组中各元素的长度,按元素长度从小到大的顺序排列元素,所以执行 fun(ss,5)函数后, *ss=“xy“,“bcc“,“bbcc“ ,“aabcc“,“aaaacc“,所以调用 printf函数输出 ss0, ss4的值分别为 xy, aaaacc。 34 【正确答案】 D 【试题解析】 此题考查对一维数组的引用。对于已定义的数组 aM,数组元素的正确引用必须满足下标小于 M且为正整数。选项 D)中下标值出现溢出。 35 【正确答案】 A 【试题解析】 C程序的合法实数有两种表示形式,一种是小数

25、形式,另一种是指数形式,对于用指数形式表示的实数来说,需要注意的是字母 e或 E之前必须要有数字,且字母 e或 E后面的指数必须为整数,所以选项 A)为正 确答案。 36 【正确答案】 C 【试题解析】 本题考查预处理命令的特点。编译预处理命令的特点有: 为了区分一般的语句,预处理命令行都必须以 #开始,结尾不加分号; 预处理命令可以放在程序中的任意位置; 在程序中凡是以 #开始的语句都是预处理命令行。 37 【正确答案】 A 【试题解析】 本题考查带参数的宏定义及相关运算。 P(F(5)*x)=P(2 84+5*2)=P(12 84),调用 w(12 84),输出 (int)(12 84)=

26、12。 38 【正确答案】 D 【试题解析】 小题丰要考查按结构数组元素方式引用结构成员。 结构体变量的成员引用方法有 3种: 结构体变量名 -成员名; 指针变量名 -成员名; (*指针变量名 )-成员名。 因为 p是指针变量,所以应该将地址值赋给 p。 39 【正确答案】 B 【试题解析】 按逻辑化运算的特定作用主要有 3点: 用按位与运算将特定位清0或保留特定位; 用按位或运算将特定的位置设置为 1; 用按位异或运算将某个变量的特定位翻转或交换两个变量的值。 40 【正确答案】 D 【试题解析】 本题考查打开文件函数 fopen(),打开文件函数 fopen()的调用形式为: fp=fop

27、en(文件名,文件使用方式 )。 “文件使用方式 ”说叫:方式 “r”为以输入方式打开一个文本文件;方式 “a+”为以读 /写方式打开一个文本文件,保留文件中原有的数据;方式 “w+”为以读写方式建立一个新的文本文件;方式 “r+”为以读 /写方式打开一个文本文件。 二、程序填空题 41 【正确答案】 (1)*fw (2)str (3)str 【试题解析】 第一空:此处是补充函数参数名,参数类型已知是 FILE 文件指针, fputs(“n“, fW)是将字符 “11”写入文件,可知 fW是文件指针名,因此第一空处应该是 void Write Text(FILE*fw)。 第二空: while

28、(strcmp(str,“-1“)!=0)循环的结束标志是 str字符串等于 “-1”时循环退出,如果 str不等于 “-1”,执行循环体内容:用 fputs函数将 str字符串写入文件。 fputs函数的调用形式是: fputs(s, fp),其中 s是指向字符串的指针或字符串数组名, fp是指向将要被写入的文件的文件指针,因此第二处应该是 fputs(str,fw)。 第三空: while(!feof(fr)循环的作用是不断读取文件直到到达文件尾,每次最多读 81个,将读到的数据放在 str字符串里,并用 printf 输出到屏幕,因此第三处应该是 printf(“ s“,str)。 三、

29、程序修改题 42 【正确答案】 (1)void fun(char *a) (2)printf(“ c“, *a); 【试题解析】 (1)主函数中 “fun(、 s); ”语句中的 s是数组名,所以在 fun 函数中参数的定义应该是指针型, “fun(char a)”改为 “void fun(char*a)”。 (2)printf 函数的调用形式是: printf(格式字符串,输出项表 ),在格式字符串和输出项表之间有 “, ”,因此第二个标识处应该是 “printf(“ c“, *a); ”。 四、程序设计题 43 【正确答案】 int r=0, temp, p, sign=1; for(temp=m+1; temp=temp) if(k=0) /判断已有的素数个数 是否已经满足 sum个 xxr+=temp; /将素数 temp存 入数组 select k-; /将题目中要求的素数个数 减 1 else break; 【试题解析】 进入 fun 函数,根据前面的分析: 首先,定义、初始化变量 sign,作为素数的标志;定义 r,初始化为存储素 数数组的起始位。 然后,每判断一次。 temp 中的值是否为素数后,使 temp 的值增 1,再次对 temp中新的值进行判断其是否为素数,不断循环此过程,直到 m的值等于指定的个数,即函数中的 k个数。

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

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

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