2008年9月全国计算机等级二级 C语言笔试真题及答案
2008年9月全国计算机等级考试二级C语言笔试试卷发布时间:2009-04-2708:05:44发布人:东方教育网新闻来源:2008年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是A)12345ABCDE B)EDCBA54321C)ABCDE12345 D)54321EDCBA(2)下列叙述中正确的是A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反应队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反应队列中元素的动态变化情况D)循环队列中元素的个数是由队头和队尾指针共同决定(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是A)O(N) B)O(n2) C)O(log2n) D)O(n log2n)(4)下列叙述中正确的是A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间(5)数据流图中带有箭头的线段表示的是A)控制流 B)事件驱动 C)模块调用 D)数据流(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如下:A B Cm 1 3R Sn TA Bm 1n 2B C1 33 5 由关系R和S通过运算得到关系T,则所使用的运算为A)笛卡尔积 B)交 C)并 D)自然连接(11)以下叙述中正确的是A)C程序的基本组成单位是语句 B)C程序中每一行只能写一条语句 C)简单C语句必须以分号结束 D)C语句必须在一行内写完(12)计算机能直接执行的程序是A)源程序 B)目标程序 C)汇编程序 D)可执行程序(13)以下选项中不能作为C语言合法常量的是A)’cd’ B)0.1e+6 C)”a” D)” 11”(14)以下选项中正确的定义语句是A)double a;b; B)double 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=14,y=15; w=((x||y)&&(w<’a’)); A)-1 B)NULL C)1 D) 0(19)若变量已正确定义为int型,要通过语句scanf(“%d,%d,%d ”,&a,&b,&c);给a赋值1,给b赋值2, 给c赋值3, 以下输入形式中错误的是(u代表一个空格符) A)uuu1,2,3<回车> B)1u2u3<回车> C)1,uuu2, uuu3<回车> D)1,2,3<回车>(20) 有以下程序段 int a,b,c;n a=10; b=50; c=30; if(a>b)a=b,b=c;c=a; printf(“a=%d b=%d c=%d n”,a,b,c);程序的输出结果是A) a=10 b=50 c=10 B) a=10 b=50 c=30C) a=10 b=30 c=10 D) a=50 b=30 c=50(21) 若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是 A) m[--i] B)m[2*2] C)m[m[0]] D)m[m](22)下面的函数调用语句中func函数的实参个数是 func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8))); A)3 B) 4 C)5 D)8(23)若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是 A)*p B)x[5] C)*(p+1) D)*x(24) 若有定义语句:char s[10]= “1234567 ”;,则strlen(s)的值是 A)7 B)8 C)9 D)10(25)以下叙述中错误的是 A) 用户定义的函数中可以没有return语句 B)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值 C)用户定义的函数中若没有return语句,则应当定义函数为void类型 D)函数的return语句中可以没有表达式(26)以下关于宏的叙述中正确的是 A)宏名必须用大写字母表示 B)宏定义必须位于源程序中所有语句之前 C)宏替换没有数据类型限制 D)宏调用比函数调用耗费时间(27)有以下程序#include
main() { int i,j; for(i=3;i>=1;i--) { for(j=1;j<=2;j++) printf("%d",i+j); printf("n ") }} 程序的运行结果是A) 2 3 4 B) 4 3 2 C) 2 3 D) 4 53 4 5 5 4 3 3 4 3 4n 4 5 2 3(28) 有以下程序#include main(){ int x=1,y=2,z=3; if(x>y) if(ymain(){ 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 int fun(int a,int b){ if(b==0) return a; else return(fun(--a,--b));}main(){ printf("%dn", fun(4,2));}程序的运行结果是A) 1 B)2 C)3 D)4 (31) 有以下程序#include #include int fun(int nn){ int *p; p=(int*)malloc(sizeof(int)); *p=n; return *p;}main(){ int a; a = fun(10); printf("%dn",a+fun(10));}程序的运行结果是A)0 B)10 C)20 D)出错(32)有以下程序#include void fun( int a, int b){ int t; t=a; a=b; b=t;}main(){ int c[10]={1,2,3,4,5,6,7,8,9,0}, i; for(i=0;i<10;i+=2) fun(c, c[i+1]); for(i=0;i<10;i++) printf("%d," ,c); printf("n");}程序的运行结果是A)1,2,3,4,5,6,7,8,9,0 B)2,1,4,3,6,5,8,7,0,9C)0,9,8,7,6,5,4,3,2,1 D)0,1,2,3,4,5,6,7,8,9(33) 有以下程序#include struct st{ int x, y;} data[2]={1,10,2,20};main(){ struct st *p=data; printf("%d,",p->y); printf("%dn",(++p)->x);}程序的运行结果是A)10,1 B)20,1 C)10,2 D)20,2(34) 有以下程序#include void fun(int a[], int n) { int i,t; for(i=0;i#define N 4void fun(int a[][N], int b[]){ int i; for(i=0;iint fun(int (*s)[4],int n, int k){ int m,i; m=s[0][k]; for(i=1;im)m= s[k]; return m;}main() { int a[4][4]={{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 main(){ struct STU { char name[9]; char sex; double score[2];}; struct STU a={"Zhao",'m',85.0,90.0},b={"Qian",'f',95.0,92.0}; b=a;n printf("%s,%c,%2.0f,%2.0fn", b.name, b.sex, b.score[0], b.score[1]);}程序的运行结果是A) Qian,f,95,92 B) Qian,m,85,90 C) Zhao,f,95,92 D) Zhao,m,85,90(38) 假定已建立以下链表结构,且指针p和q已指向如图所示的结点:head a b c data next p q 则以下选项中可将q所指向结点从链表中删除并释放该结点的语句组是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 main(){ char a=4; printf(“%dn”,a=a<<1);}程序的运行结果是A) 40 B) 16 C) 8 D) 4(40) 有以下程序#include main(){ FILE *pf; char *s1="China", *s2="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二、填空题 n(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)对下列二叉树进行中序遍历的结果是 【1】 。 (2)按照软件测试的一般步骤,集成测试应在 【2】 测试之后进行。(3)软件工程三要素包括方法、工具和过程,其中, 【3】 支持软件开发的各个环节的控制和管理。(4)数据库设计包括概念设计、 【4】 和物理设计。(5)在二维表中,元组的 【5】 不能再分成更小的数据项。(6)设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式 【6】 。(7)若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值: a=7 b=9请完成输出语句:printf( “ 【7】 “,a,b);(8)以下程序的输出结果是 【8】 。#includemain(){ int i,j,sum; for(i=3;i>=1;i--) { sum=0; for(j=1;j<=i;j++) sum+=i*j; } printf("%dn",sum);}(9)以下程序的输出结果是 【9】 。#includemain(){ int j,a[]={1,3,5,7,9,11,13,15},*p=a+5; for(j=3;j;j--) { switch(j) { case 1: case 2:printf(“%d”,*p++); break; case 3:printf(“%d”,*(--p)); } }}(10)以下程序的输出结果是 【10】 。#include#define N 5int fun(int *s,int a ,int n){ int j; *s=a; j=n;n while(a!=s[j]) j--; return j;}main(){ int s[N+1]; int k; for(k=1;k<=N;k++) s[k]=k+1; printf("%dn",fun(s,4,N));}(11)以下程序的输出结果是 【11】 。#include 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);}(12)以下程序按下面指定的数据给x数组的下三角置数,并按如下形式输出,请填空。 43 72 6 91 5 8 10#include main(){ int x[4][4],n=0,i,j; for(j=0;j<4;j++) for(i=3;i>=j; 【12】 ) {n++;x[j]= 【13】 } for(i=0;i<4;i++) { for(j=0;j<=i;j++) printf("%3d",x[j]); printf("n"); }}(13)以下程序的功能是:通过函数func输入字符并统计输入字符的个数。输入时用字符@作为输入结束标志。请填空。#include long 【14】 /* 函数说明语句 */main(){ long n; n=func(); printf("n=%ldn",n);}long func(){ long m;n for(m=0;getchar()!='@'; 【15】 ); return m;}2008年9月全国计算机等级考试二级C语言笔试试卷(参考答案)一、选择题 1-10 BDCAD BABCD11-20 CDACD ADCBA21-30 CABAB CDDAB31-40 CACDB CDDCB二、填空题【1】 DBXEAYFZC 【2】 单元 【3】 过程 【4】 逻辑设计 【5】 分量 【6】 a=a-(a+b) 【7】 a=%dnb=%d 【8】 1 【9】 9911 【10】 3 【11】 15 【12】 i-- 【13】 n 【14】 func() 【15】 m++