1994年4月-2010年9月全国计算机等级考试二级c语言真题(含答案)(1)
全国计算机等级考试二级笔试试题基础知识与C语言程序设计(考试时间120分钟,满分100分)1994年4月一、选择题(1-30每小题1分,31-45每小题2分,共60分)下列各题A),B),C),D)四个选项,只有一个选项是正确的,请将正确的选项在答题卡相应位置上涂黑。答在试卷上不得分。(1)二进制数101110转换为等值的八进制数是【1】。【1】A)45B)56C)67D)78(2)CPU是由【2】组成的。【】【2】A)内存储器和控制器B)控制器和运算器C)内存储器和运算器D)内存储器、控制器和运算器(3)DOS是为IBMPC系列微型计算机及其兼容机所配置的【3】磁盘操作系统。【3】A) 多用户多任务B)单用户单任务C)分时D)分布式(4)启动MS-DOS操作系统后,【4】已驻留内存。【4】A)COMMAND.COMB)DISKCOPY.COMC)FORMAT.COMD)CCCC.EXE(5)设驱动器B中软盘上的目录结构如下图所示。B:根目录F22子目录F1子目录F2子目录F3子目录F21子目录F11子目录FA.TXTFB.BASFC.TXT设当前目录为F2,则把A盘根目录下的PROG.BAS文件复制到B盘F3子目录中的命令是 【5】。【5】A)COPYPROG.BASB:B)COPYA:PROG.BASB:C)COPYA:PROG.BASB:F3D)COPYA:PROG.BASB:F3(6)下面四组DOS命令中,意义完全相同的一组是【6】。【6】A)COPY和DISKCOPYB)COMP和DISKCOMPC)DEL和RDD)RENAME和REN(7)防止软盘感染病毒的有效方法是【7】。【7】A)不要把软盘和有毒软盘放在一起B)在写保护缺口上贴上胶条C)保持机房清洁D)定期对软盘格式化(8)双面高密度5英寸软磁盘的容量是 【8】。【8】A)360KBB)720KBC)1.2MBD)1.44MB(9)在FOXBASE中,可以使用的两类变量是 【9】。【9】A)内存变量和字段变量B)全局变量和局部变量C)字段变量和简单变量D)内存变量和自动变量(10)建立一个新子目录的DOS命令是【10】。【10】A)CREATEB)RDC)MDD)CD(11)在C语言中,如果下面的变量都是int类型,则输出的结果是【11】。sum=pad=5;pAd=sum++,pAd++,++pAd;printf("%dn",pad);【11】A)7B)6C)5D)4(12)以下程序的输出结果是【12】。n#include
main(){inti=010,j=10;printf("%d,%dn",++i,j--);}【12】A)11,10B)9,10C)010,9D)10,9(1)已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是【13】。#includemain(){charc1='A',c2='Y';printf("%d,%dn",c1,c2);}【13】A)因输出格式不合法,输出错误信息B)65,90C)A,YD)65,89(2)指针s所指字符串的长度为【14】。char*s="\"Name\Addressn";【14】A)19B)15C)18D)说明不合法(3)设有说明int(*ptr)[m];其中的标识符ptr是【15】。【15】A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量(4)语句while(!E);中的条件!E等价于 【16】。【16】A)E==0B)E!=1C)E!=0D)~E(5)以下程序的输出结果是 【17】 。#includemain(){printf("%dn",NULL);}【17】A)不确定的(因变量无定义)B)0C)-1D)1(6)以下函数调用语句中含有【18】个实参。func((exp1,exp2),(exp3,exp4,exp5));【18】A)1B)2C)4D)5(7)设有以下语句:chara=3,b=6,c;c=a^b<<2;则c的二进制值是【19】。【19】A)00011011B)00010100C)00011100D)00011000(8)下面的程序中【20】有错误(每行程序前面的数字是行号)。1#include2main()3{4floata[3]={0,0};5inti;6for(i=0;i<3;i++)scanf("%d",&a[i]);7for(i=1;i<3;i++)a[0]=a[0]+a[i];8printf("%fn",a[0]);9}【20】A)没有B)第4行C)第6行D)第8行(9)设有语句inta=3;则执行了语句a+=a-=a*a;后,变量a的值是 【21】。【21】A)3B)0C)9D)-12(10)以下的for循环【22】。for(x=0,y=0;(y!=123)&&(x<4);x++);n【22】A)是无限循环B)循环次数不定C)执行4次D)执行3次(1)设有语句chara='72';则变量a【23】 。【23】A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法(2)以下程序的输出结果是 【24】。#include#includemain(){inta=1,b=4,c=2;floatx=10..5,y=4.0,z;z=(a+b)/c+sqrt((double)y)*1.2/c+x;pritnf("%fn",z);}【24】A)14.000000B)015.400000C)13.700000D)14.900000(3)sizeof(double)是 【25】。【25】A)一种函数调用B)一个双精度型表达式C)一个整型表达式D)一个不合法的表达式(4)C语言中 【26】。【26】A)不能使用do-while语句构成的循环B)do-while语句构成的循环必须用break语句才能退出C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环(5)以下程序的输出结果是【27】。#include#includemain(){charstr[12]={'s','t','r','i','n','g'};printf("%dn",strlen(str));}【27】A)6B)7C)11D)12(6)以下程序的输出结果是 【28】。#includemain(){inta=2,c=5;printf("a=%%d,b=%%dn",a,c);}【28】A)a=%2,b=%5B)a=2,b=5C)a=%%d,b=%%dD)a=%d,b=%d(7)以下程序的输出结果是 【29】。#includemain(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%dn",a,b);}【29】A)6,1B)2,1C)6,0D)2,0(8)以下程序的输出结果是 【30】。#includemain(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$n");}【30】A)*#*#*#$B)#*#*#*$C)*#*#$D)#*#*$(9)以下for语句构成的循环执行了【31】次。n#include#defineN2#defineMN+1#defineNUM(M+1)*M/2main(){inti,n=0;for(i=1;i<=NUM;i++);{n++;printf("%d",n);}printf("n");}【31】A)5B)6C)8D)9(1)设有以下语句,则 【32】 不是对a数组元素的正确引用,其中0≤i<10。inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;【32】A)a[p-a]B)*(&a[i])C)p[i]D)*(*(a+i))(2)有以下程序:#include#defineN6main(){charc[N];inti=0;for(;i代表一个回车符:abcdef程序的输出结果是【33】。【33】A)abcdefB)aC)aD)abbbccdcdefdef(3)以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。#includefindmax(s,t,k)int*s,t,*k;{intp;for(p=0,*k=p;ps[*k])_________;}main(){inta[10],i,k;for(i=0;i<10;i++)scanf("%d",&a[i]);findmax(a,10,&k);printf("%d,%dn",k,a[k]);}【34】A)k=pB)*k=p-sC)k=p-sD)*k=p(4)有以下程序:#includeunionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%dn",a.i);}程序的输出结果是 【35】。(注意:ch[0]在低字节,ch[1]在高字节。)【35】A)13B)14C)208D)209(5)有以下程序:n#includemain(){intc;while((c=getchar())!='n'){switch(c-'2'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+2);break;}}printf("n");}从第一列开始输入以下数据,代表一个回车符。2743程序的输出结果是 【36】 。【36】A)668977B)668966C)6677877D)6688766(1)以下程序的输出结果为 【37】。main(){char*alpha[6]={"ABCD","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i=0;i<4;i++)printf("%s",p[i]);printf("n");}【37】A)ABCDEFGHIJKLB)ABCDC)ABCDEFGHIJKLMNOPD)AEIM(2)以下程序的输出结果是 【38】。#include#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('n')main(){intx=2;PRINT1(FUDGE(5)*x);}【38】A)11B)12C)13D)15(3)以下程序的输出结果是【39】。#includemain(){inti=1,j=3;printf("%d",i++);{inti=0;i+=j*2;printf("%d,%d",i,j);}printf("%d,%dn",i,j);}【39】A)1,6,3,1,3B)1,6,3,2,3C)1,6,3,6,3D)1,7,3,2,3(4)以下程序的输出结果是 【40】。#includemain(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%dn",p);}func(a,b)inta,b;{staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}【40】A)8,17B)8,16C)8,20D)8,8(5)设有以下语句:charstr[4][12]={"aaa","bbbb","ccccc","dddddd"},*strp[4];inti;nfor(i=0;i<4;i++)strp[i]=str[i]; 【41】 不是对字符串的正确引用,其中0≤k<4。【41】A)strpB)str[k]C)strp[k]D)*strp(1)设有以下语句:charstr1[]="string",str2[8],*str3,*str4="string";则 【42】不是对库函数strcpy的正确调用,此库函数用业复制字符串。【42】A)strcpy(str1,"HELLO1");B)strcpy(str2,"HELLO2");C)strcpy(str3,"HELLO3");D)strcpy(str4,"HELLO4");(2)C语言中形参的缺省存储类别是 【43】 。【43】A)自动(auto)B)静态(static)C)寄存器(register)D)外部(extern)(3)设有以下语句:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,' '},*p;p=&a[0];则表达式 【44】的值是6。【44】A)p++->nB)p->n++C)(*p).n++D)++p->n(4)以下四个程序中, 【45】不能对两个整型变量的值进行交换。【45】A)#includemain(){inta=10,b=20;swap(&a,&b);printf("%d%dn",a,b);}swap(p,q)int*p,*q;{int*t;t=(int)malloc(sizeof(int));t=p;*p=*q;*q=*t;}B)#includemain(){inta=10,b=20;swap(&a,&b);printf("%d%dn",a,b);}swap(p,q)intp,q;{int*t;t=*p;*p=*q;*q=t;}C)#includemain(){int*a,*b;*a=10,*b=20;swap(a,b);printf("%d%dn",*a,*b);}swap(p,q)nint*p,*q;{intt;t=*p;*p=*q;*q=t;}D)#includemain(){inta=10,b=20;intx=&a,y=&b;swap(x,y);printf("%d%dn",a,b);}swap(p,q)int*p,*q;{intt;t=*p;*p=*q;*q=t;}二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡1-20序号后的横线上,答在试卷上不得分。(1)结构化程序设计所规定的三种基本控制结构是【1】结构.选择结构和循环结构。(2)在七位ASCII码中,除了表示数字、英文大小写字母外,还有【2】个其它符号。(3)把B盘BAS子目录下第三个字符为A,且没有扩展名的全部文件拷贝到C盘ABC子目录下的命令是【3】。(4)微机中ROM的中文意义是【4】存储器。(5)启动MS-DOS系统后,能自动执行的批处理文件是【5】.BAT。(6)设当前盘为C盘,删除B盘FOX子目录中扩展名为.TXT的所有文件的命令是【6】。(7)十进制数53转换为十六进制数为【7】。(8)数据库管理系统常见的数据模型有层次、网状和【8】三种。(9)买来一张新盘后,在存入文件前,必须进行【9】处理。(10)在微机中,字符的比较就是对它们的【10】码进行比较。(11)以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。#includemain(argc,argv)intargc;char*argv[];{FILE*f1,*f2;charch;if(argc<【11】){printf("Parametersmissing!n");exit(0);}if(((f1=fopen(argv[1],"r"))==NULL)||((f2=fopen(argv[2],"w"))==NULL)){printf("Cannotopenfile!n");exit(0);}while(【12】)fputc(fgetc(f1),f2);fclose(f1);fclose(f2);}(12)以下程序中的trap函数是一个用梯形法求定积分的通用函数。梯形法求定积分的公式为:nn-1a-bs=((f(a)+f(b))/2+∑f(a+i*h))*h,h=|----|i=1n其中,n为积分小区间数。以下程序调用trap函数求定积分,被积函数是:f(x)=x*x+3*x+2,且n=1000,a=0,b=4。#include3includedoubletrap(fun,a,b)double(*fun)(),a,b;{doublet,h;inti,n=1000;t=0.5*((*fun)(a)+(*fun)(b));h=fabs(a-b)/(double)(n);for(i=1;i<=n-1;i++)t=t+【13】;t=t*h;return(t);}doublemypoly(x)doublex;{return(x*x+3.0*x+2.0);}main(){doubley,(*pf)();pf=【14】;y=trap(pf,0.0,4.0);printf("%fn",y);}(1)以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。#includemain(){inti,a[10],*p=a,sum=0;printf("Enter10num:n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)if(isprime(*(p+【15】))==1){printf("%d",*(a+i));sum+=*(a+i);}printf("nThesum=%dn",sum);}isprime(x)intx;{inti;for(i=2;i<=x/2;i++)if(x%i==0)return(0);【16】;}(2)以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。#include#defineN10invert(s,i,j)int*s,i,j;{intt;if(inext==NULL).#includestructlist{intdata;structlist*next;};【19】creatlist()n{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));p=q=ph;printf("Inputanintegernumber,enter–1toend:n");scanf("%d",&a):while(a!=-1){p=(structlist*)malloc(sizeof(structlist));p->data=a;q->next=p;【20】=p;scanf("%d",&a);}p->next=' ';return(ph);}main(){structlist*head;head=creatlist();}[完]1994年全国计算机等级考试二级笔试C语言参考答案选择题([1]——[30]每个选项1分,[31]——[45]每个选项2分,共60分)(1)B(2)B(3)B(4)A(5)C(6)D(7)B(8)C(9)A(10)C(11)C(12)B(13)D(14)B(15)C(16)A(17)B(18)B(19)A(20)C(21)D(22)C(23)A(24)C(25)C(26)D(27)A(28)D(29)B(30)A(31)C(32)D(33)C(34)D(35)A(36)A(37)C(38)B(39)B(40)A(41)A(42)C(43)A(44)D(45)C二`填空题(每空2分,共40分)(1)顺序(2)66(3)COPYB:BAS??A*.C:ABC(或COPYB:BAS??A*.,C:ABC)(4)只读(5)AUTOEXEC(6)DELB:FOX*.TXT(7)35(8)关系(9)格式化(或初始化、FORMAT)(10)ASCII(11)3(12)!feof(f1)或feof(f1)==0(13)(*fun)(a+i*h)(14)mypoly(15)I(16)return1或return(1)(17)i+1(18)I(19)structlist*(20)qn全国计算机等级考试二级笔试卷基础知识和C语言程序设计(考试时间120分钟,满分100分)1995年9月一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)(1)第一台电子数字计算机ENIAC诞生于A)1927年B)1936年C)1946年D)1951年(2)(2)用FORTRAN语言编制的源程序要变为目标程序,必须经过A)汇编B)解释C)编辑D)编译(3)(3)计算机软件一般包括系统软件和A)字处理软件B)应用软件C)管理软件D)科学计算机软件(4)(4)计算机内使用的数是A)二进制数B)八进制数C)十进制数D)十六进制数(5)(5)目前微型机常用的5.25寸双面高密度软盘的容量是A)360KBB)1.44MBC)760KBD)1.2MB(6)(6)具有多媒体功能的微机系统常用CD-ROM作为外存储器,它是A)只读内存储器B)只读大容量软盘C)只读硬盘D)只读光盘说明:(7)(7)到(17)题给定的条件如下:微机系统有A和B两个容量相同的软盘驱动器,硬盘C的目录结构为C:根目录AUTOEXEC.BATCOMMAND.COMDOSDISKCOPY.COMFORMAT.COMABC.TXTXY.TXTF4XD2.EXEXD1.EXEJD2.FORJD1.FOR文件AUTOEXEC.BAT的内容为PROMPT$P$GCDF4CDDOSn(1)(7)微机系统用硬盘C启动后,当前系统提示符是A)C:>B)C:DOS>C)C:F4>D)C>(2)(8)在用C盘启动后,把A盘格式化成系统盘的命令为A)FORMATA:B)FORMATA:/SC)DOSFORMATA:/SD)DOSFORMATA:S(3)(9)设当前盘为C盘,C盘当前目录为DOS。把JD1.FOR和JD2.FOR连接起来后存入A盘根目录下,命名为JD3.FOR,应使用命令A)COPYJD1.FOR+JD2.FORA:JD3.FORB)COPYF4JD1.FOR+JD2.FORA:JD3.FORC)COPYF4JD1.FOR+F4JD2.FORA:JD3.FORD)COPYF4JD1.FOR+F4JD2.FORJD3.FOR(4)(10)设当前盘为C盘,C盘当前目录为DOS。把FORMAT.COM和DISKCOPY.COM两个命令文件复制到A盘上的命令为A)COPYDOS*.*A:B)COPY*.COMA:C)COPYDOS*.*A:D)COPYDOS*.COMA:(5)(11)列出硬盘C上所有扩展名为.FOR文件的命令是A)DIR*.FORB)DIRC:F4*.FORC)DIRC:*.FORD)DIRC:F4*.*(6)(12)把A盘的所有信息复制到B盘上的命令为A)COPYA:*.*B:B)COPYA:*.*B:*.*C)C:DOSDISKCOPYA:B:D)C:DOSDISKCOPYB:A:(7)(13)设当前盘为C盘。删除硬盘C上的两个扩展名为.EXE文件的命令是A)DELF4*.EXEB)DELXD?.EXEC)DELF4*.*D)DEL*.EXE(8)(14)设当前盘为C盘。C盘当前目录为DOS。在硬盘C的根目录下建立新子目录USER的命令为A)MDC:USERB)MDUSERC)MDUSERD)MDUSER(9)(15)设当前盘为C盘,C盘当前目录为根目录。在硬盘C上删除子目录F4的命令或命令组为A)RDF4B)RDF4C)DELF4*.*D)DEL*.*RDF4RDF4(10)(16)设当前盘为C盘,C盘当前目录为根目录。把JD1.FOR改名为JX1.FOR的命令为A)RENJD1.FORJX1.FORB)RENJX1.FORJD1.FORC)RENF4JD1.FORJX1.FORD)RENF4JX1.FORJD1.FOR(11)(17)显示C盘根目录下所有.TXT文件内容的命令为A)TYPEC:*.TXTB)TYPEC:*.TXT>CONC)COPYC:*.TXT>COND)COPYC:*.TXTCON(12)(18)按照数据模型分类,FoxBASE和dBASE是属于A)层次型B)网状型C)关系型D)混合型(13)(19)FoxBASE和dBASE命令文件的扩展名为A).PRGB).DBFC).MEMD).TXT(14)(20)“计算机等级考试”这七个汉字作为字符串常量,在FoxBASE和dBASE中,可以表示为A){计算机等级考试}B)(计算机等级考试)C)计算机等级考试D)“计算机等级考试”(15)(21)请选出可用作C语言用户标识符的一组标识符A)voidB)a3_b3C)ForD)2adefine_123-abcDOnWORDIFCasesizeof(1)(22)设inta=12,则执行完语句a+=a-=a*a后,a的值是A)552B)264C)144D)-264(2)(23)C语言程序的基本单位是A)程序行B)语句C)函数D)字符(3)(24)请选出合法的C语言赋值语句A)a=b=58B)i++;C)a=58,b=58D)k=int(a+b);(4)(25)执行下面程序片段的结果是intx=23;do{printf("%2d",x--);}while(!x);A)打印出321B)打印出23C)不打印任何内容D)陷入死循环(5)(26)请选出以下语句的输出结果printf("%dn",strlen("t" 65xffn"));A)5B)14C)8D)输出项不合法,无正常输出(6)(27)设有如下的函数ggg(x)floatx;{printf("n%d",x*x);}则函数的类型A)与参数x的类型相同B)是voidC)是intD)无法确定(7)(28)设有如下枚举类型定义:enumlanguage{Basic=3,Assembly,Ada=100,COBOL,Fortran};枚举量Fortran的值为A)4B)7C)102D)103(8)(29)若有以下说明和语句,请选出哪个是对c数组元素的正确引用intc[4][5],(*cp)[5];cp=c;A)cp+1B)*(cp+3)C)*(cp+1)+3D)*(*cp+2)(9)(30)标准函数fgets(s,n,f)的功能是A)从文件f中读取长度为n的字符串存入指针s所指的内存B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C)从文件f中读取n个字符串存入指针s所指的内存D)从文件f中读取长度为n-1的字符串存入指针s所指的内存(10)(31)设有如下一段程序:int*var,ab;ab=100var=&ab;ab=*var+10;执行上面的程序后,ab的值为nA)120B)110C)100D)90(1)(32)以下程序段给数组所有的元素输入数据,请选择正确答案填入。#includemain(){inta[10],i=0;while(i<10)scanf("%d",________);┇}A)a+(i++)B)&a[i+1]C)a+iD)&a[++i](2)(33)设有如下的程序段:charstr[]="Hello";char*ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为A)'o'B)' 'C)不确定的值D)'o'的地址(3)(34)在宏定义#definePI3.14159中,用宏名PI代替一个A)单精度数B)双精度数C)常量D)字符串(4)(35)字符(char)型数据在微机内存中的存储形式是A)反码B)补码C)EBCDIC码D)ASCII码(5)(36)执行下面的程序段intx=35;charz='A';intb;B=((x&15)&&(z<'a'));后,B的值为A)0B)1C)2D)3(6)(37)C语言规定,程序中各函数之间A)既允许直接递归调用也允许间接递归调用B)不允许直接递归调用也不允许间接递归调用C)允许直接递归调用不允许间接递归调用D)不允许直接递归调用允许间接递归调用(7)(38)假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式的表达式是A)1/a*b*cB)1/(a*b*c)C)1/a/b/(float)cD)1.0/a/b/c(8)(39)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是A)pb=&xB)pb=x;C)*pb=&x;D)*pb=*x(9)(40)设有staticcharstr[]="Beijing";则执行printf("%dn",strlen(strcpy(str,"China")));后的输出结果为nA)5B)7C)12D)14(1)(41)设有如下程序:#includemain(){int**k,*j,i=100;j=&i;k=&j;printf("%dn",**k);}上面程序的输出结果是A)运行错误B)100C)i的地址D)j的地址(2)(42)设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d)后n的值为A)1B)2C)3D)4(3)(43)下面函数的功能是sss(s,t)char*s,*t;{while((*s)&&(*t)&&(*t++==*s++));return(*s-*t);}A)求字符串的长度B)比较两个字符串的大小C)将字符串s复制到字符串t中D)将字符串s接续到字符串t中(4)(44)请选出以下程序的输出结果#includesub(x,y,z)intx,y,*z;{*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%dn",a,b,c);}A)5,2,3B)-5,-12,-7C)-5,-12,-17D)5,-2,-7(5)(45)下面程序的输出结果是#includemain(){inti=2,p;p=f(i,i+1);printf("%d",p);n}intf(a,b)inta,b;{intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}A)-1B)0C)1D)2(1)(46)请选出以下程序段的输出结果#include#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf("%dn",k);}A)15B)100C)10D)150(2)(47)请选出以下程序段的输出结果#includemain(){charsl[10],s2[10],s3[10],s4[10];scanf("%s%s",s1,s2);gets(s3);gets(s4);puts(s1);puts(s2);puts(s3);puts(s4);}输入数据如下:(此处代表回车符)aaaabbbbccccddddA)aaaaB)aaaaC)aaaaD)aaaabbbbbbbbbbbbbbbbccccccccccccddddddddccccddddddddeeee(3)(48)请选出以下程序的输出结果#includefun(s,n1,n2)nint*s,n1,n2;{inti,j,t;i=n1;j=n2;while(imain(){inta[]={1,2,3,4},i;intx=0;for(i=0;i<4;i++){sub(a,x);printf("%d",x);}printf("n");}sub(s,y)int*s,y;{staticintt=3;y=s[t];t--;}A)1234B)4321C)0000D)4444(2)(50)下面程序的输出结果为structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[1],n70,&dt[2],80,&dt[3]};main(){p=aa;printf("%dn",++p->x);printf("%dn",(++p)->x);printf("%dn",++(*p->y));}A)10B)50C)51D)602060607020212131二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡上【1】-【20】序号的横线上,答在试卷上不得分。(1)(1)十进制数123用八位二进制表示为【1】。(2)(2)70年代末开始出现16位微处理器,标志着微型计算机进入了第三代;80年代起使用【2】位微处理器,标志微型计算机进入了第四代。(3)(3)通用计算机操作系统的功能和任务是:作业管理、文件管理、外设管理、CPU管理和【3】管理。(4)(4)PC-DOS的两个隐含文件是:IBMBIO.COM(输入输出程序)与【4】(磁盘操作管理程序)。(5)(5)FoxBASE和dBASE有两种变量:即内存变量和【5】变量。(6)(6)设有如下程序段:inti=0,sum=1;do{sum+=i++;}while(i<6);printf("%dn",sum);上述程序段的输出结果是【6】。(7)(7)阅读下列程序:#includemain(){inti,j,row,column,m;staticintarray[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};m=array[0][0];for(i=0;i<3;i++)for(j=0;j<3;i++)nif(array[i][j]main(){inta=3,b=2,c=1;c-=++b;b*=a+c;{intb=5,c=12;c/=b*2;a-=c;printf('%d,%d,%d,",a,b,c);a+=--c;}printf('%d,%d,%d,",a,b,c);}(3)(10)设有如下程序:#includemain(argc,argv)intargc;char*argv[];{while(--argc>0)printf("%s",argv[argc]);printf("n");}假定上述程序经编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入PROGABCDEFGHIJKL,则输出结果为【10】。(4)(11)阅读下列程序:#include#defineMAX_COUNT4voidfun();main(){intcount;nfor(count=1;count<=MAX_COUNT;count++)fun();}voidfun(){staticinti;i+=2;printf("%d",i);}上述程序的输出结果是【11】。(1)(12)设有下列程序:#include#includemain(){inti;charstr[10],temp[10];gets(temp);for(i=0;i<4;i++){gets(str);if(strcmp(temp,str)<0)strcpy(temp,str);}printf("%sn",temp);}上述程序运行后,如果从键盘上输入(在此代表回车符):C++BASICQuickCAdaPascal则程序的输出结果是【12】。(2)(13)设有如下程序:#includemain(argc,argv)intargc;char*argv[];{FILE*fp;voidfc();inti=1;while(--argc>0)if((fp=fopen(argv[i++],"r"))==NULL){printf("Cannotopenfile!n");nexit(1);}else{fc(fp);fclose(fp);}}voidfc(ifp)FILE*ifp;{charc;while((c=getc(ifp))!='#')putchar(c-32);}上述程序经编译、连接后生成可执行文件名为cpy.exe。假定磁盘上有三个文本文件,其文件名和内容分别为:文件名内容aaaaa#bbbbb#ccccc#如果在DOS下键入cpyabc则程序输出【13】。(1)(14)若输入3个整数3,2,1,则下面程序的输出结果是【14】。#includevoidsub(n,uu)intn,uu[];{intt;t=uu[n--];t+=3*uu[n];n=n++;if(t>=10){uu[n++]=t/10;uu[n]=t%10;}elseuu[n]=t;}main(){inti,n,aa[10]={0,0,0,0,0,0}scanf("%d%d%d",&n,&aa[0],&aa[1]);for(i=1;i#includemain(){intnum[26],i;charc;for(i=0;i<26;i++)num[i]=0;while(【17】!='#')/*统计从终端输入的大写字母个数*/if(isupper(c))num[c-65]+=1;for(i=0;i<26;i++)/*输出大写字母和该字母的个数*/if(num[i])printf("%c:%dn,i【18】,num[i]);}(3)(17)下面的程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,调用outone函数输出此动态存储单元中的数据。请填空。#includegetone(s)int**s;{*s=(int*)malloc(sizeof(int));}assone(a)int*a;{scanf("%d",【19】);}outone(b)int*b;printf("%dn",【20】);}main(){int*p;getone(&p);assone(p);outone(p);}『完』n1995年二级C笔试试卷参考答案一`选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)(1)C(2)D(3)B(4)A(5)D(6)D(7)B(8)C(9)C(10)A(11)B(12)C(13)A(14)C(15)C(16)C(17)D(18)C(19)A(20)D(21)B(22)D(23)C(24)B(25)B(26)A(27)C(28)C(29)D(30)B(31)B(32)A(33)B(34)D(35)D(36)B(37)A(38)D(39)A(40)A(41)B(42)B(43)B(44)B(45)A(46)A(47)A(48)C(49)C(50)C二`填空题(每空2分,共40分)(1)01111011(2)32(3)内存或存储器或存储(4)IBMDOS.COM允许用小写字母(5)字段或字段名(6)16(7)-850,2,0若遗漏逗号扣1分(8)28(9)2,5,1,2,3,-2若遗漏逗号扣1分(10)IJKLEFGHABCD若在字符间嵌入空格扣1分若在字符间嵌入空格扣1分(12)QuickC若大写字母写成小写字母,或小写字母写成大写字母扣1分(13)AAAABBBBCCCC若在字符间嵌入空格扣1分若用小写字母扣1分(14)2721或2721(15)9(16)0(17)(c=getchar())注意,外层括号不得遗漏(18)+65或+'A'(19)a或&*a(20)*bn全国计算机等级考试二级笔试卷基础知识和C语言程序设计(考试时间120分钟,满分100分)1996年4月6日一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)(1)一个完整的计算机系统包括A)主机、键盘与显示器B)计算机与外部设备C)硬件系统与软件系统D)系统软件与应用软件(2)(2)十六进制数1000转换成十进制数是A)4096B)1024C)2048D)8192(3)(3)十进制数269转换成十六进制数是A)10EB)10DC)10CD)10B(4)(4)如果用八位二进制补码表示带符号的定点整数,则能表示的十进制数的范围是A)-127到+127B)-128到+128C)-127到+128D)-128到+127(5)(5)下列设备中,既可作为输入设备又可作为输出设备的是A)鼠标器B)打印机C)键盘D)磁盘驱动器(6)(6)下列各叙述中,正确的是A)正数十进制原码的补码是原码本身B)所有的十进制小数都能准确地转换为有限位二进制小数C)汉字的计算机内码就是国标码D)存储器具有记忆能力,其中的信息任何时候都不会丢失(7)(7)在下列操作中,能导致DOS系统重新启动但不进行系统自检的是A)加电开机B)按+C)按++D)按RESET按钮(8)(8)如果给定一个带有通配符的文件名F*.?,则在下列各文件中,它能代表的文件名是A)FA.EXEB)F.CC)EF.CD)FABC.COM(9)(9)DOS系统启动后,下列文件中常驻内存的是A)*.COMB)FORMAT.COMC)AUTOEXEC.BATD)COMMAND.COM(10)(10)设A盘的目录结构为(画方框的为目录)D1D2ABCA.FORDX.CQ.DAT根目录B.PASY.BASA.CD3A1.CD4XYZ.CQR.CNA.CA.TXTB.Cn如果当前盘为C盘,A盘的当前目录为D2,则下列对A盘上文件QR.C的指定中,合法的是A)D2D4QR.CB)D4QR.CC)A:D4QR.CD)A:D2D4QR.C(1)(11)为了要将A盘当前目录(不是根目录)中所有扩展名为.C的文件同名复制到A盘的目录USER中,正确的命令是A)COPYA:*.CUSER*.CB)COPYA:*.CA:USERC)COPYA:*.CA:USERD)COPYA:*.CA:USER*.C(2)(12)为了在屏幕上一次显示当前盘当前目录下的所有扩展名为.TXT的文件内容,下列命令中正确的是A)TYPE*.TXTB)TYPE*.TXTCONC)COPY*.TXT>COND)COPY*.TXTCON(3)(13)设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C盘根目录下的文件XYZ.TXT的后面,正确的命令是A)COPYC:XYZ.TXT+AB1.TXTB)COPYAB1.TXT>>C:XYZ.TXTC)TYPEAB1.TXT>C:XYZ.TXTD)COPYAB1.TXT+C:XYZ.TXT>C:XYZ.TXT(4)(14)设A盘为启动盘,其目录结构为(画方框的为目录)COMMAND.COM根目录AUTOEXEC.BATDOSUSER其中文件AUTOEXEC.BAT的内容为MDXYZCDDOSUSER则由A盘启动成功后,A盘的当前目录是A)DOSUSERB)XYZC)D)DOS(5)(15)下列DOS命令中为内部命令的是A)COMPB)PATHC)PRINTD)FORMAT(6)(16)设当前盘为C盘,所用的所有软盘已格式化且容量相同,则下列DOS命令中错误的是A)DISKCOPYA:C:B)DISKCOPYA:A:C)COPYA:*.*D)COPYA:*.*C:(7)(17)下列DOS命令中,有错误的是nA)TYPEAAB.FOR>PRNB)TYPE?AB.FORC)COPY*.CPRND)COPYCONPRN(1)(18)设当前盘为C盘,在当前目录下有全部的DOS系统文件与批处理命令文件AB.BAT,且该批处理命令文件的内容为FORMATA:/4MDXYZCDXYZRDXYZMDXYZ如果在1.2软盘驱动器A中插入一张360K容量的软盘片,执行批自理命令文件AB.BAT后,结果A盘的目录结构是A)根目录B)根目录----子目录XYZ----子目录XYZC)根目录─┬─子目录XYZ└─子目录XYZD)根目录----子目录XYZ(2)(19)下列带有通配符的文件名,能代表文件ABC.FOR的是A)*BC.?B)A?.*C)?BC.*D)?.?(3)(20)设当前盘为C盘,且C盘上含有子目录DOS,A盘为只有根目录的启动盘(根目录下只有三个DOS系统文件与扩展名为.C的文件)。下列命令组中的两个命令从效果上可以认为等价的是A)DELDOS与RDDOSB)FORMATA:与DELA:*.*C)FORMATA:/S与DELA:*.?D)COPYA:F1F2与RENA:F1F2(4)(21)设a、b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是A)'a'&&'b'B)a<=bC)a||b+c&&b-cD)!((a='A'&&ch<='Z')?(ch+32):ch上面表达式的值是A)AB)aC)ZD)z(7)(24)若x和y都是int型变量,x=100,y=200,且有下面的程序片段:printf("%d",(x,y));上面程序片段的输出结果是A)200B)100C)100200D)输出格式符不够,输出不确定的值(8)(25)下面各语句行中,能正确进行赋字符串操作的语句行是A)charst[4][5]={"ABCDE"};B)chars[5]={'A','B','C','D','E'};C)char*s;s="ABCDE";D)char*s;scanf("%s",s);(9)(26)若k是int型变量,且有下面的程序片段:k=-3nif(k<=0)printf("####")elseprintf("&&&&");上面程序片段的输出结果是A)####B)&&&&C)####&&&&D)有语法错误,无输出结果(1)(27)若x是int型变量,且有下面的程序片段:for(x=3;x<6;x++)printf((x%2)?("**%d"):("##%dn"),x);上面程序片段的输出结果是A)**3B)##3C)##3D)**3##4##4**4**4##5**5**5##5(2)(28)请读程序:#includef(char*s){char*p=s;while(*p!=' ')p++;return(p-s);}main(){printf("%dn",f("ABCDEF"));}上面程序的输出结果是A)3B)6C)8D)0(3)(29)请读程序:#includemain(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("na=%d,b=%f,c=%fn",a,b,c);}若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是A)a=98,b=765,c=4321B)a=10,b=432,c=8765C)a=98,b=765.000000,c=4321.000000D)a=98,b=765.0,c=4321.0(4)(30)请读程序:#includemain(){intn[2],i,j,k;for(i=0;i<2;i++)n[i]=0;k=2for(i=0;imain(){inta,b;for(a=1;b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf("%dn",a);}上面程序的输出结果是A)7B)8C)9D)10(3)(33)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元:int*p;p=__________malloc(sizeof(int));则应填入A)intB)inst*C)(*int)D)(int*)(4)(34)请读程序片段(字符串内没有空格):printf("%dn",strlen("ATSn0121\"));上面程序片段的输出结果是A)11B)10C)9D)8(5)(35)请读程序:#include#includemain()n{char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%dn",strcmp(s1,s2));}上面程序的输出结果是A)正数B)负数C)零D)不确定的值(1)(36)请读程序:#includefunc(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func(x--,y==,x+y),z--);printf("%dn",r);}上面程序的输出结果是A)11B)20C)21D)31(2)(37)请读程序:#includeinta[]={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p++;printf("%dn",a[2]);}上面程序的输出结果是A)6B)8C)4D)2(3)(38)请读程序:#includecharfun(char*c){if(*c<='Z'&&*c>='A')*c-='A'-'a';return*c;}main()n{chars[81],*p=s;gets(s);while(*p){*p=fun(p);putchar(*p);p++;}putchar('n');}若运行时从键盘上输入OPENTHEDOOR(表示回车),则上面程序的输出结果是A)oPENtHEdoorB)openthedoorC)OPENTHEDOORD)OpenTheDoor(1)(39)请读程序:#includevoidfun(int*s){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的输出结果是A)34756B)23445C)35743D)12345(2)(40)请读程序:#include#defineSUB(X,Y)(X)*Ymain(){inta=3,b=4;printf("%d",SUB(a++,b++));}上面程序的输出结果是A)12B)15C)16D)20(3)(41)请读程序:#includemain(){intmun=0;while(num<=2)n{num++;printf("%dn",num);}}上面程序的输出结果是A)1B)1C)1D)1222334(1)(42)请读程序:#includemain(){floatx,y;scan("%f",&x);if(x<0.0)y=0.0elseif((x<5.0)&&(x!=2.0))y=1.0/(x+2.0);elseif(x<10.0)y=1.0/x;elsey=10.0;printf("%fn",y);}若运行时从键盘上输入2.0(表示回车),则上面程序的输出结果是A)0.000000B)0.250000C)0.500000D)1.000000(2)(43)请读程序:#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%dn",a,b);}上面程序的输出结果是A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2n(1)(44)若有下面的程序片段:inta[12]={0},*p[3],**pp,i;for(i=0;i<3;i++)p[i]=&a[i*4];pp=p;则对数组元素的错误引用是A)pp[0][1]B)a[10]C)p[3][1]D)*(*(p+2)+2)(2)(45)请读程序:#include#includemain(){floatx,y,z;scan("%f%f",&x,&y);z=x/y;while(1){if(fabs(z)>1.0){x=y;y=z;z=x/y;}elsebreak}printf("%fn",y);}若运行时从键盘上输入3.62.4(表示回车),则输出的结果是A)1.500000B)1.600000C)2.000000D)2.400000(3)(46)请读程序:#includef(inb[],intn){inti,r;r=1;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intx,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%dn",x);}上面程序的输出结果是nA)720B)120C)24D)6(1)(47)请读程序:#include#includevoidfun(char*s){chara[10];strcpy(a,"STRING");s=a;}main(){char*p;fun(p);x=f(a,3);printf("%sn",p);}上面程序的输出结果是(└┘表示空格)A)STRING└┘└┘└┘└┘B)STRINGC)STRING└┘└┘└┘D)不确定的值(2)(48)若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是nFNULLEdatanextheadpGsA)s->next=NULL;p=p->next;p->next=s;B)p=p->next;s->next=p->next;p->next=s;C)p=p->next;s->next=p;p->next=s;D)p=(*p).next;(*s).next=(*p).next;(*p).next=s;(1)(49)请读程序:#includevoidfun(float*pl,float*p2,float*s){s=(float*)calloc(1,sizeof(float));*s=*p1+*(p2++);}main(){floata[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;fun(a,b,s)printf("%fn",*s);}上面程序的输出结果是A)11.100000B)12.100000C)21.100000D)1.100000(2)(50)请读程序:#include#includevoidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;while(p1main(){staticcharb[]="Goodbye";char*chp=&b[7];while(--chp>=&b[0])putchar(*chp);putchar('n');}(8)(8)下面程序的输出结果是【8】。#includevoidas(intx,inty,int*cp,int*dp){*cp=x+y;*dp=x-y;}main(){inta=4,b=3,c,d;as(a,b,&c,&d);printf('%d%dn",c,d);}(9)(9)请读程序:#includemain(intargc,char*argv[]){inti;printf('%dn",argc);for(i=0;i<=argc+1;i++)printf("%s",argv[i]);printf("n");n}若上面的程序编译、连接后生成可执行文件ABC.EXE,则输入以下命令行abcfile1file2(表示回车)程序执行后的输出结果是【9】。(1)(10)条件“20#defineN5fun(char*s,chara,intn){intj;*s=a;j=n;while(evoidfun(char*a1,char*a2,intn){intk;for(k=0;k