《2015-2015年全国计算机等级考试二级C语言笔试试题及答案.docx》由会员分享,可在线阅读,更多相关《2015-2015年全国计算机等级考试二级C语言笔试试题及答案.docx(144页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2005年4月全国计算机等级考试二级C语言笔试试题及答案、选择题(110每小题2分,11 50每小题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在 答题卡相应位置上,答在试卷上不得分。(1)数据的存储结构是指。A)存储在外存中的数据B)数据所占的存储空间量数据在计算机中的顺序存储方式D)数据的逻辑结构在计算机中的表示(2)下列关于栈的描述中错误的是 A)栈是先进后出的线性表B)栈只能顺序存储栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是A)冒泡排序
2、为n/2B)冒泡排序为nC)快速排序为nD)快速排序为n(n-l)/2(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为A) log2n B) n/2 C) n D) n+1(5)下列对于线性链表的描述中正确的是。A)存储空间不一定是连续,且各元素的存储顺序是任意的B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间必须连续,且各元素的存储顺序是任意的(6)下列对于软件测试的描述中正确的是A)软件测试的目的是证明程序是否正确B)软件测试的目的是使程序运行结果正确 软件测试的目的是尽可能多地发现程序中的错误
3、D)软件测试的目的是使程序符合结构化原则(7)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 0模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 (8)下列描述中正确的是。A)程序就是软件B)软件开发不受计算机系统的限制软件既是逻辑实体,又是物理实体D)软件是程序、数据与相关文档的集合(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指。A)数据与程序独立存放B)不同的数据被存放在不同的文件中不同的数据只能被对应的应用程序所使用D
4、)以上三种说法都不对(10)用树形结构表示实体之间联系的模型是。A)关系模型B)网状模型层次模型D)以上三个都是(11)算法具有五个特性,以下选项中不属于算法特性的是 A)有穷性B)简洁性C)可行性D)确定性(12)以下选项中可作为C语言合法常量的是。A) -80. B) -080 0 -8el.0D) -80.0e(13)以下叙述中正确的是 A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须耍输入用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(14)以下不能定义为用户标识符的是。A) Main B) _0C) _i
5、nt D) sizeof(15)以下选项中不能作为合法常量的是=A) J.234eO4B) 1.234eO.4C) l.234e+4D) 1.234e0(16)数字字符0的ASCII值为48,若有以下程序main() char a=,1,, b=,2,;printf (%c, , b+);printf(/dn, ba);)程序运行后的输出结果是。A) 3,2 B) 50,2 C) 2,2 D) 2, 50(17)有以下程序mainO int m=12, n=34;printf (%d%d”, m+, +n);printf (z,%d%dn,z, n+, +m);)程序运行后的输出结果是 0A)
6、 12353514 B) 12353513 C) 12343514 D) 12343513(18)有定义语句:int b;char c10则正确的输入语句是 A) scanf (%d%s,&b, &c) ; B) scanf (%d%s,&b, c);C) scanf (,%d%s,/, b, c) ; D) scanf (%d%s”, b, &c);(19)有以下程序main() int m, n, p;scanf (in=%dn二%dp二%d“, &m, &n, &p);printf (%d%d%dn”, m, n, p);)若想从键盘上输入数据,使变量m中的值为123, n中的值为456
7、, p中的值为789,则正确的输入是 A) m二123n二456P二789 B) m=123 n二456 p=789C) m二 123, n=456, p=789 D) 123 456 789(20)有以下程序main() int a, b, d=25;a=d/10%9;b=a&(-l);printf (%d, %dn”, a, b);)程序运行后的输出结果是 0A) 6, 1 B) 2, 1 C) 6,0 D) 2,0(21)有以下程序main()(int i=l, j=2, k=3;if (i+=l&(+j=31|k+=3)printf (*%d %d %dn”, i, j, k);)程序
8、运行后的输出结果是。A) 1 2 3 B) 2 3 4 0 2 2 3 D) 2 3 3(22)若整型变量a、b、c、d中的值依次为:1、4、3、2则条件表达式aA)1 B) 2 3 D) 4(23)有以下程序main ()(int p8 = ll, 12, 13, 14, 15, 16, 17, 18, i=0, j=0;while(i+y?x:y;int f2(int x, int y)return xy?y:x;main() int a=4, b=3, c=5, d=2, e, f, g;e=f2 (fl (a, b), fl (c, d) ; f=f 1 (f2 (a, b), f2
9、(c, d);g=a+b+c+d-e-f;printf (*%d, %d, %dn”, e, f, g);)程序运行后的输出结果是 0A) 4, 3,7 B) 3, 4,7 C) 5, 2,7 D) 2,5,7(27)已有定义:char a=xyz, b = x, y, z);,以下叙述中正确的是A)数组a和b的长度相同B) a数组长度小于b数组长度C) a数组长度大于b数组长度D)上述说法都不对(28)有以下程序void f(int *x,int *y)int t;t=*x:*x=*y;*y=t;)main ()(int a8 = l, 2, 3, 4, 5, 6, 7, 8, i, *p,
10、 *q;p=a;q=&a7;while(pf (p, q) ;p+;q-;for(i=0;i8;i+)printf(*%d, *, ai);程序运行后的输出结果是 A) 8, 2, 3, 4, 5, 6, 7, 1, B) 5, 6, 7, 8, 1, 2, 3, 4,C) 1, 2, 3, 4, 5, 6, 7, 8, D) 8, 7, 6, 5, 4, 3, 2, 1,(29)有以下程序main()(int a3 3,*p, i;p=&a00;for (i=0;i9;i+)pi=i;for (i=0;i=n; i-)ai+l=ai;)main()(int i, aN = l, 2, 3,
11、4, 5, 6, 7, 8, 9, 10;fun (a, 2, 9);for(i=0;i5;i+)printfai);程序运行后的输出结果是 A) 10234 B) 12344 !2334 D) 12234(32)有以下程序main()int a3 2 = 0, (*ptr) 2, i, j;for(i=0;i2;i+) ptr=a+i; scanfptr); ptr+; for(i=0;i3;i+) for(j=0;j2;j+) printf(%2d”, aij);printf(n);)若运行时输入:1 2 3回车,则输出结果是。A)产生错误信息B) 1 0 0 ! 2 D) 1 02 0
12、3 0 2 00 0 0 0 3 0(33)有以下程序prt (int *m, int n) int i;for (i=0;imain ()(int =2, 3, 4, 5, i;prt (a, 5);for(i=0;i5;i+)printf (%d, , ai);程序运行后的输出结果是 A) 1,2, 3, 4, 5, B) 2, 3, 4,5, 6, C) 3, 4, 5, 6, 7, D) 2,3, 4, 5, 1, (34)有以下程序 main() int a = l, 2, 3, 4, 5, 6, 7, 8, 9, 0, *p;for(p=a;p程序运行后的输出结果是。A) 1, 2
13、, 3, 4, 5, 6, 7, 8, 9, 0, B) 2, 3, 4, 5, 6, 7, 8, 9, 10, 1,C) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, D) 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,(35)有以下程序define P 3void F(int x)return(P*x*x);main()printf(%dn”, F(3+5);程序运行后的输出结果是 A) 192 B) 29 25 D)编译出错(36)有以下程序main()int c=35;printf(*%dn*, c&c);程序运行后的输出结果是。A) 0 B) 70 0 35
14、 D) 1(37)以下叙述中正确的是 A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令宏名必须用大写字母表示D)宏替换不占用程序的运行时间(38)若有以下说明和定义union dtint a;char b;double c;data;以下叙述中错误的是 A) data的每个成员起始地址都相同B)变量data所占的内存字节数与成员c所占字节数相等C)程序段:data. a=5;printf (%fn, data, c);输出结果为 5.000000D) data可以作为函数的实参(39)以下语句或语句组中,能正确进行字符串赋值的是 A) char *sp;*sp=ri
15、ght!”; B) char s 10; s=/,right!;C) char s10;*s=*right!*; D) char *sp=right!”;(40)设有如下说明typedef struct STlong a;int b;char c2;NEW;则下面叙述中正确的是 A)以上的说明形式非法B) ST是一个结构体类型 NEW是个结构体类型D) NEW是一个结构体变量(41)有以下程序main() int a=l, b;for (b=l;b=8)break;if(a%2=l)a+=5;continue; a-=3;printf(%dn”,b);)程序运行后的输出结果是 0A) 3 B)
16、 4 C) 5 D) 6(42)有以下程序main() char s=/z159/z, *p;p=s;printf(%c”, *p+);printf(%c”, *p+);)程序运行后的输出结果是。A) 15 B) 16 C) 12 D) 59(43)有以下函数fun(char *a, char *b) while (*a != ) &(*b!=、) &(*a=*b) a+;b+; return(*a-*b);)该函数的功能是 A)计算a和b所指字符串的长度之差B)将b所指字符串连接到a所指字符串中将b所指字符串连接到a所指字符串后面D)比较a和b所指字符串的大小(44)有以下程序main()
17、int num4 4 = 1, 2, 3, 4, 5,6, 7,8, 9, 10, 11, 12, 13, 14, 15, 16, i, j; for(i=0;i4;i+) for(j=0;j=i;j+) printf(*%4c*, * );for(j=; jtptq trstruct node int data; struct node *next; *p, *q, *r;现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操 作的语句是 A) Pnext二q-next; B) pnext二p-nextnext;C) p-next=r; D) p=q-next;(48)以下对
18、结构体类型变量td的定义中,错误的是 A) typedef struct aa B) struct aa int n; int n; float m; float m; AA; td;AA td; struct aa td;C) struct D) struct int n; int n; float m; float m; aa; td;struct aa td;(49)以下与函数fseek(fp, OL, SEEK_SET)有相同作用的是 A) feof(fp) B) ftell(fp) C) fgetc(fp) D) rewind(fp) (50)有以下程序 #includevoid W
19、riteStr(char *fn, char *str) FILE *fp;fp=fopen(fn, w);fputs(str, fp);fclose(fp);) main () (WriteStr(tl. dat, start);WriteStr(tl. dat, end); )程序运行后,文件tl.dat中的内容是 A) start B) end C) startend D) endrt二、填空题(每空2分,共40分)请将每空的正确答案写在【1】至20序号的横线上,答在试卷上不得分。 (1)某叉树中度为2的结点有18个,则该叉树中有【1】个叶子结点。 2)在面向对象方法中,类的实例称为2
20、0(3)诊断和改正程序中错误的工作通常称为【3】(4)在关系数据库中,把数据表示成二维表,每个二维表称为【4】。(5)问题处理方案的iF:确而完整的描述称为【5】。(6)以下程序运行时,若从键盘输入:1020 30回车,输出的结果是6】 #includemain () int i=0,j=0,k=0;scanf(%d%*d%d, &i, &j,&k); printf (z,%d%d%dn, i, j, k);)(7)以下程序运行后的输出结果是7】。#define S (x) 4*x*x+l main () int i=6,j=8;printf(%dn”, S(i+j);(8)以下程序运行后的输
21、出结果是【8】 main() int a=3, b=4, c=5, t=99;if (b if (a printf (z/%d %d %dnz a, b, c);)(9)以下程序运行后的输出结果是【9】, main() int a, b, c;a=10; b=20; c=(a%bl);printf (z,%d %d %dn”, a, b, c);)(io)以下程序运行后的输出结果是I。main() char cl, c2;for (cl =0, c2= 9,;cl printf (n);)(11)已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33 回车,则输出结果是【11】
22、。#includemain () char a, b;a二getchar () ; scanf (zz%dzz, &b);A + 0; b二b*2;printf (zz%c %cnzz, a, b);(12)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。 请填空。void fun(int, int, int(*) 4, int *);main () int a3 4 = 12, 41, 36, 28, 19, 33, 15, 27, 3, 27, 19, l,b3, i;fun (3, 4, a, b);for (i=0; i3; i+) printf (%4d, bi)
23、;printf (n);void fun (int m, int n, int ar 4, int *br) int i, j, x;for(i=0;i x=ari0;for(j=0;j 【12】二x;)(13)以下程序运行后的输出结果是【13】。void swap(int x, int y) int t;t=x; x=y; y=t; printf C%d %d ”, x, y);)main() int a=3, b=4;swap (a, b); printf (%d %d, a, b);)(14)以下程序运行后的输出结果是【14】0 Sincludevoid fun (char *s, in
24、t p, int k) int i;for (i二p;imain () char s=abcdefg;fun (s, 3, strlen (s) ; puts (s);(15)以下程序运行后的输出结果是【15】 Sincludemain () char ch口=”abc, x3 4; int i;for(i=0;i3;i+) strcpy(xi, ch);for(i二;i3;i+) printf(%s,&xii);printf(、n);)(16)以下程序运行后的输出结果是【16】。fun(int a) int b=0; static int c=3;b+;c+;return(a+b+c);)m
25、ain () int i,a=5;for(i=0;ik=+i; p+;q-k=i+; q-;)q-k=i;for (i=0;i5;i+) printf(%d, mi. k);printf(n);)(18)以下程序中函数huiwen的功能是检査一个字符串是否是回文,当字符串 是回文时,函数返冋字符串:yes!,否则函数返冋字符串:no!,并在主函数屮 输出,所谓回文即正向与反向的拼写都一样,例如:adgdao请填空。#includechar *huiwen(char *str) char *pl,*p2; int i, t=0;pl=str;p2= 18;for(i=0;i=kB. -k+C.
26、k%int(f)D. k=f=m(23)设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是A. (!a=l)&(!b=O)B. (aC. a & bD. a I I (b+b)&(c-a)(24)有以下程序段int k=O, a=l, b=2, c=3;k=ac ? c:k;执行该程序段后,k的值是A. 3 B. 2 C. 1 D. 0(25)设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句 if (ab)if (c=d) y=O;else y=l;该语句所表示的含义是abil.cd。泌且 3d。之6且cwd046且。=D)1y =, c*d(26)有以下程序
27、段int n,t=l, s=O;scanf(*%d*, &n);do s=s+t; t=t-2; while (t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数(27)设变量已正确定义,则以下能正确计算f = n!的程序段是A. f=0;for(i=l;i=n;i+) f*=i;B. f=l;for(i=l;il:i+) f*=i;D. f=l;for(i=n;i=2;i) f*=i;(28)设有定义:int nl=0, n2, *p=&n2, *q=&nl;,以下赋值语句中与n2=nl;语 句等价的是A. *p=*q;B.
28、p=q;C. *p=&nl;D. p=*q;(29)若有定义:int x=0, *p=&x:则语句printf (%dn, *p);的输出结果是A,随机值B. 0C. x的地址D. p的地址(30)设函数fun的定义形式为void fun(char ch, float x ) 则以下对函数fun的调用语句中,正确的是A. fun(abc”, 3. 0);B. t=fun C D*, 16. 5);C. fun (65, 2. 8);D. fun(32, 32);(31)有以下程序main () int a10 = l, 2, 3, 4, 5, 6, 7, 8, 9, 10), *p=&a3,
29、*q=p+2;printf (刎、n, *p + *q);)程序运行后的输出结果是A. 16B. 10C. 8D. 6(32)有以下程序main() char p = a, b, c, qabc”;printf (z,%d %dn”, sizeof (p), sizeof (q););程序运行后的输出结果是A. 4 4B. 3 3C. 3 4D. 4 3(33)有以下程序# define f(x) (x*x)main () int il, i2;il=f(8)/f(4) ; i2=f(4+4)/f(2+2);printf (*%d, %dn”, i 1, i2);程序运行后的输出结果是A. 64, 28B. 4, 4C. 4, 3D. 64, 64(34)有以下程序main () char al- M, a2= m;printf (枇、n”, (al, a2) ); 以下叙述中正确的是A.程序输出大写字母MB.程序输出小写字母mC.格式说明符不足,编译出错D.程序运行时产生出错信息(35)有以下程序#includemain () char cl=l, c2= 2) ;cl=getchar(); c2=getchar(); putchar(cl); putchar(c2);)当运行时输入:a