《2007-2012计算机二级C语言_笔试题.docx》由会员分享,可在线阅读,更多相关《2007-2012计算机二级C语言_笔试题.docx(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2011年9月全国计算机等级考试二级 笔试试卷C语言程序设计(考试时间90分钟,满分100分)、选择题(一(10)、(21)(40)每题 2 分,(11) 一(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有 个选项是正确的。请将正确选项填涂在答题卡 相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)算法就是程序B)设计算法时只需考虑数据结构的设计C)设计算法时只需考虑结果的可靠性D)以上三种说法都不对(2)下列关于线性链表叙述中,正确的是A)各数据结点的存储空间可以不连续,但它 们的存储顺序与逻辑顺序必须一致B)各数据结点的存储顺序与逻辑顺序可以不 一致,但它
2、们的存储空间必须连续C)进入插入与删除时,不需要移动表中的元 素D)以上三种说法都不对下列关于叉树的叙述中,正确的是A)叶子结点总是比度为2的结点少个B)叶子结点总是比度为2的结点多一个C)叶子结点数是度为的结点数的两倍D)度为2的结点数是度为1的结点数的 两倍(4)软件按功能分为应用软件、系统软件和支 撑软件(或工具软件)。下现属于应用软件的是A)学生成绩管理系统 B)C语言编译程序C)UNIX操作系统D)数据库管理系统(5)某系统总结构图如下图所示:该系统总体结构图的深度是A)7B)6C)3D)2程序调试的任务是A)设计测试用例 B)验证程序的正确 性 C)发现程序中的错误 D)诊断和改正
3、 程序中的错误下列关于数据库设计的叙述中,正确是的A)在需求分析阶段建立数据字典B)在概念设计阶段建立数据字典C)在逻辑设计阶段建立数据字典D)在物理设计阶段建立数据字典数据库系统的三级模式不包括A)概念模式C)外模式RB)内模式D)数据模式STA BCABCAB Ca12ab21bc31(9)有三个关系R、12c2 1S和T如下:31则由关系R和S得到关系T的操作是A)自然连接B)差C)交D)并(10)下列选项中属于面向对象设计方法主要 特征的是A)继承B)自顶向下C)模块化D)逐步求精(11)以下叙述中错误的是A)C语言编写的函数源程序,其文件名后缀 可以是CB)C语言编写的函数都可以作为
4、个独立的 源程序文件C)C语言编写的每个函数都可以进行独立的 编译并执行D)个C语言程序只有一个主函数(12)以下选项中关于程序模块化的叙述错误 的是A)把程序分成若干相对独立的模块,可便于 编码和调试B)把程序分成若干相对独立、功能单一的模 块,可便于重复使用这些模块C)可采用自底向上、逐步细化的设计方法把 若干独立模块组装成所要求的程序D)可采用自顶向下、逐步细化的设计方法把 若干独立模块组装成所要求的程序(13)以下选项中关于C语言常量的叙述错误 的是A)所谓常量,是指在程序运行过程中,其值 不能被改变的量B)常量分为整型常量、实型常量、字符常量 和字符串常量C)常量可分为数值常量和非数
5、值常量D)经常被使用的变量可以定义成常量(14)若有定义语句:int a=10; doubleb=3.14;,则表达式,A+a+b的值的类型是A)charB)intC)doubleD)float(15)若有定义语句:int x=12, y=8, z;,在其 后执行语句z=0.9+x/y;,则z的值为A)1.9B)1C)2D)2.4(16)若有定义:int a,b;,通过语 scanf(%d;%d,&a,&b);,能把整数 3 赋给变量 a, 5 赋给变量b的输入数据是A)3 5B)3,5C)3;5D)35(17)若有定义语句:int kl=10, k2=20;,执行 表达式伙l=klk2) &
6、 (k2=k2kl)后,kl 和 k2 的 值分别为A)0 和 1B) 和 20C)10 和 1D)10 和 20(18)有以下程序/include main() int a=l, b=0;if (-a)b+;else if(a=O) b+=2;else b+=3;printf(%dn”,b);)程序运行后的输出结果是A)0B)1C)2D)3(19)下列条件语句中,输出结果与其他语句 不同的是A) if(a) printf(%dn, x); elseprintf(%dn,y); printf(%d,*s%10); +s; B) if(a=O) printf(%dn,Y);elsewhile (
7、*s);printf(%dn,x);C) if(a!=O) printf(%dn,x);else程序运行后的输入结果是printf(%dn,y);A)abc6)789D) if(a=O) printf(%dn,x);elseC)7890D)979899printf(%dn,y);(23)若有定义语句:double a,*p=&a;以下(20)有以下程序叙述中错误的是/include A)定义语句中的号是个间址运算符main()B)定义语句中的号只是个说明符 int a=7;C)定义语句中的p只能存放double类型变量while (a-);的地址printf(%dn,a);D)定义语句中,*p
8、=&a把变量a的地址作为初值赋给指针变量p程序运行后的输出结果是(24)有以下程序A)-lB)0#include C)1D)7double f(double x);(21)以下不能输出字符A的语句是(注:字main()符A的ASCII码值为65.字符a的ASCII码值为 double a=0; int i;97)for (i=0; i30; i+=10) a+=f( (double)i);A)printf(%cn,a-32);printf(%5.0fn,a);B)printf(%dn,A)C)printf(%cnz65);double f(double x)D)printf(%cn;B-l);
9、 return x*x+l; (22)有以下程序(注:字符a的ASCII码值为程序运行后的输出结果是97)AJ5036)401/include 0500DJ1404main()(25)若有定义语句:int year=2009, char *s=*abc;*p=&year;,以下不能使变量year中的值增至2010的语句是doA)*p+=1;B)(*p)+;C)+(*P);D)*p+;(26)以下定义数组的语句中错误的是A)int num=1,2,3,4,5,6B)int num3=l,2,3,4,5,6;C)int num24=l,2,3,4,5,6;D)int num4=l,2,3,4,5,
10、6;(27)有以下下程序 include void fun(int *p) printf(%dn, p5); main() int a10=l,2,3,4,5,6,7,8,9,10; fun(&a3);程序运行后的输出结果是A)5B)6C)8D)9(28)有以下程序#include # define N 4void fun(int aN, int b) int i;for (i=0; iN; i+) bi=aii-aiN-l-i;)main()intxNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1 6, yN, i;fun(x, y);for (i=0;iN;
11、 i+)printf(%d,yi);printf(n);)程序运行后的输出结果是A)-12,-3,0,0,B)-3,-1,1,3,C)0,1,2,3,D)-3,-3,-3,-3,(29)有以下函数 int fun(char *x, char *y) int n=0;while (*x=*y) & *x!=0) x+; y+; n+;return n;函数的功能是A)查找x和y所指字符串中是否有。B)统计x和y所指字符串中最前面连续相同 的字符个数C)将y所指字符串赋给x所指存储空间D)统计x和y所指字符串中相同的字符个数(30)若有定义语句:char *sl=OK, *s2=ok;(以下选项中
12、,能够输出。以的语句是 A)if (strcm(sl,s2)=0 puts(sl);B)if(strcm(sl,s2)!=0 puts(s2);C)if (strcm(sl,s2)=l puts(sl);D)if(strcm(sl,s2)!=0 puts(sl);(31)以下程序的主函数中调用了在其前面定 义的fun函数#include main()n+=m; double a15,k;k=fun(a)则以下选项中错误的fun函数首部是 A)double fun( double a15) B)double fun( double *a) C)double fun( double a) D)do
13、uble fun( double a) (32)有以下程序 #include #include main() char a510=china, beijing, you, tiananmen, welcome;int ij; char t10;for (i=0; i4; i+)for (j=i+l; j0) strcpy(t,ai); strcpy(ai,aj); strcpy(aj,t); puts(a3);程序运行后的输出结果是A)beijingB)chinaC)welcomeD)tiananmen(33)有以下程序ffinclude int f(int m) static int n=0
14、;return n;main() int n=0;printf(%d, f(+n);printf(%dn, f(n+);程序运行后的输出结果是A)l,2B)l,lC)2,3D)3,3(34)有以下程序#include main() char ch35=AAAA,BBB,CC; printf( %sn, chl);程序运行后的输出结果是A)AAAAB)CCC)BBBCCD)BBB(35)有以下程序include include void fun(char *w, int m) char s,*pl, *p2;pl=w; p2=w+m-l;while (plp2) s=*pl; *pl=*p2;
15、*p2=s;P1+; P2-;)main() char a=123456; fun( a, strlen(a); puts(a);程序运行后的输出结果是AJ6543216)116611C)161616DJ123456(36)有以下程序#include #include typedef struct char name9; char sex; int score2; STU;STU f(STU a) STU b=“Zhao”m,85,90;int i;strcpy(a.name, b.name);a.sex=b.sex;for (i=0; i2; i+) a.scorei=b.scorei;re
16、turn a;main() STU c=Qiann,f,95,92, d;d=f(c);printfs,%c,%d,%d,”,d.name,d.sex,d.score0,d.sc orel);printf(H%s,%c,%d,%dn,c.name,c.sex,c.score0,c.s corel);程序运行后的输出结果是A)Zhao,m,85,90,Qian,f,95,92B)Zhao,m,85,90,Zhao, m,85,90A)Qian,f,95,92,Qian,f,95,92B)Qian,f,95,92,Zhao,m,85,90(37)有以下程序include main() struct
17、 node int n; struct node *next; *p;struct node x3=2,x+l, 4,x+2, 6, NULL;P=x;printf(%d, p-n );printf(H%dn,p-next-n );)程序运行后的输出结果是A)2,3B)2,4C)3,4D)4,6(38)有以下程序#include main() int a =2, b;b=a2; printf(%dn,b);程序运行后的输出结果是A)2B)4C)6D)8(39)以下选项中叙述错误的是A)C程序函数中定义的赋有初值的静态变量, 每调用一次函数,赋次初值B)在C程序的同一函数中,各复合语句内可 以定
18、义变量,其作用域仅限于本复合语句内C)C程序函数中定义的自动变量,系统不自 动赋确定的初值D)C程序函数的形参不可以说明为static型 变量(40)有以下程序#include main() FILE *fp;int k,n,i,a 6=1,2,3,4,5,6;fp = fopen(d2.dat,w);for (i=0; i6; i+) fprintf(fp, %dn,ai);fclose(fp);fp = fopen(d2.dat,r);for (i=0; i3; i+) fscanf(fp, %d%d, &k, &n);fclose(fp);printf(%d,%dn, k, n);程序运
19、行后的输出结果是A)l,2B)3,4C)5,6D)123,456二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】 序号的横线上,答在试卷上不得分。(1)数据结构分为线性结构和非线性结构,带 链的栈属于10(2)在长度为n的顺序存储的线性表中插入 个元素,最坏情况下需要移动表中【2】个元素。常见的软件开发方法有结构化方法和面 向对象方法。对某应用系统通过需求分析建立数 据流图(DFD),则应采用3I方法。(4)数据库系统的核心是【4】。(5)在进行关系数据库的逻辑设计时,E-R图 中的属性常转换为关系中的属性,联系通常转换 为【5】。(6)若程序中已给整型变量a和b赋
20、值10和 20,请写出按以下格式输出a, b值的语句【6】。*b=20*(7)以下程序运行后的输出结果是171。#include main() int a=37;a%=9; printf(%dnza);)以下程序运行后的输出结果是8】。#include main() int i,j;for (i=6; i3; i- ) j=i;printf(%d%dn,i,j);(9)以下程序运行后的输出结果是9#indude main() int i, n =0,0,0,0,0;for (i=l; i=2; i+ ) ni=ni-l*3 + 1;printf(%d,ni);) printf(n);(10)以
21、下程序运行后的输出结果是【10】。include main() char a;for( a=0; a15; a+=5 ) putchar(a+A); printf(n);(11)以下程序运行后的输出结果是【11】。#include void fun (int x) if (x/50) fun(x/5);printf(%d ,x);main()fun(ll); printf(n);(12)有以下程序#include main() int c3=0, k, i;while (k=getchar() )!=n) ck-A+;for (i=0; i3; i+) printf(%d,ci); print
22、f(n);若运行程序时从键盘输入ABCACC回车,则输出结果为【12】。(13)以下程序运行后的输出结果是【13】。#include main() int n2, i,j;for (i=0; i2; i+ ) ni=0;for (i=0; i2; i+ )for (j=0; j2; j+ ) nj=ni+l; printf(%dn,nl);(14)以下程序调用fun函数把x中的值插入到 a数组下标为k的数组元素中。主函数中,n存 放a数组中数据的个数,请填空。#include void fun( int s, int *n, int k, int x) int i;for (i=*n-l; i
23、=k; i-) s【14】=si;sk=x;*n=*n+15;main() int a20=l,2,3,4,5,6,7,8,9,10,ll, i, x=0, k=6, n=ll;fun(a,&n,k,x);for(i=0;iD)a=l+(b=c=4);(16)有以下程序段char name20;int num;scanf(name=%s num=%d/name;&num);当执行上述程序段,并从键盘输入:name二Lili num二1001回车后,name的值为A)LiliB)name=LiliC)Lilinum= D)name=Lili num=1001(17)if语句的基本形式是:if(表
24、达式)语句, 以下关于“表达式”值的叙述中正确的是A)必须是逻辑值B)必须是整数值C)必须 是正数D)可以是任意合法的数值(18)有以下程序#includemain()int x=011;printf(%dn,/+x);程序运行后的输出结果是A)12B)llC)10D)9(19)有以下程序#includemain()int s;scanf(%dz&s);while(s0)switch(s)casel:printf(”d”,s+5);case2:printf(%d/s+4); break;case3:printf(d”,s+3);default:printf(”d”,s+l);break;sca
25、nf(%d,&s);运行时,若输入1 2 3 4 5。回车,则输出 结果是A)6566456B)66656066666D)6666656(20)有以下程序段int i,n;for(i=0;i=,0&si=9,) n+;printf(%dn”,n);程序运行后的输出结果是A)0B)3C)7D)8(22)若i和k都是int类型变量,有以下for 语句for(i=0,k=-l;k=l;k+) printf(*n);下面关于语句执行情况的叙述中正确的是A)循环体执行两次B)循环体执行一次C)循环体次也不执行D)构成无限循环(23)有以下程序includemain()char bzc; int i;b=
26、a; c=A;for(i=0;i=a&*c=z) *c=*c-(a-A);C+;main()char s81;gets(s); fun(s); puts(s):当执行程序时从键盘上输入Hello Beijing回 车,则程序的输出结果是A)hello beijing B)Hello Beijing C)HELLOB日JINGD)hELLO Beijing(30)以下函数的功能是:通过键盘输入数据, 为数组中的所有元素赋值。#include#define N 10void fun(int xN)int i=0;while(i)在程序中下划线处应填入的是A)x+IB)&xi+1C)x+(i+)D)
27、&x+i(31)有以下程序includemain()char a30,b30;scanf(%s,a);gets(b);printf(%sn %sn,a,b);程序运行时若输入:B)how I amD)row are you?则函数fun总how are you? I am fine回车 则输出结果是A)how are you?fine are you? I am fineC)how are you? I am fine (32)设有如下函数定义int fun(int k)if (kl) return 0;else if(k=l) return 1;else return fun(k-l)+l;
28、若执行调用语句:n=fun(3);, 共被调用的次数是A)2 B)3 C)4 D)5(33)有以下程序includeint fun (int xjnt y)if (x!=y) return (x+y);2);else return (x); main()int a=4zb=5zc=6;printf(dn”,fun(2*a,fun(b,c);程序运行后的输出结果是A)3B)6C)8D)12(34)有以下程序#includeint fun()static int x=l;x*=2;return x;main()int i,s=l;for(i=l;ix);printf(%dn,+(p-y);程序运行
29、后的输出结果是A)l,2B)4,lC)3,4D)2,3(38)有以下程序includestruct Sint a,b;data2=10,100,20,200;main()struct S p=datal;printf(%dn,+(p.a);程序运行后的输出结果是A)10B)llC)20D)21(39)有以下程序#includemain()unsigned char a=8,c;c=a3;printf(%dn,c);程序运行后的输出结果是A)32B)16C)1D)0(40)设fp已定义,执行语句 fp=fopen(file,w);后,以下针对文本文件file操 作叙述的选项中正确的是A)写操作结
30、束后可以从头开始读 B)只能写不能读C)可以在原有内容后追加写 D)可以随意读和写二、填空题(1)有序线性表能进行二分査找的前提是该 线性表必须是【1】存储的。(2)一棵叉树的中序遍历结果为DBEAFC, 前序遍历结果为ABDECF,则后序遍历结果为【2】。对软件设计的最小单位(模块或程序单元) 进行的测试通常称为3I测试。(4)实体完整性约束要求关系数据库中元组 的【4】属性值不能为空。(5)在关系 A(S,SN,D)和关系 B(D,CN,NM)中,A 的主关键字是S, B的主关键字是D,则称【5】 是关系A的外码。(6)以下程序运行后的输出结果是61#includemain()int a;
31、a=(int)(double)(3/2)+0.5+(int)1.99*2);printf(%dn”,a);)有以下程序#includemain()int x;scanf(%d,&x);if(x15) printf(%d,x-5);if(x10) printf(%d,x);if(x5) printf(%dn,x+5);若程序运行时从键盘输入12回车,则输岀 结果为71(8)有以下程序(说明:字符0的ASCI!码值 为48)includemain()char cl,c2;scanf(”d,&cl);c2=cl+9;printf(%c%cn/cl/c2);若程序运行时从键盘输入48回车,则输出 结果为8.(9)有以下函数void prt(char ch,int n)int i;for(