[计算机类试卷]国家二级(C语言)机试模拟试卷32及答案与解析.doc
《[计算机类试卷]国家二级(C语言)机试模拟试卷32及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级(C语言)机试模拟试卷32及答案与解析.doc(29页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级( C语言)机试模拟试卷 32及答案与解析 一、选择题 1 下列关于算法复杂度叙述正确的是 ( A)最坏情况下的时间复杂度一定高于平均情况的时间复杂度 ( B)时间复杂度与所用的计算工具无关 ( C)对同一个问题,采用不同的算法,则它们的时间复杂度是相同的 ( D)时间复杂度与采用的算法描述语言有关 2 设有栈 S和队列 Q,初始状态均为空。首先依次将 A,B,C,D,E,F入栈,然后从栈中退出三个元素依次入队,再将 X,Y,Z入栈后,将栈中所有元素退出并依次入队,最后将队列中所有元素退出,则退队元素 的顺序为 ( A) DEFXYZABC ( B) DEFXYZABC ( C) FE
2、DXYZCBA ( D) DEFZYXABC 3 下列叙述中正确的是 ( A)有两个指针域的链表称为二叉链表 ( B)循环链表是循环队列的链式存储结构 ( C)带链的栈有栈顶指针和栈底指针,因此又称为双重链表 ( D)结点中具有多个指针域的链表称为多重链表 4 某二叉树共有 845个结点,其中叶子结点有 45个,则度为 1的结点数为 ( A) 400 ( B) 754 ( C) 756 ( D)不确定 5 软件需求分析阶段的主要任务是 ( A)确定软件开发方法 ( B)确定软件开发工具 ( C)确定软件开发计划 ( D)确定软件系统的功能 6 下面对软件测试描述错误的是 ( A)严格执行测试计
3、划,排除测试的随意性 ( B)随机地选取测试数据 ( C)随机地选取测试数据 ( D)软件测试是保证软件质量的重要手段 7 结构化程序的三种基本控制结构是 ( A)顺序、选择和重复(循环) ( B)过程、子程序和分程序 ( C)顺序、选择和调用 ( D)调用、返回和转移 8 数据库中对 概念模式内容进行说明的语言是 ( A)数据定义语言 ( B)数据操纵语言 ( C)数据控制语言 ( D)数据宿主型语言 9 某个工厂有若干个仓库,每个仓库存放有不同的零件,相同零件可能放在不同的仓库中。则实体仓库和零件间的联系是 ( A)多对多 ( B)一对多 ( C)多对一 ( D)一对一 10 有三个关系
4、R、 S和 T如下:则由关系 R和 S得到关系 T的操作是 ( A)交 ( B)差 ( C)并 ( D)选择 11 以下叙述正确的是 ( A)计算机只接收由 0和 1代码组成的二进制指 令或数据 ( B)计算机只接收由 0和 1代码组成的十进制指令或数据 ( C)计算机可直接接收并运行 C源程序 ( D)计算机可直接接收并运行任意高级语言编写的源程序 12 若有 C语言表达式 2+3*4+7/3,以下选项中叙述正确的执行顺序是 ( A)先执行 3*4得 12,再执行 7/3得 2.5,最后执行 2+12+2.5得 16.5 ( B)先执行 3*4得 12,再执行 2+12得 14,再执行 7/
5、3得 2,最后执行 14+2得 16 ( C)先执行 7/3得 2,再执行 3*4得 12,再执行 12+2得 14,最后执行 2+14得 16 ( D)先执行 2+3得 5,再执行 5*4得 20,再执行 20+7得 27,最后执行 27/3得 9 13 若有定义: char c; int d; 程序运行时输入: c=1,d=2回车,能把字符 1输入给变量 c、整数 2输入给变量 d的输入语句是 ( A) scanf(“c=%d d=%d“, ( B) scanf(“c=%c d=%d“, ( C) scanf(“c=%d,d=%d“, ( D) scanf(“c=%c,d=%d“, 14
6、以下选项中,与 n=i+ 完全等价的表达式是 ( A) n=i,i=i+1 ( B) n+=i+1 ( C) i=i+1,n=i ( D) n=+i 15 设有定义: int n = 1234; double x = 3.1415; 则语句 printf(“%3d,%1.3fn“, n, x); 的输出结果是 ( A) 1234,3.142 ( B) 123,3.142 ( C) 1234,3.141 ( D) 123,3.141 16 有以下程序 #include stdio.h main( ) int a,b; for (a=0; a 3; a+) scanf(“%d“, switch(b
7、) default: printf(“%d,“, +b); case 1: printf(“%d,“, +b); case 2: printf(“%d,“, +b); 执行时输入: 1 2 3回车,则输出结果是 ( A) 2,2,3,4,4,4, ( B) 2,3,4, ( C) 2,3,3,4,5,6, ( D) 2,3,4,3,4,4, 17 设变量 m为 float类型,变量 n为 int类型,则以下能实现将 m中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是 ( A) m=(m*100+0.5)/100.0 ( B) n=m*100+0.5, m=n/100.0 ( C) n
8、=m/100+0.5, m=n*100.0 ( D) m=m*100+0.5/100.0 18 有以下程序 #include stdio.h main( ) int a = 1, b = 1; for( ; a-; ) b-; printf(“%d,%dn“, a, b); 程序运行后的输出结果是 ( A) -1,0 ( B) 0,0 ( C) -1,-1 ( D) 1,1 19 若有定义: char s30 = 0; 运行时输入: This is a string.回车 则以下不能正确读入整个字符串: This is a string. 到字符数组 s 中的语句组是 ( A) i = 0;w
9、hile (c=getchar()!=n) si+ = c; ( B) gets(s); ( C) for (i=0; (c=getchar() != n; i+) si = c; ( D) scanf(“%s“, s); 20 有如下程序 #include stdio.h main( ) int a = 0, b = 1; if (a+ else printf(“FALSE“); printf(“_OUT:a=%d,b=%dn“, a, b); 程序运行后的输出结果是 ( A) FALSE_OUT:a=1,b=1 ( B) FALSE_OUT:a=0,b=2 ( C) TRUE_OUT:a=
10、1,b=2 ( D) TRUE_OUT:a=0,b=1 21 有如下程序 #include stdio.h main( ) int i, data; scanf(“%d“, for (i=0; i 5; i+) if (i data) continue; printf(“%d-“, i); 程序运行时,从键盘输入: 3回车后,程序输出结果为 ( A) 3-4- ( B) 1-2-3- ( C) 0-1-2- ( D) 0-1-2-3- 22 有以下程序 #include stdio.h main( ) int a = 0, b = 1; if (+a = b+) printf(“1“); el
11、se printf(“0“); printf(“a=%d,b=%dn“, a, b); 程序运行后的输出结果是 ( A) 1a=0,b=1 ( B) 0a=1,b=2 ( C) 1a=1,b=2 ( D) 0a=0,b=2 23 有如下程序段 for (i=0; i 10; i+) if (i = 5) break; 则循环结束后 i的值为 ( A) 1 ( B) 0 ( C) 5 ( D) 10 24 设有定义: int a=0,b=1;,以下表达式中,会产生 “短路 “现象,致使变量 b的值不变 的是 ( A) a+ i 10;i+) if(i 5) break; 则循环结束后 i的值为
12、( A) 10 ( B) 5 ( C) 9 ( D) 6 26 有以下程序段 int x ,i ; for(i=1;i =100;i+) scanf(“%d“, if(x 0) continue; printf(“%4dn“,x); 下面针对上述程序段的描述正确的是 ( A)最多可以输出 100个非负整数 ( B)当 x 0时结束整个循环 ( C)当 x =0时没有任何输出 ( D) printf函数调用语句总是被跳过 27 关于地址和指针,以下说法正确的是 ( A)通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量 ( B)可以取一个常数的地址赋值给同类型的指针变量 ( C)
13、可以取一个表达式的地址赋值给同类型的指针变量 ( D)可以取一个指针变量的地址赋 值给基类型相同的指针变量 28 有以下程序 #include stdio.h #define N 4 void fun(int aN) int i; for(i=0; i N; i+) a0i += aN-1N-1-i; main( ) int xNN= 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12, 13,14,15,16, i; fun(x); for (i=0;i N; i+) printf(“%d,“, xii); printf(“n“); 程序运行后的输出结果是 ( A) 4,7
14、,10,13, ( B) 1,6,11,16, ( C) 17,6,11,16, ( D) 5,13,21,29, 29 关于 C语言函数说明的位置,以下叙述正确的是 ( A)在函数说明之后对该函数进行调用,编译时不会出现错误信息 ( B)函数说明可以出现在源程序的任意位 置,在程序的所有位置对该函数的调用,编译时都不会出现错误信息 ( C)函数说明只能出现在源程序的开头位置,否则编译时会出现错误信息 ( D)函数说明只是为了美观和编译时检查参数类型是否一致,可以写也可以不写 30 以下叙述正确的是 ( A)不能在数组说明符的一对方括号中使用表达式 ( B) char c1, *c2, *c3
15、, c42; 是 C语言的合法语句 ( C)数组下标的最小值可以是负值 ( D)若有数组定义 int array5; 则语句 printf(“%d“,array1.23);是合法的 31 有以下程序 #include stdio.h main( ) int a = 2, *ptr; ptr = *ptr = 8; a = (*ptr) +; printf(“%d,%dn“, a, *ptr); 程序运行后的输出结果是 ( A) 9,9 ( B) 8,9 ( C) 2,4 ( D) 0,4 32 有以下程序 #include stdio.h main( ) int i, *ptr; int ar
16、ray4 = 0,1; for (ptr=array, i=0; i 3; i+, ptr+) if (*ptr = 0) putchar(#); else putchar(M + *ptr); printf(“n“); 程序运行后的输出结果是 ( A) MO# ( B) #F# ( C) MMM ( D) #N# 33 有以下程序段: int m23,(*p)3; p=m; 则以下对 m数组元素的引用正确的是 ( A) (p+1)0 ( B) *(*(p+2)+1) ( C) *(p1+1) ( D) p1+2 34 有以下程序 #include stdio.h char *a = “you
17、“; char *b = “Welcome you to Beijing!“; main( ) char *p; p = b; while (*p != *a) p+; printf(“%sn“, p); 程序运行后的输出结果是 ( A) you to Beijing! ( B) to Beijing! ( C) Welcome you to Beijing! ( D) Beijing! 35 有以下程序 #include stdio.h void f(int x, int n) if (n 1) printf(“%d,“, xn-1); f(x, n-1); printf(“%d,“, xn
18、-1); else printf(“%d,“, x0); main( ) int z3 = 1, 2, 3; f(z,3); printf(“n“); 程序运行后的输出结果是 ( A) 3,1,3, ( B) 3,2,1,2,3, ( C) 1,2,3,1,2,3, ( D) 1,2,3,2,1, 36 有以下程序 #include stdio.h int a = 2; int f(int k) static int n; int m; m = n = 0; n+; a+; m+; k+; return n+m+a+k; main( ) int k; for (k=0; k 2; k+) pr
19、intf(“%d,“, f(k); printf(“n“); 程序运行后的输出结果是 ( A) 6,8, ( B) 6,9, ( C) 6,6, ( D) 6,7, 37 有以下程序 #include stdio.h int sum(int* array, int len) if (len = 1) return array1; else return array1 + sum(array+1, len-1); main( ) int array5 = 0,9,1,2, res; res = sum(array, 3); printf(“%dn“, res); 程序运行后的输出结果是 ( A)
20、 27 ( B) 11 ( C) 8 ( D) 12 38 有以下程序 #include stdio.h main() char s10 = “verygood“, *ps = s; ps = “too“; s4 = 0; puts(ps); 程序的运行结果是 ( A) too ( B) verygood ( C) very ( D) good 39 以下叙述中错误的是 ( A)函数中的形参属于局部变量 ( B)在函数内部定义的变量只能在本函数范围内使用 ( C)在函数外部定义的变量在所有函数中都有效 ( D)在不同的函数中可以使用相同名字的变量 40 有以下程序 #include stdio
21、.h main( ) FILE *fp; 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+) rewind(fp); fprintf(fp, “%dn“, ai); rewind(fp); fscanf(fp, “%d“, fclose(fp); printf(“%dn“, k); 程序运行后的输出结果是 ( A) 6 ( B) 21 ( C) 123456 ( D) 654321 二、程序填空题 41 下列给定程序中,函数 fun的功能是:把形
22、参 s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移池字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动 (注:字符串的长度大干等于 2)。 例如,形参 8所指字符串为 “abedefgh”,执行结果为 “ahebedgf”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h void fun(char*s) int i, n, k; char c, n=0; for(i=0, si!= 0, i+ n+; if(n 2=0) /*fou
23、nd*/ k=n一 【 1】 ; else k=n2; /*found*/ c=【 2】 ; for(i=k一 2, i =1; i=i一 2) Si+2=si; /*found*/ s1=【 3】 ; ) main() char s80=“abcdefgh”; printf(“ nThe original string is: sn”, s; fun(s); printf(“ nThe result is: S n”, s); 三、程序修改题 42 下列给定程序中函数 fun的功能是:用递归算法计算斐波拉契数列中第 n项的值。从第 1项起,斐波拉契数列为: 1, 1, 2, 3, 5, 8,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 模拟 32 答案 解析 DOC
