《四川计算机二级C语言真题.docx》由会员分享,可在线阅读,更多相关《四川计算机二级C语言真题.docx(172页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、四川省普通高等学校计算机应用知识和能力第十九次等级考试二级(C与C+语言)笔试试卷时间:2003年10月18日上午9:0011:00第一部分软件技术基础(共15分)一、是非判断题(每小题1分,共10分)(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B )1 .在目前,用于保证软件质量的主要手段是进行软件测试。(1)2 .使用DMA方式传送数据期间不需要CPU干预。(2)3 .线性顺序队列会产生“假溢出”,而线性循环队列则不会。(3)4 .对同一种算法,用高级语言编写的程序比用低级语言编写的程序运行速度快。(4)5 .在线性表中,数据的存储方式有顺序和链接两种。(5)6 .进
2、程是由程序块、文件控制块和数据块三部分组成。(6)7 .在面向对象的程序设计中,派生类只能从一个基类产生。(7)8 .操作系统是用户和硬件的接口。(8)9 .个人计算机中可配置的最大内存容量受地址总线位数的限制。(9)10 .软件维护中最困难的问题是软件配置不全。(10)二、选择题(每小题1分,共5分)I .在排序法中,从未排序序列中依次取出元素,与已排序序列中的元素作比较,将其放入已排序序列的正确位置称为(11)。II (A)选择排序(B)快速排序(C)插入排序(D)冒泡排序2.有X、Y、Z三个元素依次入栈,不可能的出栈顺序是(12)。12(A) Z,Y,X(B) Z,X,Y(C)Y,X,Z
3、(D) X,Y,Z3.进程的状态是可以转换的,而以下哪个状态转换是不可能的(13).(B)执行状态今就绪状态(D)等待状态今执行状态(B)部分地址必须连续(D)连续与否均可以13 (A)就绪状态-执行状态(C)阻塞状态)就绪状态4.线性链表的地址(14)。14 (A)必须连续(C)一定不连续5.在软件测试中,(15)主要分析程序的内部结构。15(A)白盒法(B)黑盒法(C)因果图法(D)错误推测法第二部分C与C+语言程序设计(共85分)一、单项选择题(每小题1分,共10分)1 .对下列程序段的描述正确的是(16).# include int Fun(int x,int y)(return x+
4、y;void main()(int i=10;coutFun(i+,i)endl;16(A)程序输入结果不确定(B)程序输出结果是20(C)程序输出结果是21(D)程序输出是222 .下列描述正确的是(17)。17(A) C+程序中cout时需要用到预处理命令# include (B) C+程序必须有return语句(C) C+程序中的变量必须定义在主程序内部(D) C+程序中所有使用的符号常量可以不进行定义3 .下述程序的输出结果是(18)。# include void main()(int y=10;while(y);printf(y=%d,y);18(A) y=0(B)y=l(C) y=
5、随机值(D)y=-14.若有以下说明:char strl=,copyM,str220,*str3=MstrM,*str4,*str5=Mgood;则正确的串操作语句是(19)o19(A) strcpy(str4,strl);(B) strcat(strl,str3);(C) str2=*new str,;(D) strcpy(str5,str3);5 .下面程序运行后,x,y,z的值分别为(20)。# include void main()(int x=0,y=0,z=0;+xll4-+yll+z;printf(,%d%d%dn,x,y,z);20(A)100(B)000(C)111(D)00
6、16 .以下程序运行的结果是(21)o# include union myun struct int x,y,z; u;int k;a;void main()(a.u.x=4; a.u.y=5; a.u.z=6;a.k=O;printf(n%d %d %dn, a.u.x, a.u.y, a.u.z);21(A)456(B)654(C)056(D)0657 .关于C+和C语言学关系描述中,错误的是(22).22(A)C语言与C+是兼容的(B) C+对C语言进行了一些改进(C) C语言是C+的一个子集(D) C+和C语言都是面向对象的8 .下列描述中,正确的是(23)o23(A)子类可以继承其父
7、类的所有属性和操作,但子类不能定义自己特有的属性和操作(B)消息传递是类与类之间通信的手段(C)C+允许函数重载,但不允许运算符重载(D) C+中可以定义虚函数,通过它来支持动态联编9 .下面程序运行的结果是(24)。# define f(x) l+x+x*x# include void main()(int a=2,b=3;printf(,%dn,f(a4-b);)24(A)17(B)31(C)13(D)710 .下面局部程序代码是C+中的(25)特性的表现。void display(int var) coutvar;void display(char var) coutvar;void d
8、isplay(int var 1,int var2) coutvar 1var2;封装25(A)继承(B)重载(C)多态性二、读程序回答问题(每个选择3分,共45分)1 .有下列程序:# include int f(int m)(static int x3J=2,3,4;int i;for(i=0;i3;i+)xi+=xi-m;for(i=0;i3;i+)printf(M%d;;xi);printf(nnn);retum(xm);void main() int y=l;f(f(y);(1)第一次调用f函数的结果是(26)26(A)5,7,9,(B)1,5,9,(C)0,1,3,(D)3,5,7
9、,(2)第二次调用f函数的结果是(27)o27(A)3,5,7,(B)1,5,9,(C)0,1,3,(D)5,7,9,2.读下列程序,运行时输入:This is abook!# include int change(char *c,int fg) if(*c=)LI: return 1;elseif ( fg &*c=ar)*c+=,A,-,a;return 0;void main()(int flag=l;char ch;do ch=getchar();tlag=change(&ch,flag);putchar(ch);while(ch!=n);(1)程序的运行结果是(28).28(A) T
10、HIS IS A BOOK!(C) This Is A Book!(2)与LI: return 1等效描述的为(29(B) this Is A Book!(D) This Is a Book!)o29(A) return 0(B) return -1(C) return 1-1(D) return !(-l)3.读下列程序,回答问题。(28)o# include iostream.h int sb(int *s,int y) static int i=3;y=si-; return y;)void main() int s=1,2,3,4);int i,x=O;for(i=0;i4;i+) x
11、=sb(s,x); coutxV;)coutendl;(1)程序结束后i的值为(30)。30(A)4(B)0(C)2(D)l(2)该程序的输出结果是(31).31(A)1,2,3,4,(B)2,3,4,(C)3,4,l,2,(D)4,3,2,1,4.读下列程序,回答问题。# include iostream.hvoid main() char*s=n213142M;int a=0,b=0,c=0,d=0;int k;for(k=0;sk;k+)switch(sk) default: d+;case T: a+;case 3: C+;case 2: b+;)cout,a=a,b=ub,c=,c,
12、d=ndendl;)(1)该程序运行结束时,k的值是(32)o32(A)8(B)7(C)6(D)5(2)该程序的输出结果是(33)o33(A) a=4,b=5,c=4,d=l(B) a=4,b=9,c=3,d=l(C) a=3,b=6,c=4,d=1(D) a=8,b=8,c=8,d=85 .下列程序运行的结果为(34)o# include stdio.hvoid fun(char *s) char t;if(*s) t=*s+; fun(s);if(t!=rO,) putchar(t);) void main() char *a=H1234; fun(a);34(A)1234(B)4321(
13、C)1324(D)42316 .读下列程序,回答问题。# include stdio.h1void sub 1(char a,char b) char c;c=a; a=b; b=c;)void sub2(char *a,char b) char c; c=*a;*a=b; b=c;void sub3(char *a,char *b) char c; c=*a;*a=*b;*b=c;)void main() char a,b;a=A*; b=Bf;sub3(&a,&b); putchar(a); putchar(b);sub2(&a,b); putchar(a); putchar(b);sub
14、l(a,b); putchar(a); putchar(b);程序中调用完函数sub3后,输出为(35)o35(A)AB(B)ABBA(C)BA(D) BAAB该程序的最终输出结果为(36)o36(A) ABBBAB(B) ABBBBB(C) BABABA(D) BAAAAA7 .读以下程序,并回答问题。# include union btint a;int b2;void fun(union bt *c)(c-a=-7;c-b0=9;c-bl=8;void main()( union bt c; fun(&c); printf(,%dn,c.a);)(1)程序的输出结果为(36).36(A)
15、8(B)9(C)-7(D)7(2)若将程序中的所有的union换成struct,则程序的输出结果为(37).37(A)8(B)9(C)-7(D)78 .读程序,回答问题。# include # include void main(int argc,char *argvJ)(FILE *fp;void fun(FILE *fp);int i=l;while0)if(fp=fopen(argvi4-+,MrM)=NULL) printf(HCannot open file!nu); exit(O);) else fun(fp); fclose(fp);) void fun(FILE *fp)( c
16、har c; c=fgetc(fp); while(c!=EOF) if(c=A& c=a,& c=,z,) putchar(c-Ca-1A);c=fgetc(fp);上述C程序经编译、连接后生成一个可执行文件,文件名为ex2_8。假设磁盘上有两个文本文件 filel.txt 和 file2.txt, filel.txt 的内容为 SiChuan, file2.txt 的内容为 Test。若在DOS提示符下键入:ex2_8 file.txt fHe2.txtv回车,则程序的运行结果为(3939(A) SICHUAN (B) SICHUANTEST (C) SiChuanTest (D) TES
17、T9.下面程序的输出是(40)o# include stdio.hint fun(char value ,int n) value=n-l;value&=0x01;retum( value);void main() char c=13;printf(n%dnfun(c,2);40(A)13(B)1(C)3(D)0注意:请把下面“程序填空”中各小题答案写在主观题答题纸上每一个空只填一个语句或一个语句所缺的部分内容三、程序填空(每空2分,共30分)1 .下面程序是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。函数Sum计算数组元素之和。请完成下列程
18、序。# include int TotalSum(int ,int);void main() int a5=2,3,6,8,10;int Total;Totals;countnAumof array:endl;int TotalSum(int array。,ini len) int sum=0;for(int i=0;i=0;i) cinch;if()value+=; coutdecimal value is nvalueendl;double power(double x,int n) double val=1.0; while(n-);return(val);3 .以下程序是判断输入的字符
19、串是否是“回文”(顺读和倒读都一样的字符串叫回文,如level),请填空。# include stdio.h# include nstring.hvoid main()(char s81,*pl,*p2;int n;gets(s);n=strlen(s);pl=s;p2=D;while()(if(*pl!=*p2) break;else pl+;)if(p lp2) printf(,Nonu);else printf(Yesn);4 .下面程序功能是检查一个4阶矩阵是否对称(即对所有的i,j,都有请填空。# include void main()(int num4f4;int i,j,flag
20、=O;printf(HInput array num:n);for(i=0;i4;i+)for(j=0;j4;j+)scanf(“d“,);for(i=0;i4;i+)for(j=0;j4;j+)if逾) flag=1; break;if() printf(Non);else printf(Yesn);5 .下面程序的功能是从键盘输入一字符串,将该字符串与一文本文件进行比较,打印出也之相同的行的行号和内容。voidcomp()用于文件的比较,文件名用命令行参数提供。请填空。# include stdio.h# include Hstring.hM# include stdlib.h1FILE
21、*fp;void comp(char *string) int line=0;char str100; fgets(str,100,fp);strstrlen(str)-1=0,;line+;printf(%d:%sn,line,str);)void main(int argc,char *argv)(char string100J;if(argc!=2) printf(nError nn); exit(O);if(fp=)=NULL) printfCCant open file %s!nu,argvl); exit(O);printf(MPlease input the string:nM)
22、;gets( string);comp(string);fclose(fp);四川省普通高等学校计算机应用知识和能力第二十次等级考试二级(C与C+语言)笔试试卷时间:2004年4月10日上午9:0011:00第一部分软件技术基础(共15分)一、是非判断题(每小题1分,共io分)1 .数据元素是数据的基本单位,数据项是数据的最小单位。(1)2 .栈是特殊的线性表,须用一组地址连续的存储单元来存储其元素。(2)3 .引入虚拟存储技术后,逻辑内存总容量是由地址总线的位数确定的。(3)4 .编译程序是一种常用的应用软件。(4)5 .顺序文件和链接文件的长度都可以动态变化。(5)6 .在文件系统中彩目录
23、管理文件。(6)7 .允许多用户在其终端上同时交互地使用计算机的操作系统称为实时系统。(7)8 .程序、数据、和程序控制块是构成一个进程的三要素。(8)9 .黑盒测试时,既要考虑程序的内部逻辑结构又要考虑其外部特性。(9)10 .软件的总体设计和详细设计都要用PAD图形工具。(10)二、单项选择题(每小题1分,共5分)I .允许用户把若干作业提交计算机系统集中处理的操作系统称为(11).II (A)分时操作系统(B)实时操作系统(C)网络操作系统(D)批处理操作系统2 .分配到必要资源并获得了处理机时的进程的状态称为(12)。12(A)就绪状态(B)执行状态(C)等待状态(D)阻塞状态3 .利
24、用通道技术可以在(13)之间直接交换数据。13(A)内存与CPU(B) CPU与外设(C)内存与外设(D)内存、CPU和外设三者4 .以下的准则中哪个不是软件设计的准则(14).14(A)编程语言选择准则(B)信息屏蔽准则(C)结构化和模块化准则(D)抽象准则5 .有一数列:97657613294958经过一趟排序后得到:65971376294958请问使用的是何种排序方法(15)。15(A)简单插入排序(C)2路归并排序(B)冒泡排序(D)快速排序第二部分C与C+语言程序设计(共85分)一、单项选择题(每小题1分,共io分)1.定义如下枚举类型:enum Day Monday,Tuesday
25、,Wednesday,Thursday,Friday=2;则下列语句正确的是(16)o16(A)表达式 Wednesday=Friday 的值是 true(B) enum Day day; day=3;(C) enum Day day; day=Tuesday-3;(D) enum Day day; day=Monday+10;2.下列程序片段的输出结果是(17)oint m=4;do printf(d,”,m-=3); while(!(m);17(A)1(B)1,-3,(C)3,03 .执行下列程序片段时的输出结果是(18)oint x,y;x=3;y=5;printf(,%d,x%=(y/
26、=2);18(A)3(B)2(C)14 .对于下述程序,判断正确的是(19)o# include (D)死循环(D)0void f(int *p)*p=10;int *p;void main()f(p);printf(%d,(*p)+);)19(A)输出的值是随机值(C)输出值为105.下列程序运行的结果是(20# define FU(y)2.8+y# define PR(a) printf(d,(int)(a)# define PRINT(a) PR(a);# include void main() int x=2;PRINT( FU(5)* x );20(A)12(B)14(B)运行时出错
27、(D)输出值为11(C)13(D)15下列程序运行的结果是(21)# include void main() int a10=9,8,7,654,32L0,*p=a+4;printf(n%d,*+p);printf(“d”,+*p);)21(A)4,3(B)4,6(C)5,5(D)4,57.关于对类要领的描述中,错误的是(22)。22(A)类就是C语言中的结构类型(B)类是创建对象的样板(C)类是具有共同行为的若干对象的统一描述体(D)类是抽象数据类型的实现8.已知inta=9,b=4;将a-b的值输出显示到屏幕上,下列各种实现方法中,正确的是(23).23(A) couta-bendl(C)
28、 couta-bendl9.下列循环语句会进入死循环的是(B) cout,a-b,endl(D) coutn%dnM,a-b24)o24(A) i=0;do i+;while(i=100);(C) for(i=0;i+=2);10.下面程序运行的结果是(25)。# include int fun(char *str)(int n=0;while(*str=,0,&*str=91) n=n*10+*str-*r; str+; return n;void main() printf(1,%dnfun(,567.89H);25(A)89(B)567.89(B) for(i=0;i100;i+=3.1
29、4);(D) k=l;do k;while(k);(C)567(D)456二、读程序回答问题(每个选择3分,共45分)。1.有下列程序:# include void main() int a,b,c,x;a=b=c=O;for(int i=0;i10;i+) cinx;switch(x%3) case 0: a+=x; break;case 1: b+=x; break;case 2: c+=x; break;couta,bVcendl;)程序运行时依次输入x的值为:12程序运行的结果是(26)。26(A)3,12,21(C)3,4,3swilch(x%3)与(27)相同。27(A) swit
30、ch(!(x%3)!=0)(C) switch(x%3!=0)2.有下列程序:# include void main()(char *str= MOneH,HTwoM,HThree,;Fourw;char =str;int i;for(i=0;i3;i+)为程序中空白处选择填空(28)o28(A)*ptr(B)*ptr运行结果是(29)o29(A) newohree(B) Two出3.读下列程序,回答问题。# include void main(void)345678910(B)18,22,15(D)9,10,8(B) switch(x%3=0)(D)他们都不相同(C) ptrU(C) Two
31、ThreeFour(D)&ptr(D)指针运行非法,无输int m,n;double x,y;int divide(int m,int n);double divide(int m,double y);double divide(double x,double y);coutnEnter two integer and two real number:,; cinmnxy;LI :coutdivide(m,n)endl;L2:coutdivide(n,x)endl;L3:coutdi vede( x ,y)endl;)int divide(int m,int n) return m/n;dou
32、ble divide(int m,double y) return m/(int)y;double divide(double x,double y) return x/y;输入数据727.02.0,语句LI输出结果是30(A)0(B)1(C)3(30)o(D)3.5输入数据727.02.0,语句L2输出结果是31(A)0(B)1(C)3(31)o(D)3.5输入数据727.02.0,语句L3输出结果是32(A)0(B)1(C)34.# include void main()(unsigned int a=0112,x,y,z;x=a3;y=-(-04);z=x&y;printf(M%o %o
33、 %onM,x,y,z);printf(1,%xn,!(x&y&z);)该程序中执行第一个printf函数后,输出为(33(32)o(D)3.533(A)1117 II(B)171117(C)1117该程序中执行第二个printf函数后,输出为(3434(A)171(B)0112(C)15.以下程序运行的结果为(35)# include void swap 1(int a,int b) int temp;temp=a; a=b; b=temp;void swap2(int &a,int &b) int temp;temp=a; a=b; b=temp;void main() int i=3,
34、j=5;swapl(i,j);printf(H%d %dn,i,j);swap2(i,j);printf(H%d %dn,i,j);)35(A)35(B)53(C)5335533517(D)171711(D)0(D)35536.读下列递归程序,回答问题。# include void fun(char *strp) char *t;if(*strp) t=strp; t+; fun(t); putchar(*strp);!void main() int i,a10=0,1,2,3,4,5,6,7,8,9);char strl 1;fbr(i=O;i;stri=(y;fun(str);程序中的fu
35、n函数被调用(36)次。36(A)9(B)10(C)ll(D)12程序的输出结果为(37).37(A)0123456789(B)9876543210(001234(D)9876556789432107.读下列C程序,若输入字符串Examination ,请选择正确的输出结果。# include void main() char str20J;int i=0;static int count2=0;gets(str);doswitch(stri+J)(case a: case A1:case *e: case E:case T: case T:case o: case O:case *u: ca
36、se U: count0+;/* break;*/default: countl+;)IwhileCstrli!);printf(Hcount0=%d,count1=%dn,count0,count1);程序的输出结果为(38)o38(A) count0=6,count1=11(B) count0=6,count1=12(C) count0=5,count1=11(D) count0=5,count1=12若将程序中注释语句的注释标记去掉,则程序的输出结果为(39)。39(A) count0=6,count1=11(B) count0=6,count1=5(C) count0=5,countf
37、 1=11(D) count0=6,count1=68.下面程序输出的结果为(40)# include int a=5;void main() int a=3;a+;couta:a;程序中的fun函数被调用(36)次。40(A)54(B)45(C)53(D)44注意:请把下面“程序填空”中各小题答案写在主观题答题纸上每一个空只填一个语句或一个语句所缺的部分内容三、程序填空(每空2分,共30分)1 .下列程序实现将一个整数字符串转换为一个整数。# include # include int Fun(char *str) int num,digital,len;len=strlen(str);wh
38、ile(*str!=NULL)(digital=*str-,O;for(int i=0;i+)digital *=10;len;num+=digital;) return num;void main() char n80;int number;gets(n);number=Fun(n);printf(dn”,number);)# .寻找并输出ll999之间的数m,它满足m, m2, n?均为回文数(所谓回文数是指其各位数字左右对称的整数)。# include void main() int symm(long n);long m;for(m=11;m1000;m+) if()cout,m=,m
39、m*m=,m*m,m*m*m=,m*m*mendl;) int symm(long n) long i,m;i=n; m=0;while(); i=i/10;) return (m=n);# .已知head指向一个单向链表,如下图: headI . data -. data - data A主程序中调用add函数能求出链表中所有结点数据域的和sum并返回。 struct link int data;struct link *next; int add(struct link *heak) struct link *p;int s=0;p=;while(p) s+=;p=; return (s); void main() struct link *head;/*表示省掉的程序段,创建链表*/sum=add(head);printf(%dn,sum);4 .下面程序功能是统计文本data.txt中各种大写字母的个数,将统计结果存放在数组count中,(字母A的个数存入count中,字母B的个数存入count1依此类推),输出统计结果,一行输出5个。请填空。# include # include void main()