[计算机类试卷]国家二级(C语言)机试模拟试卷142及答案与解析.doc
《[计算机类试卷]国家二级(C语言)机试模拟试卷142及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级(C语言)机试模拟试卷142及答案与解析.doc(29页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级( C语言)机试模拟试卷 142及答案与解析 一、选择题 1 下列关于循环队列的叙述中正确的是 ( )。 ( A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 ( B)循环队列中元素的个数是由队头指针和队尾指针共同决定的 ( C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况 ( D)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 2 设有一个初始状态为空的栈。现将元素 A、 B、 C、 1、 2、 3依次入栈,然后再依次出栈,则出栈后的元素顺序为以下哪一项 ?( ) ( A) 123ABC ( B) CBA321 ( C) ABC123 ( D
2、) 321CBA 3 在长度为 m的有序线性表中进行二分查找,最坏情况下需要比较的次数是 ( )。 ( A) O(m) ( B) O(m2) ( C) O(1og2m) ( D) O(mlog2m) 4 下列叙述中正确的是 ( )。 ( A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 ( B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 ( C)顺序存储结构能存储有序表,链式存储结构不能存储有序表 ( D)链式存储结构比顺序存储结构节省存储空间 5 数据流图中带有箭头的线段表示的是 ( )。 ( A)控制流 ( B)事件驱动 ( C)模块调用 ( D)数据
3、流 6 在软件开发的需求分析阶段,可以使用下列哪种工具 ?( ) ( A) NS图 ( B) DFD图 ( C) PAD图 ( 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 在以下选项中,按照 C语言规定,不能出现在标识符中的是 ( )。 ( A)大写字母 ( B)下划线 ( C)数字字符 ( D)连接符 12 在以下选项中,能用作 C语言数据常量的是 ( )。 ( A) 10L ( B) 083 ( C) 0 5e1 2 ( D) o30F 13 下列叙述中错误的是 ( )。 ( A)一个 C语言程序只能实现一种算法 ( B) C语言程序可以由多个程序文件组成 ( C) C语言程序可以由一个或多个函数组成
5、 ( D)一个 C语言函数可以单独作为一个 C语言程序文件存在 14 假如下列选项中的变量已正确定义并成功赋值,其中正确的表达式是 ( )。 ( A) int(22 1 2) ( B) n=y+m+5, +y ( C) x=y*3=x+k ( D) x=21 7 0 15 设在 C语言程序中已经定义了整型变量 int x=2;,以下表达式中,值不为 6的是 ( )。 ( A) 2*x, x+=2 ( B) x+, 2*x ( C) x*=(1+x) ( D) x*=x+1 16 有以下 C语言程序: #inelude void main() int x, y, z; x=y=1; z=x+,
6、y+, +y; printf( d, d, d n, x, y, z); 程序运行后的输出结 果是 ( )。 ( A) 2, 3, 3 ( B) 2, 3, 2 ( C) 2, 2, 1 ( D) 2, 3, 1 17 设 x,y已经成功定义并赋值,则与表达式 (xy)? (x+): (y+)中的条件表达式(x一 y)等价的是 ( )。 ( A) (xy 0) ( B) (x一 y 0x一 y 0) ( C) (xy 0) ( D) (x一 y=0) 18 有以下 C语言程序: #include void main() char ch1, ch2; ch1=R+5一 2; ch2=R+5一 1
7、3; printf( c, d n, ch1, ch2); 已知字母 R的 ASC 码为 82,程序运行后的输出结果是 ( )。 ( A) U, 84 ( B) T, 83 ( C) U, T ( D) T, U 19 有以下程序: #include void main() int x=2, y=3; if(! x)y+=3; else if(x=0) if(x)y+=2; else y+; printf( d n, y); 程序运行后的输出结果是 ( )。 ( A) 3 ( B) 2 ( C) 1 ( D) 0 20 在 C语言中定义下列变量并赋值: double x=1 333; int
8、a=3, b=2, c=1;则下列选项中正确的 switch语句是 ( )。 ( A) switch(a+b) casel: printf(* n); case2+l: printf(* n); ( B) switch(int)x); ease1: printf(* n); case2: printf(* n); ( C) switch(x) case1 333: printf(* n); case 2 0: printf(* n); ( D) switch(a+b) case 1: printf(* n); case c: printf(* n); 21 有以下程序: #include vo
9、id main() int i=15; for(; i 0; i一一 ) if(i 5=0)printf( d,一一 i); 程序运行后的输出结果是 ( )。 ( A) 1494 ( B) 15105 ( C) 151005 ( D) 140904 22 有以下程序: #include void main() int i, j, m=1; for(i=1; i 3; i+) for(j=3; j 0; j一一 ) if(i*j 3)break; m*=i*j; printf(m= d n, m); 程序运行后的输出结果是 ( )。 ( A) m=4 ( B) m=2 ( C) m=6 ( D)
10、 m=5 23 有以下程序: include int fun(int x, int y) if(x! =y)return(x+y) 2); else return(x); void main() int a=3, b=5, c=6; printf( d n, fun(fun(b, c), 2*a); 程序运行后的输出结果是 ( )。 ( A) 6 ( B) 5 ( C) 8 ( D) 12 24 下列选项中,定义 C语言数组的正确语句是 ( )。 ( A) int N=10; int xN; int xN; ( B) #define N 10 int xN ( C) int x010 ; (
11、D) int x; 25 有以下程序: #include stdio h void main() int i, *p=NULL; *p=&i; printf(Inputi: ); scanf( d, &p); printf(outputi: ); printf( d n, p); 该程序试图通过指针 p为变量 i读入数据并输出,但程序有多处错误,以下语句正确的是 ( )。 ( A) *p=&i; ( B) int i, *p=NULL; ( C) scanf( d, &p) ( D) printf( d n, p); 26 有以下程序: #include int add(int x, int
12、y)return(x+y); void main() int s, (*pf)(), a=1, b=2; pf=add; 则以下函数调用语句错误的是 ( )。 ( A) s=pf(a, b); ( B) s=add(a, b); ( C) s=(*pf)(a, b); ( D) s=*pf(a, b); 27 有以下程序: #include void main() int a: 7, 8, 9, 10, i; for(i=0; i 4; i+) switch(i 3) case 0: switch(ai 3) case 0: ai+; break; case 1: ai; break; cas
13、e 1: ai=0; for(i=0; i 4; i+)printf( d, ai); printf( n); 程序运行后的输出结果是 ( )。 ( A) 0696 ( B) 6010 ( C) 0906 ( D) 6099 28 有以下程 序: #include void main() int a33=0, 1, 2, 0, 1, 2, 0, 1, 2, i, j, s=10; for(i=0; i 3; i+) for(j=1; j =i; j+) s+=aiaji; printf( d n, s); 程序运行后的输出结果是 ( )。 ( A) 12 ( B) 13 ( C) 11 ( D
14、) 15 29 以下语句中存在语法错误的是 ( )。 ( A) char ss620; ss1=right? ; ( B) char ss20=fight; ( C) char*ss6; ss1=right? ; ( D) char*ss=right? ; 30 以下不能将 s所指字符串正确复制到 t所指存储空间的是 ( )。 ( A) do*t+=*s+; while(*s); ( B) for(i=0; ti=si; i+); ( C) while(*t=*s)t+; s+; ( D) for(i=0, j=0; ti+=sj+; ); 31 有以下程序 : #include void s
15、wap(char*ch1, char*ch2) char ch; ch=*ch1; *ch1=*ch2; *ch2=ch; void main() char*str1=xyz, *str2=abc; swap(str1, str2); printf( s, s n, str1, str2); 程序执行后的输出结果是 ( )。 ( A) xyz, cba ( B) xyz, abc ( C) ayz, xbc ( D) abc, xyz 32 有以下 函数: int fun(char*x, char*y) int m=0; while(*x=*y)&*x! = 0)x+; y+; m+; ret
16、urn m; 函数的功能是 ( )。 ( A)将 y所指字符串赋给 x所指存储空间 ( B)统计 x和 y所指字符串中最前面连续相同的字符个数 ( C)查找 x和 y所指字符串中是否有 0 ( D)统计 x和 y所指字符串中相同的字符个数 33 有以下程序: #lnclude int fun() static int i=1; i*=3; retum i; void main() int k, s=1; for(k=1; k =3; k+)s*=fun(); printf( d n, s); 程序运行后的输出结果是 ( )。 ( A) 729 ( B) 27 ( C) 81 ( D) 243
17、34 在 C语言源文件中定义的全局变量的作用域为 ( )。 ( A)所在文件的全部范围 ( B)所在程序的全部范围 ( C)所在函数的全部范围 ( D)由具体定义位置和 extern说明来决定范围 35 以下叙述中不正确的是 ( )。 ( A)用 typedef可以为各种类型起别名,但不能为变量起别名 ( B)可以用 typedef将已存在的类型用一个新的名字来代表 ( C)用 typedef定义新的类型名后,原有类型名仍有效 ( D)可以通过 typedef增加新的类型 36 有以下程序: #include struct S int x, y; data2=1, 2, 10, 12; voi
18、d main() struct s p=data1; printf( d n, +(p x); 程序运行后的输出结果是 ( )。 ( A) 10 ( B) 11 ( C) 20 ( D) 21 37 有以下程序: #include #define pi 3 14 #define S(r)pi*r*r void main() int i=1, j=2; printf( 4 2f n, S(i+j); 程序运行后的输出结果是 ( )。 ( A) 7 14 ( B) 28 26 ( C) 6 28 ( D) 9 42 38 有以下程序: #include void main() unsigned c
19、har a=1, b=3, c=5, d; d=a b; d&=c; printf( d n, d); 程序运行后的输出结果是 ( )。 ( A) 1 ( B) 3 ( C) 4 ( D) 5 39 C语言的文件操作过程中,以下描述中正确的是 ( )。 ( A) C语言中的文件是流式文件,因此只能顺序存取数据 ( B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖 ( C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据 ( D)当对文件的读 (写 )操作 完成之后。必须将它关闭:否则可能导致数据丢失 40 有以下程序: #includ
20、e #include void main( ) int*a, *b, *c; a=b=c=malloc(sizeof(int); a=0; *b=1; *c=2: a=b; printf( d, d, d n, *a, *b, *c); 程序运行后的输出结果是 ( )。 ( A)出错 ( B) 2, 2, 3 ( C) 1, 2, 3 ( D) 2, 2, 2 二、程序填空题 41 下列给定程序中,函数 fun的功能是进行数字字符转换。若形参 ch中是数字字符 0到 9,则将 0转换成 9, 1转换成 8, 2转换成 7, , 9转换成 0;若是其他字符则保持不变;并将转换后的结果作为函数值返
21、回。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANKl C中。不得增行或删行,也不得更改程序的结构! #inelude *found* 【 1】 fun(char ch) *found* if(ch =0&【 2】 ) *found* return9一 (ch一 【 3】 ); return ch; main() char c1, c2; c1=1; c2=fun(c1) printf( c, c, c1, c2); 三、程序修改题 42 给定程序 modil c的主函数中,将 a、 b、 c三个节点链成一个单向链表,并给各节点的数据
22、域赋值,函数 fun()的作用是:累加链表节点数据域中的数据作为函数值返回。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include stdio h typedef struct list int data; struct list*next; LIST; int fun(LIST*h) LIST*P; *found* int t: p=h; *found* while(*p) *found* t=t+p data; p=(*p) next; return t: main() LIST a,
23、 b, c, *h; a data=34; b data=51; c data=87; e next= 0; h=&a; a next=&b; b next=&c; printf(总和 = d n, fun(h); 四、程序设计题 43 规定输入的字符串中只包含字母和 #号 。请编写函数 fun,其功能是:将字符串尾部的 #号 全部删除,前面和中间的 #号不动。 例如,字符串中的内容为: “#AB#CD#EF”,删除后,字符串中的内容应当是:“#AB#CD#EF”。在编写函数时,不得使用 C语言提供的字符串函数。 注意:部分源程序在文件 PROC1 C中。 请勿改动主函数 main和其他函数中
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 模拟 142 答案 解析 DOC
