2006年9月全国计算机等级考试二级c语言笔试试题及答案
2006 年9 月二级C 语言笔试试题 一,选择题((1)-(10)每题 2 分,(11)-(50) 每题 1 分,共 60 分) (1)下列选项中不符合良好程序设计风格的是 A 源程序要文档化 B 数据说明的次序要规范化 C 避免滥用 goto 语句 D 模块设计要保证高耦合,高内聚 (2)从工程管理角度,软件设计一般分为两步完成,它们是 A 概要设计与详细设计 B 数据设计与接口设计 C 软件结构设计与数据设计 D 过程设计与数据设计 (3)下列选项中不属于软件生命周期开发阶段任务的是 A 软件测试 B 概要设计 C 软件维护 D 详细设计 (4)在数据库系统中,用户所见的数据模式为 A 概念模式 B 外模式 C 内模式 D 物理模式 (5)数据库设计的四个阶段是:需求分析,概念设计,逻辑设计和 A 编码设计 B 测试阶段 C 运行阶段 D 物理设计 (6)设有如下三个关系表下列操作中正确的是 A T=R∩S B T=RỦS C T=R×S D T=R/S (7)下列叙述中正确的是 A 一个算法的空间复杂度大,则其时间复杂度也必定大 B 一个算法的空间复杂度大,则其时间复杂度必定小 C 一个算法的时间复杂度大,则其空间复杂度必定小 D 上述三种说法都不对 (8)在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为 A 63 B 64 C 6 D 7 (9)数据库技术的根本目标是要解决数据的 A 存储问题 B 共享问题 C 安全问题 D 保护问题 (10)对下列二*树 进行中序遍历的结果是 A ACBDFEG B ACBDFGE C ABDCGEF D FCADBEG (11)下列叙述中错误的是 A 一个 C 语言程序只能实现一种算法B C 程序可以由多个程序文件组成 C C 程序可以由一个或多个函数组成 D 一个 C 函数可以单独作为一个 C 程序文件存在 (12)下列叙述中正确的是 A 每个 C 程序文件中都必须要有一个 main()函数 B 在 C 程序中 main() 函数的位置是固定的 C C 程序中所有函数之间都可以相互调用,与函数所在位置无关 D 在 C 程序的函数中不能定义另一个函数 (13)下列定义变量的语句中错误的是 A int _int; B double int_; C char For; D float US$ (14)若变量 x,y 已正确定义并赋值,以下符合 C 语言语法的表达式是 A ++x,y=x-- B x+1=y C x=x+10=x+y D double(x)/10 (15)以下关于逻辑运算符两侧运算对象的叙述中正确的是 A 只能是整数 0 或 1 B 只能是整数 0 或非 0 整数 C 可以是结构体类型的数据 D 可以是任意合法的表达式 (16)若有定义 int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++): (y++)中的条件表达式(x-y) 等价的是 A (x-y>0) B (x-y0) D (x-y==0) (17)有以下程序 main() {int x,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n“,x,y,z); } 程序运行后的输出结果是 A 2,3,3 B 2,3,2 C 2,3,1 D 2,2,1 (18)设有定义 int a;float b;执行 scanf(“%2d%f“,语句时,若从键盘输入 876 543.0,a 和 b 的值分别是 A 876 和 543.000000 B 87 和 6.000000 C 87 和 543.000000 D 76 和 543.000000 (19)有以下程序 main() {int a=0,b=0;a=10; /*给 a 赋值b=20; 给 b 赋值 */printf(“a+b=%d\n“,a+b); /*输出计算结果*/ } 程序运行后的输出结果是 A a+b=10 B a+b=30 C 30 D 出错 (20)在嵌套使用 if 语句时,C 语言规定 else 总是 A 和之前与其具有相同缩进位置的 if 配对 B 和之前与其最近的 if 配对C 和之前与其最近不带 else 的 if 配对 D 和之前的第一个 if 配对 (21)下列叙述中正确的是 A break 语句只能用于 switch 语句 B 在 switch 语句中必须使用 default C break 语句必须与 switch 语句中的 case 配对使用 D 在 switch 语句中不一定使用 break 语句 (22)有以下程序 main() {int k=5;while(--k)printf(“%d“,k-=3);printf(“\n“); } 执行后的输出结果是 A 1 B 2 C 4 D 死循环 (23)有以下程序 main() {int i;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf(“%d“,i);}printf(“\n“); } 执行后的输出结果是 A 5 B 24 C 32 D 40 (24)以下选项中值为 1 的表达式是 A 1- 0 B 1- \0 C 1 -0 D \0 - 0 (25)有以下程序 fun(int x,int y){return(x+y);} main() {int a=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf(“%d“,sum); } 执行后的输出结果是 A 6 B 7 C 8 D 9 (26)有以下程序 main() {char s[]=“abcde“;s+=2;printf(“%d\n“,s[0]); } 执行后的结果是 A 输出字符 a 的 ASCII 码 B 输出字符 c 的 ASCII 码C 输出字符 c D 程序出错 (27)有以下程序 fun(int x,int y) {static int m=0,i=2;i+=m+1; m=i+x+y; return m; } main() {int j=1,m=1,k;k=fun(j,m); printf(“%d,“,k);k=fun(j,m); printf(“%d\n“,k); } 执行后的输出结果是 A 5,5 B 5,11 C 11,11 D 11,5 (28)有以下程序 fun(int x) {int p;if(x==0||x==1) return(3);p=x-fun(x-2);return p; } main() {printf(“%d\n“,fun(7));} 执行后的输出结果是 A 7 B 3 C 2 D 0 (29)在 16 位编译系统上,若有定义 int a[]={10,20,30},*p=, 当执行 p++后,下列 说法错误的是 A p 向高地址移了一个字节 B p 向高地址移了一个存储单元 C p 向高地址移了两个字节 D p 与 a+1 等价 (30)有以下程序 main(