[计算机类试卷]2008年9月国家二级(C语言)笔试真题试卷及答案与解析.doc
《[计算机类试卷]2008年9月国家二级(C语言)笔试真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2008年9月国家二级(C语言)笔试真题试卷及答案与解析.doc(30页珍藏版)》请在麦多课文档分享上搜索。
1、2008 年 9月国家二级( C语言)笔试真题试卷及答案与解析 1 个栈的初始状态为空。现将元素 1、 2、 3、 4、 5、 A、 B、 C、 D、 E依次入栈,然后再依次出栈则元素出栈的顺序 _。 ( A) 12345ABCDE ( B) EDCBA54321 ( C) ABCDE12345 ( D) 54321EDCBA 2 下列叙述中正确的是 _。 ( A)循环队列中有队头和卧尾两个指针,因此,循环队列是非线牲结构 ( B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 ( C)在循环队列中, 只需要队尾指针就能反映队列中元素的动态变化情况 ( D)循环队列中元素的个数是
2、由队头指针和队尾指针共同决定 3 在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是 ( A) O(n) ( B) O(n2) ( C) O(log2n) ( D) O(nlog2n) 4 下列叙述中正确的是 _。 ( A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 ( B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 ( C)顺序存储结构能存储有序表,链式存储结构不能存 储有序表 ( D)链式存储结构比顺序存储结构节省存储空间 5 数据流图中带有箭头的线段表示的是 _。 ( A)控制流 ( B)事件驱动 ( C)模块调用 ( D)数据流
3、6 在软件开发中,需求分析阶段可使用的工具是 _。 ( A) N-S图 ( B) DFD图 ( C) PAD图 ( D)程序流程图 7 在面向对象方法中,不属于 “对象 ”基本特点的是 _。 ( A)一致性 ( B)分类性 ( C)多态性 ( D)标识唯一性 8 一间宿舍可住多个学生,则实体宿舍和学生之间的联系 是 _。 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 9 在数据管理技术发展的三个阶段中,数据共享最好的是 _。 ( A)人工管理阶段 ( B)文件系统阶段 ( C)数据库系统阶段 ( D)三个阶段相同 10 有三个关系 R、 S和 T如下:由关系 R和 S通过运算
4、得到关系 T,则所使用的运算为 _。( A)笛卡尔积 ( B)交 ( C)并 ( D)自然连接 11 以下叙述中正确的是 _。 ( A) C程序的基本组成单位是语句 ( B) C程序中的每行只能写 一条语句 ( C)简单 C语句必须以分号结束 ( D) C语句必须在一行内写完 12 计算机能直接执行的程序是 _。 ( A)源程序 ( B)目标程序 ( C)汇编程序 ( D)可执行程序 13 以下选项中不能作为 C语言合法常量的是 _。 ( A) cd ( B) 100000 ( C) a ( D) 011 14 以下选项中正确的定义语句是 _。 ( A) double a;b; ( B) do
5、uble a=b=7; ( C) double a=7,b=7; ( D) double,a,b; 15 以下不能正确表示代数式 的 C语言表达式是 _。 ( A) 2*a*b/c/d ( B) a*b/c/d*2 ( C) a/c/d*b*2 ( D) 2*a*b/c*d 16 C源程序中不能表示的数制是 _。 ( A)二进制 ( B)八进制 ( C)十进制 ( D)十六进制 17 若有表达 (W)?(-x):(+y),则其中与 W等价的表达式是 _。 ( A) w=1 ( B) w=0 ( C) w!=1 ( D) w!=0 18 执行以下程序段后, W的值为 _。 int w=A,x=1
6、4,y=15 w=(xy) ( A) -1 ( B) NULL ( C) 1 ( D) 0 19 若变量已正确定义为 int型,要通过语句 scanf(“%d,%d,%d“, a=10; b=50; c=30; if(ab)a=b, b=c; c=a; printf(“a=%d b=%d c=%dn“,a,b,c); 程序的输出结果是 _。 ( A) a=10 b=50 c=10 ( B) a=10 b=50 c=30 ( C) a=10 b=30 c=10 ( D) a=50 b=30 c=50 21 若有定义语句: int m=5,4,3,2,1,i=4;,则下面对 m数组元素的引用中错误
7、的是 _。 ( A) m-i ( B) m2*2 ( C) mm0 ( D) mmi 22 下面的函数调用语句中, func函数的实参个数是 _。 func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8); ( A) 3 ( B) 4 ( C) 5 ( D) 8 23 若有定义语句: double x5=1.0,2.0,3.0,4.0,5.0, *p=x;则错误引用 x数组元素的是 _。 ( A) *p ( B) x5 ( C) *(p+1) ( D) *x 24 若有定义语句: char s10=“123456700“;,则 strlen(s)的值是 _。 ( A)
8、7 ( B) 8 ( C) 9 ( D) 10 25 以下叙述中错误的是 _。 ( A)用户定义的函数中可以没有 return语句 ( B)用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值 ( C)用户定义的函数中若没有 return语句,则应当定义函数为 void类型 ( D)函数的 return语句中可以没有表达式 26 以下关于宏的叙述中正确的是 _。 ( A)宏名必须用大写字母表示 ( B)宏定义必须位于源程序中所有语句之前 ( C)宏替换没有数据类型限制 ( D)宏调用比函数调用耗费时间 27 有以下程序 #include stdio.h main() i
9、nt i,j; for(i=3;i =-1;i-) for(i=1;j =2;j+) printf(“%d“,i+j); printf(“n“); 程序的运行结果是 _。 ( A) 234 345 ( B) 432 543 ( C) 23 34 45 ( D) 45 34 23 28 有以下程序 #include stdio.h mare() int x=1,y=2,z=3; if(x y) if(y z) printf(“%d“,+z); else printf(“%d“,+y); printf(“%dn“,x+); 程序的运行结果是 _。 ( A) 331 ( B) 41 ( C) 2 (
10、 D) 1 29 有以下程序 #include stdio.h main() int i=5; do if(i%3=1) if(i%5=2) printf“*%d“,i); break; i+; while(i!=0); printf(“n“); 程序的运行结果是 _。 ( A) *7 ( B) *3*5 ( C) *5 ( D) *2*6 30 有以下程序 #include stdio.h int fun(int a, int b) if(b=0) return a; else return(fun(-a,-b); main() printf(“%dn“,fun(4,2); 程序的运行结果是
11、 _。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 31 有以下程序 #include stdio.h #include stdlib.h int fun(int n) int *p; p=(int*)malloc(sizeof(int); *p=n; return *p; int a; a=fun(10); printf(“%dn“,a+fun(10); 程序的运行结果是 _。 ( A) 0 ( B) 10 ( C) 20 ( D)出错 32 有以下程序 #include stdio.h void fun(int a, int b) int t; t=a; a=b; int c1
12、0=1,2,3,4,5,6,7,8,9,0,i; for(i=0;i 10;i+=2) fun(ci,ci+1); for(i=0;i 10;i+) printf(“%d,“,ci); printf(“n“); 程序的运行结果是 _。 ( A) 1,2,3,4,5,6.7,8,9,0, ( B) 2,1.4.3.6,5.8,7,0,9, ( C) 0,9,8,7,6,5,4,3,2,1, ( D) 0,1,2,3,4,5,6,7,8,9, 33 有以下程序 #include stdio.h struct st int x,y; data2=1,10,2,20; main() struct st
13、 *p=data; printf(“%d,“,p- y); printf(“%dn“,(+p)- x); 程序的运行结果是_。 ( A) 10,1 ( B) 20,1 ( C) 10,2 ( D) 20,2 34 有以下程序 #include stdio.h void fun(int a,int n) int i,t; for(i=0;i n/2;i+) t=ai; ai=an-1-i; an-1-i=t; main() int k10=1,2,3,4,5,6,7,8,9,10,i; fun(k,5); for(i=2;i 8;i+) printf(“%d“,ki); printf(“n“);
14、 程序的运行结果是 _。 ( A) 345678 ( B) 876543 ( C) 1098765 ( D) 321678 35 有以下程序 #include stdio.h #define N 4 void fun(int aN,int b) int i; for(i=0;i N;i+) bi=aii; main() int xN=1,2,3,4,5,6,7,8,9,10 ,YN,i; fun(x,y); for(i=0;i N;i+) printf(“%d,“,yi); printf(“n“); 程序的运行结果是 _。 ( A) 1,2,3,4, ( B) 1,0,7,0, ( C) 1,
15、4,5,9, ( D) 3,4,8,10, 36 有以下程序 #include stdio.h int fun(int (*s)4,int n,int k) int m,i; m=s0kl; for(i=1;i n;i+) if(sik m) m=sik; return m; main() int a44=1,2,3,4,11,12,13,14, 21,22,23,24, 31,32,33,34; printf(“%dn“,fun(a,4,0); 程序的运行结果是 _。 ( A) 4 ( B) 34 ( C) 31 ( D) 32 37 有以下程序 #include stdio.h main(
16、) struct STUchar name9;char sex;double score2; sturt STU a=“Zhao“ ,m,85.0,90.0,b=“Qian“ ,f,95:0,92.0; b=a; printf(“%s,%c,%2.0f,%2.0fn“,b.name,b.sex,b.score0,b.score1); 程序的运行结果是 _。 ( A) Qian,f,95,92 ( B) Qian,85,90 ( C) Zhao,f,95,92 ( D) Zhao,m,85,90 38 假定已建立以下链表结构,且指针 p和 q已指向如图所示的结点:则以下选项中司将 q所指结点从链
17、表中删除并释放该结 点的语句组是 _。 ( A) (*p).next=(*q).next; free(p); ( B) p=q- next; free(q); ( C) p=q; free(q); ( D) p- next=q- next; free(q); 39 有以下程序 #include stdio.h main() char a=4; printf(“%d/n,a=a 1); 程序的运行结果是 _。 ( A) 40 ( B) 16 ( C) 8 ( D) 4 40 有以下程序 #include stdio.h main() FILE*pf, char *s1=“China“,*s2=“
18、Beijing“; pf=fopen(“abc.dat“,“wb+“); fwrite(s2,7,1,pf); rewind(pf); /*文件位置指针回到文件开头 */ fwrite(s1,5,1,pf); fclose(pf); 以上程序执行后 abc.dat文件的内容是 _。 ( A) China ( B) Chinang ( C) ChinaBeijing ( D) BeijingChina 41 对下列二叉树进行中序遍历的结果是【 】。42 按照软件测试的一般步骤,集成测试应在【 】测试之后进行。 43 软件工程三要素包括方法、工具和过程,其中,【 】支持软件开发的各个环节的控制和管
19、理。 44 数据库设计包括概念设计、【 】和物理设计。 45 在二维表中,元组的【 】不能再分成更小的数据项。 46 设变量 a和 b已正确定义并赋初值。请写出与 a=a+b等价的赋值表达式【 】。 47 若整型变量 a和 b中的值分别为 7和 9,要求按以下格式输出 a和 b的值: a=7 b=9 请完成输出语句: printf(“【 】 “,a,b);。 48 以下程序的输出结果是【 】。 #include stdio.h main() int i,j,sum; for(i=3;i =-1;i-) (sum=0; for(j=1;j =i;j+) sum+=i*j; printf(“%dn
20、,sum); 49 以下程序的输出结果是【 】。 #include stdio.h main() int j,a=1,3,5,7,9,11,13,15,*P=a+5; for(j=3; j;j-) switch(i) case 1: case 2: printf(“%d“,*p+); break; case 3: printf(“%d“,* (-p); 50 以下程序的输出结果是【 】。 #include stdio.h #define N 5 int fun(int *s,int a,int n) int j; *s=a j=n; while(a!=sj) j-; return j; mai
21、n() int sN+1; int k: for(k=1 ;k =N;k+) sk=k+1: print f(“%dn“,fun(s,4,N); 51 以下程序的输出结果是【 】。 #include stdio.h int fun(int x) static int t=0; return(t+=x); main() int s,i; for(i=1 ;i =5;i+) s=fun(i); printf(“%dn“,s); 52 以下程序按下现指定的数据给 x数组的下三角置数,并按如下形式输出,请填空。 4 3 7 2 6 9 1 5 8 10 #include stdio.h main()
22、int x44,n=0,i,j; for(j=0;j 4;j+) for(i=3;i j;【 】 ) n+;xij=【 】 : for(i=0;i 4;i+) for(j=0;j =i;j+) printf(“%3d“,xij); printf(“n“); 53 以下程序的功能是:通过函数 func输入字符并统计输入字符的个数。输入时用字符作为输入结束标志。请填空。 #include stdio.h long【 】 ; /*函数说明语句 */ main() long n; n=func(); printf(“n=%1dn“n); long func() long m; for( m=0;get
23、char()!=【 】 ; return m; 2008 年 9月国家二级( C语言)笔试真题试卷答案与解析 1 【正确答案】 B 【试题解析】 栈是一种特殊的线 性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。这表明栈的运算规则是 “先进后出 ”(或称 “后进先出 ”)。在栈顶进行插入运算,称为进栈(或入栈 ),在栈顶进行删除运算,称为退栈 (或出栈 )。本题中,依次进栈,即依次插入元素 1、 2, 3、 4、 5、 A、 B、 C、 D、 E,依次出栈,即依次删除
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2008 国家 二级 语言 笔试 答案 解析 DOC
