【计算机类职业资格】全国计算机等级考试二级C语言真题2007年4月及答案解析.doc
《【计算机类职业资格】全国计算机等级考试二级C语言真题2007年4月及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】全国计算机等级考试二级C语言真题2007年4月及答案解析.doc(20页珍藏版)》请在麦多课文档分享上搜索。
1、全国计算机等级考试二级 C 语言真题 2007 年 4 月及答案解析(总分:88.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.下列叙述中正确的是(分数:1.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关2.在结构化程序设计中,模块划分的原则是(分数:1.00)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度、模块间具有低耦合度3.下列叙述中正确的是(分数:1
2、.00)A.软件测试的主要目的是发现程序中的错误B.软件测试的主要目的是确定程序中错误的位置C.为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D.软件测试是证明软件没有错误4.下面选项中不属于面向对象程序设计特征的是(分数:1.00)A.继承性B.多态性C.类比性D.封装性5.下列对队列的叙述正确的是(分数:1.00)A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据6.对下列二叉树 (分数:1.00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZD.ABCDEFXYZ7.某二叉树中有 n 个度为
3、 2 的结点,则该二叉树中的叶子结点数为(分数:1.00)A.n+lB.n-1C.2nD.n/28.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是(分数:1.00)A.并B.交C.投影D.笛卡儿乘积9.在 E-R 图中,用来表示实体之间联系的图形是(分数:1.00)A.矩形B.椭圆形C.菱形D.平行四边形10.下列叙述中错误的是(分数:1.00)A.在数据库系统中,数据的物理结构必须与逻辑结构一致B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统的支持11.算法中,对需要执行的每一步操作,必须给出清楚
4、、严格的规定。这属于算法的(分数:1.00)A.正当性B.可行性C.确定性D.有穷性12.以下叙述中错误的是(分数:1.00)A.计算机不能直接执行用 C 语言编写的源程序B.C 程序经 C 编译程序编译后,生成后缀为.obj 的文件是一个二进制文件C.后缀为.obj 的文件,经连接程序生成后缀为.exe 的文件是一个二进制文件D.后缀为.obj 和.exe 的二进制文件都可以直接运行13.按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是(分数:1.00)A.大写字母B.连接符C.数字字符D.下划线14.以下叙述中错误的是(分数:1.00)A.C 语言是一种结构化程序设计语言B.
5、结构化程序由顺序、分支、循环三种基本结构组成C.使用三种基本结构构成的程序只能解决简单问题D.结构化程序设计提倡模块化的设计方法15.对于一个正常运行的 C 程序,以下叙述中正确的是(分数:1.00)A.程序的执行总是从 main 函数开始,在 main 函数结束B.程序的执行总是从程序的第一个函数开始,在 main 函数结束C.程序的执行总是从 main 函数开始,在程序的最后一个函数中结束D.程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束16.设变量均已正确定义,若要通过 scanf(“%d%c%d%c“, for(i=1;i4;i+) for(j=i;j4;j+)pr
6、intf(“%d*%d=%d “,i,j,i*j); printf(“/n“); 程序运行后的输出结果是(分数:1.00)A.1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3B.1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9C.1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9D.1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=925.以下合法的字符型常量是(分数:1.00)A./x13B./081C.65D.“/n“26.在 C 语言中,函数返回值的类型最终取决于(分数:1.00)A.函数定义时在函数首部所
7、说明的函数类型B.return 语句中表达式值的类型C.调用函数时主调函数所传递的实参类型D.函数定义时形参的类型27.已知大写字母 A 的 ASCII 码是 65,小写字母 a 的 ASCII 码是 97。以下不能将变量 c 中的大写字母转换为对应小写字母的语句是(分数:1.00)A.c=(c-A)%26+aB.c=c+32C.c=c-A+aD.c=(A+%26-a28.有以下函数 int fun(char *s) char *t=s; while(*t+); return(t-s); 该函数的功能是(分数:1.00)A.比较两个字符串的大小B.计算 s 所指字符串占用内存字节的个数C.计算
8、 s 所指字符串的长度D.将 s 所指字符串复制到字符串 t 中29.设已有定义:float x;,则以下对指针变量 p 进行定义且赋初值的语句中正确的是(分数:1.00)A.float *p=1024;B.int *p=(floax;C.float p= for(i=0;in-1;i+) for(j=i+1;jn;j+) if(flag?bibj:bibj)t=bi;bi=bj;bj=t; main() int a10=5,4,3,2,1,6,7,8,9,10,i; f( f(a); for(i=0;i10,i+)printf(“%d,“,ai); 程序运行后的输出结果是(分数:1.00)A
9、.1,2,3,4,5,6,7,8,9,10,B.1,2,6,8,10,12,7,8,9,10,C.1,2,3,4,10,12,14,16,9,10,D.1,2,6,8,10,12,14,16,9,10,33.有以下程序 typedef structint b,p;A; void f(A c)/* 注意:c 是结构变量名 */ int j; c.b+=1;c.p+=2; main() int i; A a=1,2; f(a); printf(“%d,%d/n“,a.b,a.p); 程序运行后的输出结果是(分数:1.00)A.2,3B.2,4C.1,4D.1,234.有以下程序 main() in
10、t a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,j,k,t; for(i=0;4:i+) for(j=0;j3;j+) for(k=j+1;k4;k+) if(ajiakit=aji;aji=aki=aki=t;/*按列排序*/ for(i=0;i4;i+)printf(“%d,“,aii); 程序运行后的输出结果是(分数:1.00)A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,35.有以下程序 main() int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,k,t; for(i=0;i3;i+
11、) for(k=i+1;k4;k+)if(aiiakk)t=aii;aii=akk;akk=t; for(i=0;i4;i+)printf(“%d,“,a0i); 程序运行后的输出结果是(分数:1.00)A.6,2,1,1,B.6,4,3,2,C.1,1,2,6,D.2,3,4,6,36.有以下程序 void f(int *q) int i=0; for(;i5;i+) (*q)+; main() int a5=1,2,3,4,5,i; f(a); for(i=0;i5;i+)printf(“%d,“,ai); 程序运行后的输出结果是(分数:1.00)A.2,2,3,4,5,B.6,2,3,4
12、,5,C.1,2,3,4,5,D.2,3,4,5,6,37.有以下程序 #includestring.h main() char p20=a,b,c,d,q=“abc“,r=“abcde“; strcpy(p+strlen(q),r);strcat(p,q); printf(“%d%d/n“,sizeof(p),strlen(p); 程序运行后的输出结果是(分数:1.00)A.20 9B.9 9C.20 11D.11 1138.有以下程序 #includestring.h main() char p20=a,b,c,d,q=“abc“,r=“abcde“; strcat(p,r);strcpy
13、(p+strlen(q),q); printf(“%d/n“,strlen(p); 程序运行后的输出结果是(分数:1.00)A.9B.6C.11D.739.有以下程序 #includestring.h void f(char p10,int n)/*字符串从小到大排序*/ char t10;int i,j; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(strcmp(pi,pj)0) strcpy(t,pi);strcpy(pi,pj);strcpy(pj,t); main() char p510=“abc“,“aabdfg:,“abbd“,“dcdbe“,“cd“
14、; f(p,5); printf(“%d/n“,strlen(p0); 程序运行后的输出结果是(分数:1.00)A.2B.4C.6D.340.有以下程序 void f(int n,int *r) int r1=0; if(n%3=0) r1=n/3; else if(n%5=0) r1=n/5; else f(-n, for(i=1;iargc;i+) n=n*10+ *argvi 0; printf(“%d/n“,n); 编译连接后生成可执行文件 tt.exe。若运行时输入以下命令行 tt 12 345 678 程序运行后的输出结果是(分数:1.00)A.12B.12345C.1234567
15、8D.13642.有以下程序 int a=4; int f(int n) int t=0;static int a=5; if(n%2) int a=6;t+=a+; else int a=7;t+=a+; return t+a+; main() int s=a,i=0; for(;i2;i+)s+=f(i); printf(“%d/n“,s); 程序运行后的输出结果是(分数:1.00)A.24B.28C.32D.3643.有一个名为 init.txt 的文件,内容如下: #define HDY(A,B) A/B #define PRINT(Y) printf(“y=%d/n“,Y) 有以下程
16、序 #include“init.txt“ main() int a=1,b=2,c=3,d=4,k; k=HDY(a+c,b+d); PRINT(k); 下面针对该程序的叙述正确的是(分数:1.00)A.编译出错B.运行出错C.运行结果为 y=0D.运行结果为 y=644.有以下程序 main() char ch=“uvwxyz“,*pc; pc=ch;printf(“%c/n“,*(pc+5); 程序运行后的输出结果是(分数:1.00)A.zB.0C.元素 ch5的地址D.字符 y 的地址45.有以下程序 struct S int n;int a20; voidf(struct S*p) i
17、nt i,j,t; for(i=0;ip-n-1;i+) for(j=i+1;jp-n;j+) if(p-aip-aj)t=p-ai;p-ai=p-aj;p-aj=t; main() int i;struct S s=10,2,3,l,6,8,7,5,4,10,9; f(else 语句 2;”这种形式的 if 语句中,在每一个else 前面有一个分号,整个语句结束处有一分号。在本题的 C)选项中,else 前面少了一个分号,这样程序在编译时,会出现语法错误。21.以下选项中,当 x 为大于 1 的奇数时,值为 0 的表达式是(分数:1.00)A.x%2=1B.x/2C.x%2!=0D.x%2=
18、0 解析:解析 因为 x 的值为大于 1 的奇数,所以 x 除以 2 的余数等于 1,因此,选项 A)、C)中表达式的结果为真,不为 0;对于选项 B)来说,x 除以 2 的商不会等于 0;选项 D)中表达式的结果为假,即等于0。22.以下叙述中正确的是(分数:1.00)A.break 语句只能用于 switch 语句体中B.continue 语句的作用是:使程序的执行流程跳出包含它的所有循环C.break 语句只能用在循环体内和 switch 语句体内 D.在循环体内使用 break 语句和 continue 语句的作用相同解析:解析 break 语句的功能是跳出正在执行的条件语句或循环语句
19、。它可以出现在 switch 语句中,也可以出现在循环语句中。continue 语句只是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断。23.有以下程序 main() int k=5,n=0; do switch(k) case 1: case 3:n+=1;k-;break; default:n=0;k-; case 2: case 4:n+=2;k-;break; printf(“%d“,n); while(k0 for(i=1;i4;i+) for(j=i;j4;j+)printf(“%d*%d=%d “,i,j,i*j); printf(“/n“);
20、程序运行后的输出结果是(分数:1.00)A.1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3B.1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9 C.1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9D.1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9解析:解析 本题主要考查了 for 循环的嵌套。外层 for 循环的自变量 i 从 1 开始,每次循环后增 l,至到 i 等于 3 结束。内层循环的自变量 j 每次从 i 开始,每次循环后增 1,至到 j 等于 3 结束。在每次外循环开始后,内层循环在一行上先打
21、印“i*j=两个乘数的积”,然后换行,下次循环从下一行开始打印。25.以下合法的字符型常量是(分数:1.00)A./x13 B./081C.65D.“/n“解析:解析 C 语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在 C 语言中还允许用以一个“/”开头的字符序列来表示字符常量。其中,形式“/ddd”表示 1 到 3 位 8 进制数所代表的字符;形式“/xhh”表示 1 到 2 位 16 进制数所代表的字符。在本题中/x13表示回车符,是一个字符常量;/081用 8 进制数所代表的字符,但形式不正确,因为 8 进制数所表示的字符中不会出现数字“8”;65不是一个字符,而是一个
22、+进制数字;“/n”是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。26.在 C 语言中,函数返回值的类型最终取决于(分数:1.00)A.函数定义时在函数首部所说明的函数类型 B.return 语句中表达式值的类型C.调用函数时主调函数所传递的实参类型D.函数定义时形参的类型解析:解析 在 C 语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律自动按整型处理。在定义函数时对函数值说明的类型一般应该和 return 语句中的表达式类型一致。如果函数值的类型和 return 语句中的表达式类型不一致,则以函数类型为主。即函数类型决定返回值的类型。27.已知大写字母 A
23、 的 ASCII 码是 65,小写字母 a 的 ASCII 码是 97。以下不能将变量 c 中的大写字母转换为对应小写字母的语句是(分数:1.00)A.c=(c-A)%26+aB.c=c+32C.c=c-A+aD.c=(A+%26-a 解析:解析 C 语言中,字符数据参加运算时,实际上是其 ASCII 码参与计算。大写字母的 ASCII 码比其对应的小写字母的 ASCII 码小 31。因此要将大写字母转化为小写字母只需将其加上 32 即可。所以选项 B)、C)都符合条件,因为变量 C 中存储的是大写字母,所以“c-A”的值一定小于 26,故选项 A)与选项C)的含义相同。故本题答案为 D)。2
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 全国 计算机等级考试 二级 语言 2007 答案 解析 DOC
