1、2011年3月计算机等级考试二级 C 语言笔试(总分100, 考试时间90分钟)选择题(1)-(10) 、 (21)-(40)每题2分, (11)-(20)每题1分,共70分)1. 下列关于栈叙述正确的是A 栈顶元素最先能被删除 B 栈顶元素最后才能被删除C 栈底元素永远不能被删除 D 以上三种说法都不对2. 下列叙述中正确的是A 有一个以上根结点的数据结构不一定是非线性结构B 只有一个根结点的数据结构不一定是线性结构C 循环链表是非线性结构 D 双向链表是非线性结构3. 某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为 (假设根结点在第1层)A 3 B 4 C 6 D 74.
2、在软件开发中,需求分析阶段产生的主要文档是A 软件集成测试计划 B 软件详细设计说明书C 用户手册 D 软件需求规格说明书5. 结构化程序所要求的基本结构不包括A 顺序结构 B GOTO 跳转C 选择 (分支)结构 D 重复(循环)结构6. 下面描述中错误的是A 系统总体结构图支持软件系统的详细设计B 软件设计是将软件需求转换为软件表示的过程C 数据结构与数据库设计是软件设计的任务之一D PAD 图是软件详细设计的表示工具7. 负责数据库中查询操作的数据库语言是A 数据定义语言 B 数据管理语言 C 数据操纵语言 D 数据控制语言8. 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教
3、师和课程间的联系是A 1:1联系 B 1:m 联系 C m:1联系 D m:n联系9. 有三个关系 R、S 和 T 如下:则由关系 R 和 S 得到关系 T 的操作是A 自然连接 B 交 C 除 D 并10. 定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是A -369 B 369 C 0.369 D 整数集合1,2,3,4,511. 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A C 语言程序仅可以编译执行 B C 语言程序仅可以解释执行C C 语言程序既可以编译执行又可以解释执行 D 以上说法都不对12. 以下叙述中错误的是A C 语言的可执
4、行程序是由一系列机器指令构成的B 用 C 语言编写的源程序不能直接在计算机上运行C 通过编译得到的二进制目标程序需要连接才可以运行D 在没有安装 C 语言集成开发环境的机器上不能运行 C 源程序生成的.exe 文件13. 以下选项中不能用作 C 程序合法常量的是A 1,234 B 123 C 123 D “x7G“14. 以下选项中可用作 C 程序合法实数的是A .1e0 B 3.0e0.2 C E9 D 9.12E15. 若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是A a=(b=4)=3; B a=b=c+1; C a=(b=4)+c; D a=1+(b=c=
5、4);16. 有以下程序段char name20; int num;scanf(“name=%s num=%d“,name;当执行上述程序段,并从键盘输入:name=Lili num=1001后,name的值为A Lili B name=Lili C Lili num= D name=Lili num=100117. if 语句的基本形式是:if( 表达式)语句,以下关于“表达式”值的叙述中正确的是A 必须是逻辑值 B 必须是整数值 C 必须是正数 D 可以是任意合法的数值18. 有以下程序#include main() int x=011;printf(“%dn“,+x);程序运行后的输出结
6、果是A 12 B 11 C 10 D 919. 有以下程序#include main() int s;scanf(“%d“,while(s0) switch(s) case1:printf(“%d“,s+5);case2:printf(“%d“,s+4); break;case3:printf(“%d“,s+3);default:printf(“%d“,s+1);break;scanf(“%d“,运行时,若输入1 2 3 4 5 0 ,则输出结果是A 6566456 B 66656 C 66666 D 666665620. 有以下程序段int i,n;for(i=0;i=0while(iy);
7、程序运行后的输出结果是A 1,2 B 4,1 C 3,4 D 2,338. 有以下程序#include struct S int a,b;data2=10,100,20,200;main() struct S p=data1;printf(“%dn“,+(p.a);程序运行后的输出结果是A 10 B 11 C 20 D 2139. 有以下程序#include main() unsigned char a=8,c;c=a3;printf(“%dn“,c);程序运行后的输出结果是A 32 B 16 C 1 D 040. 设 fp 已定义,执行语句 fp=fopen(“file“,“w“);后,以下
8、针对文本文件 file 操作叙述的选项中正确的是A 写操作结束后可以从头开始读 B 只能写不能读C 可以在原有内容后追加写 D 可以随意读和写二、填空题(每空2分,共30分)1. 有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。2. 一棵二叉树的中序遍历结果为 DBEAFC,前序遍历结果为 ABDECF,则后序遍历结果为【2】 。3. 对软件设计的最小单位(模块或程序单元)进行的测试通常称为 【3】 测试。4. 实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。5. 在关系 A(S,SN,D)和关系 B(D,CN,NM)中,A 的主关键字是 S,B 的主关键字是 D
9、,则称【5】 是关系 A 的外码。6. 以下程序运行后的输出结果是 【6】 。#include main() int a;a=(int)(double)(3/2)+0.5+(int)1.99*2);printf(“%dn“,a);7.有以下程序#include main() int x;scanf(“%d“,if(x15) printf(“%d“,x-5);if(x10) printf(“%d“,x);if(x5) printf(“%dn“,x+5);若程序运行时从键盘输入12 ,则输出结果为 【7】 。8. 有以下程序(说明:字符0的 ASCII 码值为48)#include main()
10、char c1,c2;scanf(“%d“,c2=c1+9;printf(“%c%cn“,c1,c2);若程序运行时从键盘输入48 ,则输出结果为 【8】 。9. 有以下函数void prt(char ch,int n) int i;for(i=1;i0)开始的后续元素全部向前移动一个位置。请填空。void fun(int aN,int k) int i;for(i=k;i=0;i-) putchar(*(p+i);printf(“n-“); free(p);15. 以下程序运行后的输出结果是 【15】 。#include main() FILE *fp; int x6=1,2,3,4,5,6
11、,i;fp=fopen(“test.dat“,“wb“);fwrite(x,sizeof(int),3,fp);rewind(fp);fread(x,sizeof(int),3,fp);for(i=0;imain()int y=10;while(y-) ;printf(”Y=dn”,Y) ;程序执行后的输出结果是A y=0 B y= -1 C y=1 D while 构成无限循环22. 有以下程序includestdio .hmain()char s”rstuv“;printf(”cn”,*s2) ;程序运行后的输出结果是A tuv B 字符 t 的 ASCII 码值 C t D 出错23.
12、有以下程序includestdio.hincludestring.hmain()char x”STRING”;x0=0;x10 ;x20;printf(”d dn”,sizeof(x) ,strlen (x) ) ;程序运行后的输出结果是A 6 1 B 7 0 C 6 3 D 7 124. 有以下程序includestdiohInt f( int x) ;main()int n=1,m;m=f(f (f (n) ) ) ;printf(”%dn” ,m);int f(int x)return x*2;程序运行后的输出结果是A 1 B 2 C 4 D 825. 以下程序段完全正确的是A int
13、*p; scanf(“%d“, p); B int *p; scanf(“%d”,p );C int k, *p= scanf(“%d“,p); D int k, *p:; *p= scanf(“%d”,p);26. 有定义语句:int *p4;以下选项中与此语句等价的是A int p4; B int *p; C int *(p4 ); D int (*p)4;27. 下列定义数组的语句中,正确的是A B C int x010; D int x ;28. 若要定义一个具有5个元素的整型数组,以下错误的定义语句是A int a5=0; B int b=0,0,0,0,0; C int c2+3;
14、 D int i=5,di;29. 有以下程序includestdiohvoid f(int *p) ;main()int a51,2,3,4,5 ,*r=a;f( r) ;printf(”dn”;r) ;void f (int *p)p=p+3;printf (” d, ”,*p) ;程序运行后的输出结果是A 1,4 B 4,4 C 3,1 D 4,130. 有以下程序(函数 fun 只对下标为偶数的元素进行操作)# includestdiohvoid fun(inta ;int n)int i、j、k、t;for (i=0;in 一1;1=2)k=i;for(j=i;jak)k=j;t=a
15、i ; ai=a k;akt;main()int aa10=1、2、3、4、5、6、7 ,i;fun (aa、 7) ;for(i=0,iincludestring hmain()char a20=”ABCD OEFG0”,b”IJK” ;strcat(a,b) ;printf(”sn”,a ) ;程序运行后的输出结果是A ABCDEOFGOIJK B ABCDIJK C IJK D EFGIJK34. 有以下程序,程序中库函数 islower (ch)用以判断 ch 中的字母是否为小写字母includestdiohincludectypehvoid fun(char p)int i=0;wh
16、ile (pi )if(pi= islower(pi-1 ) )pi-1=pi-1-a+A;i;main()char s1100”ab cd EFG!”;fun (s1) ; printf(”sn”,s1) ;程序运行后的输出结果是A ab cd EFG! B Ab Cd EFg! C aB cD EFG! D ab cd EFg!35. 有以下程序includestdiohvoid fun(int x)if(x21)fun ( x2) ;printf(”d”,x) ;main()fun (7) ;printf (”n”) ;程序运行后的输出结果是A 1 3 7 B 7 3 1 C 7 3 D
17、 3 736. 有以下程序includestdiohint fun()static int x=1;x+=1;return x;main()int i;s=1;for(i=1;imain()int s ,t,A=10 ;double B=6;ssizeof(A) ;t=sizeof(B) ;printf(“d,dn”,s,t) ;在 VC6平台上编译运行,程序运行后的输出结果是A 2,4 B 4,4 C 4,8 D 10,639. 若有以下语句Typedef struct Sint g; char h;T;以下叙述中正确的是A 可用 S 定义结构体变量 B 可用 T 定义结构体变量C S 是
18、struct 类型的变量 D T 是 struct S 类型的变量40. 有以下程序includestdiohmain()short c=124;c=c_;printf(“dn”、C) ;若要使程序的运行结果为248,应在下划线处填入的是A 2 B |248 C 0248 D main()int a=200,b=010;printf(”d%dn”,a,b) ;7. 有以下程序includestdiohmain()int x,Y;scanf(”2d%ld” ,x,y) ;printf(” dn”,x+y) ;程序运行时输入:1234567程序的运行结果是【7】 。8. 在 C 语言中,当表达式值
19、为0时表示逻辑值“假”,当表达式值为【8】时表示逻辑值“真”。9. 有以下程序includestdiohmain()int i,n=0,0,0,0,0;for (i=1;iintf (int *p,intq) ;main()int m=1,n=2 ,r=elseif(b else k=c;以下选项中与上述 if 语句等价的语句是A k=(a B k=(a D k=(a20. 有以下程序#includemain()in i,j,m=1;for(i=1;iO;j-)if(i*j)3)break;m=i*j;printf(“m=%dn“,m);程序运行后的输出结果是A m=6B m=2C m=4D
20、m=521. 有以下程序#include(stdio.hmain()int a=l;b=2;for(;a printf(“%d“,ai);printf(“n“);程序运行后的输出结果是A 1313 B 2234 C 3234 D 123433. 有以下程序#include int f(int t,int n);main int a4=1,2,3,4,s;s=f(a,4); printf(“%dn“,s);int f(int t,int n) if(n0) return tn-1+f(t,n-1);else return 0;程序运行后的输出结果是A 4 B 1O C 14 D 634. 有以下
21、程序#include int fun() static int x=1;x*2; return x;main()int i,s=1 ,for(i=1;iyear=1980; D w.s.year=1980;39. 有以下程序#include main() int a=2,b=2,c=2;printf(“%dn“,a/b程序运行后的输出结果是A O B 1 C 2 D 340. 有以下程序#include main() FILE *fp;char str10;fp=fopen(“myfile.dat“,“w“);fputs(“abc“,fp);fclose(fp);fpfopen(“myfile
22、.data“,“a+“);fprintf(fp,“%d“,28);rewind(fp);fscanf(fp,“%s“,str); puts(str);fclose(fp);程序运行后的输出结果是A abc B 28c C abc28 D 因类型不一致而出错填空题(每空2分,共40分)1. 一个队列的初始状态为空。现将元素 A,B ,C,D ,E ,F ,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为 【 】 。2. 设某循环队列的容量为50,如果头指针 front=45(指向队头元素的前一位置),尾指针 rear=10(指向队尾元素 ),则该循环队列中共有 【 】 个元素。3.
23、 设二叉树如下:对该二叉树进行后序遍历的结果为 【 】 。4. 软件是 【 】 、数据和文档的集合。5. 有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课(学号, 【 】 ,成绩)。6. 设 x 为 int 型变量,请写出一个关系表达式 【 】 ,用以判断 x 同时为3和7的倍数时,关系表达式的值为真。7. 有以下程序#include main() int a=1,b=2,c=3,d=0;if(a=1)if(b!=2)if(c=3) d=1;else d=
24、2;else if(c!=3) d=3;else d=4;else d=5;printf(“%dn”,d);程序运行后的输出结果是 【 】 。8. 有以下程序#include main() int m,n;scanf(“%d%d“,while(m!=n) while(mn) m=m-n;while(m printf(“%dn”,m);程序运行后,当输入14 63 时,输出结果是 【 】 。9. 有以下程序#include main() int i,j,a3=1,2,3,4,5,6,7,8,9;for(i=0;i0;i-) stri=stri-1;str0=temp;main() char s5
25、0;scanf(“%s“,s); fun(s); printf(“%sn“,s);程序运行后输入:abcdef ,则输出结果是 【 】 。13. 以下程序的功能是:将值为三位正整数的变量 x 中的数值按照个位、十位、百位的顺序拆分并输出。请填空。#include main() int x=256;printf(“%d-%d-%dn“, 【 】 ,x/10%10,x/100);14. 以下程序用以删除字符串所有的空格,请填空。#include main() char s100=“Our teacher teach C language!“;int i,j;for(i=j=0;si!=0;i+)i
26、f(si!= ) sj=si;j+;sj= 【 】printf(“%sn”,s);15. 以下程序的功能是:借助指针变量找出数组元素中的最大值及其元素的下标值。请填空。#include main() int a10,*p,*s;for(p=a;p-a*s) s= 【 】 ;printf(“index=%dn”,s-a);答案:1-5 ADBAC 6-10 BADBA 1115:BBDCC 1620:DABCC2125:DDABD 2630:ADBCC3135:ACBCC 3640:BADAC二、填空( 1) A,B,C,D,E,F,5,4,3,2,1( 2) 15( 3) EDBGHFCA( 4)程序( 5)课号6、 x%3=0 float printF;printf(“请输入 2 个数:”);scanf(“%d %f”,printf(“%d %fn”,case,printF);该程序编译时产生错误,其出错原因是A)定义语句出错,case 是关键字,不能用作用户自定义标识符