1994年4月-2010年9月全国计算机等级考试二级c语言真题(含答案)(1)

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

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#includemain(){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;ks[k])【15】。returnk;}(2)(16)下面程序的输出结果是【16】。#includefun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%dn",fun(9));}(3)(17)下面程序的输出结果是【17】。#includefuna(inta,intb){returna+b;}funb(inta,intb){returna-b;}sub(int(*t)(),intx,inty){return((*t)(x,y));}main(){intx,(*p)();p=funa;x=sub(p,9,3);x+=sub(funb,8,3);printf("%dn",x);n}(1)(18)下面程序的输出结果是【18】。#includemain(){char*p[]={"BOOL","OPK","H","SP"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);printf("n");}(2)(19)为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是向结点的指针域),请填空。datanextstructlink{chardata;【19】}node;(3)(20)下面的程序用来统计文件中字符的个数,请填空。#includemain(){FILE*fp;longnum=0;if((fp=fopen("fname.dat","r"))==NULL){printf("Can'topenfile!n");exit(0);}while【20】{fgetc(fp);num++;}printf("num=%dn",num);fclose(fp);}『完』1996年4月二级C语言笔试试卷参考答案一`选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)(1)C(2)A(3)B(4)D(5)D(6)A(7)C(8)B(9)D(10)C(11)B(12)D(13)A(14)C(15)B(16)A(17)B(18)A(19)C(20)C(21)D(22)B(23)B(24)A(25)C(26)D(27)D(28)B(29)C(30)A(31)B(32)B(33)D(34)C(35)A(36)C(37)A(38)B(39)C(40)A(41)C(42)C(43)A(44)C(45)B(46)B(47)D(48)C(49)D(50)Cn二`填空题(每空2分,共40分)(第(2)`(3)空允许小写或大小写混合使用,其它空均须与答案一样)(1)外部(2)DIR??C*.*(3)A:XYWQR.C(4)64(5)92(6)pow(sin(x),2)*(a+b)/(a-b)或sit(x)*sit(x)*(a+b)/(a-b)(7)eybdooG(8)71(9)3abc.exefile1file2(注:两个答案,每个1分)(10)((20PRNC)TYPEA:*.FOR>PRND)COPYA:*.FORPRN(4)(16)下列四组DOS命令中,互相等价的一组是A)COPYA:*.*B:与DISKCOPYA:B:B)COPYABC.TXT+XYZ.TXT与TYPEXYZ.TXT>>ABC.TXTC)COPYABC.TXT+XYZ.TXTXYZ.TXT与COPYXYZ.TXT+ABC.TXTD)TYPE*.FOR>CON与COPY*.FORCON(5)(17)在计算机内部,一切信息存取、处理和传送的形式是A)ASCII码B)BCD码C)二进制D)十六进制(6)(18)计算机的软件系统一般分为A)系统软件、应用软件与各种字处理软件B)操作系统、用户软件与管理软件C)系统系统与应用软件D)操作系统、实时系统与分时系统(7)(19)与二进制数101.01011等值的十六制数为A)A.BB)5.51C)A.51D)5.58(8)(20)如果按字长来划分,微机可以分为8位机、16位机、32位机和64位机。所谓32位机是指该计算机所用的CPUA)同时能处理32位二进制数B)具有32位的寄存器C)只能处理32位二进制定点数D)有32个寄存器(9)(21)下列语句中符合C语言语法的赋值语句是A)a=7+b+c=a+7;B)a=7+b++=a+7;C)a=7+b,b++,a+7D)a=7+b,c=a+7;(10)(22)在C语言中,要求运算数必须是整型的运算符是A)%B)/C)5)printf("%dn",x);elseprintf("%dn",x--);}(6)(30)下面程序的输出是A)3B)4C)1D)2main()n{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%dn",*(p+2));}(1)(31)执行下面程序中的输出语句,a的值是A)65B)20C)15D)10main(){inta;printf("%dn",(a=3*5,a*4,a+5));}(2)(32)下面程序的输出是A)0123B)04010C)04515D)14515main(){enumteam{my,your=4,his,her=his+10};printf("%d%d%d%dn",my,your,his,her);}(3)(33)下面程序的输出是A)003B)012C)103D)112main(){inta=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d%d%dn",k,a,b);}(4)(34)下面的程序片段所表示的数学函数关系是上面程序片段的输出结果是┌-1(x<0)┌1(x<0)││A)y=┤0(x=0)B)y=┤-1(x=0)││└1(x>0)└0(x>0)┌0(x<0)┌-1(x<0)││C)y=┤-1(x=0)D)y=┤1(x=0)││└1(x>0)└0(x>0)y=-1;if(x!=0)if(x>0)y=1;elsey=0(5)(35)下面函数的功能是A)求字符串的长度B)比较两个字符串的大小C)将字符串x复制到字符串yD)将字符串x连接到字符串y后面intfunl(char*x){char*y=x;while(*y++);nreturn(y-x-1);}(1)(36)若fp是指向某文件的指针,且已读到该文件的末尾,则C语言函数feof(fp)的返回值是A)EOFB)-1C)非零值D)NULL(2)(37)根据下面的定义,能打印出字母M的语句是A)printf("%cn",class[3].name);D)printf("%cn",class[2].name[0]);B)printf("%cn",class[3].name[1]);C)printf("%cn",class[2].name[1]);structperson{charname[9];intage;};structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};(3)(38)下面程序的输出是A)-1B)0C)1D)不确定的值main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a#includemain(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%sn",str);}(5)(40)下面程序的输出是A)741B)852C)963D)875421main(){inty=9;for(;y>0;y--){if(y%3==0)n{printf("%d",--y);continue;}}.}(1)(41)下面程序的输出是A)100B)160C)120D)64main(){charx=040;printf("%dn",x=x<<1);}(2)(42)下面程序的输出是A)0B)1C)3D)6main(){structcmplx{intx;inty;}cnum[2]={1,3,2,7};printf("%dn",cnum[0].y/cnum[0].x*cnum[1].x);}(3)(43)下面程序的输出是A)23B)26C)33D)36intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}(4)(44)下面程序的输出是A)23B)24C)25D)26voidprtv(int*x)printf("%dn",++*x);}main(){inta=25;prtv(&a);}(5)(45)下面程序的输出是A)3B)4C)6D)9fun3(intx)staticinta=3;a+=x;return(a);}nmain(){intk=2,m=1,n;n=fun3(k);n=fun3(m);printf("%dn",n);}(1)(46)已知字符0的ASCII码为十六进制的30,下面程序的输出是A)6B)9C)0D)3main(){union{unsignedcharc;unsignedinti[4];}z;z.i[0]=0x39;z.i[1]=0x36;printf("%cn",z.c);}(2)(47)下面程序的输出是A)60B)68C)99D)108main(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int(*p)[4]=a,i,j,k=0;for(i=0;i<3;i++)for(j=0;j<2;j++)k=k+*(*(p+i)+j);printf("%dn",k);}(3)(48)下面程序的输出是A)1B)2C)7D)10intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%dn",fun2(a,b)/m);}(4)(49)下面程序的输出是A)32B)16C)8D)24typedefunion{longx[2];inty[4];charz[8];n}MYTYPE;MYTYPEthem;main(){printf("%dn",sizeof(them));}(1)(50)下面程序的输出是A)ABCDB)AC)DD)ABCDBCDBCABCCDCBABDDAAchars[]="ABCD";main(){char*p;for(p=s;p#includevoidfun4(charstr[]){inti,j;for(i=0,j=0;str[i];i++)if(isalpha(str[i]))str[j++]=str[i];str[j]='';}main(){charss[80]="Itis!";fun4(ss);printf('%sn",ss);}(4)(10)下面程序的输出是【10】。#definePR(ar)printf("%d",ar)main(){intj,a[]={1,3,5,7,9,11,13,15},*p=a+5;for(j=3;j;j--){switch(j){case1:ncase2:PR(*p++);break;case3:PR(*(--p));}}}(1)(11)下面程序的输出是【11】。unsignedfun6(unsignednum){unsignedk=1;do{k*=num%10;num/=10;}while(num);return(k);}main(){unsignedn=26;printf("%dn",fun6(n));}(2)(12)下面程序的输出是【12】。longfun5(intn){longs;if((n==1)||(n==2))s=2;elses=n+fun5(n-1);return(s);}main(){longx;x=fun5(4);printf("%ldn",x);}(3)(13)下面invert函数的功能是将一个字符串str的内容颠倒过来。请填空。#includevoidinvert(charstr[]){inti,j,【13】;for(i=0,j=strlen(str)【14】;idata+p->link->data+p->link->link->data;for(p=p->link;p!=first;p=【15】)intm,m3=p->data+p->link->data+p->link->link->data;{m=p->data+p->link->data+p->link->link->data;if(【16】)m3=m;}return(m3);}(1)(15)下面h函数的功能是计算如下数学函数H的值。请填空。doublefgh(double(*f)(doublea)eps;n++){s+=t;t=n*t/(2*n+1);}return(2.0*【20】);}『完』1996年9月二级C语言笔试试卷参考答案一选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)(1)C(2)B(3)C(4)B(5)B(6)D(7)C(8)D(9)D(10)B(11)C(12)B(13)D(14)C(15)D(16)B(17)C(18)C(19)D(20)A(21)D(22)A(23)A(24)C(25)B(26)D(27)B(28)B(29)B(30)An(31)C(32)C(33)C(34)C(35)A(36)D(37)D(38)A(39)D(40)B(41)D(42)D(43)A(44)D(45)C(46)B(47)A(48)B(49)C(50)A二、填空题(每空2分,共40分)(1)【1】225(2)【2】-77(3)【3】COMMAND.COM(4)【4】CDC:(5)【5】C:D1>(6)【6】-1(7)【7】6(8)【8】12(9)【9】Itis(10)【10】9911(11)【11】12(12)【12】9(13)【13】k14-1(14)【15】p->link【16】mm或m<=m3或m3>=m(15)【17】f(xy)/g(y-x)或(*f)(x+y)/g(y-x)或f(x+y)/(*g)(y_x)或(*f)或(*f)(x+y)/(*g)(y-x)【18】cos,sin,a,b(16)【19】n=1【20】sn全国计算机等级考试二级笔试卷基础知识和C语言程序设计(考试时间120分钟,满分100分)1997年4月一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)(1)下列设备中只能作为输入设备的是A)磁盘驱动器B)鼠标器C)存储器D)显示器(2)(2)下列DOS组合控制键中,能使标准输出同时送到屏幕与打印机的是A)Ctrl+BreakB)Ctrl+PC)Ctrl+CD)Ctrl+H(3)(3)通常所说的386机是A)8位机B)16位机C)32位机D)64位机(4)(4)二进制数01100100转换成十六进制数是A)64B)63C)100D)144(5)(5)十六进制数100转换成十进制数是A)1024B)512C)256D)128(6)(6)对于存有重要数据的5.25英寸软盘,防止计算机病毒感染的方法是A)不要与有病毒的软盘放在一起B)在写保护口贴上胶条C)保持软盘清洁D)定期对软盘格式化(7)(7)在启动DOS系统时,启动盘的根录下必须包含的文件是A)START.COMB)COMMAND.COMC)FORMAT.COMD)BOOT.COM(8)(8)DOS系统启动后,下列文件中常驻内存的是A)DOS.COMB)COMMAND.COMC)DISKCOPY.COMD)SYS.COM(9)(9)下列名字中,不能作为DOS磁盘文件名的是A)JTUB)93GZ.PRGC)COND)ATT&T.BAS(10)(10)下列命令中属于内部命令的是A)SYSB)COMPC)DIRD)DISKCOMP(11)(11)下列文件名中,能与ABC?.?匹配的是A)AB12.CB)ABCD.FORC)ABC.TXTD)ABCD.C(12)(12)要列出当前盘当前目录中第三个字符为"B"的所有文件的清单,可使用的命令为A)DIR**B*.*B)DIR??B*.?C)DIR??B.*D)DIR??B*.*(13)(13)设当前盘为C盘,其根目录下有两个子目录D1与D2,且当前目录为D1,若要进入子目录D2,可使用的命令为A)CDD2B)CDD2C)CDD2D)CDD1D2(14)(14)设当前盘为C盘,A盘当前目录为根目录。为了删除A盘目录WS下扩展名为.TXT的所有文件,可用的命令为A)DELWS*.TXTB)DELWS*.TXTC)DELA:WS?.TXTD)DELA:WS*.TXT(15)(15)设当前盘为C盘,C盘当前目录为AAABBBABX。下列命令中能正确执行的是A)MDAAABBBAB)MDXC)MDD)MDAAABBBABXn(1)(16)在下列各组的两个命令中,根据给定的条件,执行效果互相等价的是A)DELDOS与RDDOS(当前盘上有目录DOS)B)FORMATA:与DELA:*.*(A盘为启动盘)C)DISKCOPYA:B:与COPYA:*.*B:(A盘为启动盘)D)COPYF1F2与TYPEF1>F2(当前盘当前目录下有文件F1)(2)(17)为了在1.2MB的高密驱动器A中格式化一张360KB的启动盘,可用的命令为A)FORMATA:B)FORMATA:/S/1C)FORMATA:/S/4D)FORMATA:/S(3)(18)要在打印机上输出当前盘当前目录下扩展名为.TXT的所有文件内容,正确的命令为A)COPY*.TXTPRNB)COPY*.TXT>PRNC)TYPE*.TXTPRND)TYPE*.TXT>PRN(4)(19)设B盘目录结构如下:F11子目录B:根目录F1子目录FA.TXTF21子目录FC.TXTF2子目录F22子目录FB.BASF3子目录设B盘的当前目录为F2,要将A盘当前目录下的文件P.BAS复制到B盘的F3子目录中,可用的命令为A)COPYP.BASB:B)COPYA:P.BASB:C)COPYA:P.BASB:F3D)COPYA:P.BASB:F3(5)(20)设当前盘为A盘,要将B盘当前目录下的两个文件A.TXT与X.TXT连接后以文件名Y.TXT存放到A盘的当前目录中,可用的命令为A)COPYA.TXT+X.TXTA:Y.TXTB)COPYB:A.TXT+X.TXTA:Y.TXTC)COPYB:A.TXT+B:X.TXT>Y.TXTD)COPYB:A.TXT+B:X.TXTY.TXT(6)(21)C语言中最简单的数据类型包括A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型(7)(22)C语言中,运乍对象必须是整型数的运算符是A)%B)C)%和D)**(8)(23)为表示关系x≥y≥z,应使用C语言表达式A)(x>=y)&&(y>=z)B(x>=y)AND(y>=z)C)(x>=y>=z)D)(x>=y)&(y>=z)(9)(24)下述对C语言字符数组的描术中错误的是A)字符数组可以存放字符串B)字符数组中的字符串可以整体输入、输出C)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D)不可以用关系运算符对字符数组中的字符串进行比较(10)(25)设有如下定义:intx=10,y=3,z;则语句printf("%dn",z=(x%y,x/y));的输出结果是A)1B)0C)4D)3(11)(26)以下程序的输出结果是main(){intx=10,y=10;nprintf("%d%dn",x--,--y);}A)1010B)99C)910D)109(1)(27)定义如下变题和数组:inti;intx[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是for(i=0;i<3;i++)printf("%d",x[i][2-1]);A)159B)147C)357D)369(2)(28)若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为A)a<>0B)!aC)a=0D)a(3)(29)阅读程序:#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%xn",p);printf("%xn",p+9);}该程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是A)203B)204C)1a4D)1a6(4)(30)设有如下函数定义:intf(char*s){char*p=s;while(*p!='')p++;return(p-s);}如果在主程序中用下面的语句调用上述函数,则输出结果为printf("%dn",f("goodbey!"));A)3B)6C)8D)0(5)(31)以下说法中正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分(6)(32)执行下面的程序后,a的值为main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}nb-=5;}}A)7B)8C)9D)10(33)以下程序段的输出结果是 intx=3; do{printf("%3d",x-=2);}while(!(--x));A)1B)30C)1-2D)死循环(1)(34)定义如下变量:intn=10;则下列循环的输出结果是while(n>7){n--;printf("%dn",n);} A)10B)9C)10D)9 9898878776(2)(35)两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是main(){intx;scanf("%d",&x);if(x++>5)printf("%d",x);elseprintf("%dn",x--);}A)7和5B)6和3C)7和4D)6和4(3)(36)设有如下定义:char*aa[2]={"abcd","ABCD"};则以下就法中正确的是A)aa数组成元素的值分别是"abcd"和ABCD"B)aa是指针变量,它指向含有两个数组元素的字符型一维数组C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D)aa数组的两个元素中各自存放了字符'a'和'A'的地址(4)(37)以下程序的输出结果是main(){inta=-1,b=4,k;k=(++a〈0)&&!(b--〈=0);printf("%d%d%dn",k,ab);}A)104B)103C)003D)004(5)(38)设有以下定义:inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*prt)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是A)*((*prt+1)[2])B)*(*(p+5))C)(*prt+1)+2D)*(*(a+1)+2)(6)(39)下列程序的输出结果是main(){char*p1,*p2,str[50]="xyz";p1="abcd";np2="ABCD";strcpy(str+2,strcat(p1+2,p2+1);printf)"%s",str);}A)xyabcABB)abcABzC)ABabczD)xycdBCD(1)(40)执行下面的程序后,a的值是#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%dn",a);}A)10B)1C)9D)0(2)(41)下列程序执行后输出的结果是#includef(inta){intb=0;staticc=3:a=c++,b++;return(a);}main(){inta=2,i,k;for(i=0;i〈2;i=++〉k=f(a++);printf("%dn",k);}A)3B)0C)5D)4(3)(42)下列程序的输出结果是main(){inta[5]={2,4,6,8,10},*P,**k;p=a;k=&p;printf("%d",*(p++));printf("%dn",**k);}A)44B)22C)24D)46(4)(43)阅读下列程序:main(){intn[3],i,j,k;for(i=0;i〈3;i++〉n[i]=0;k=2;for(i=0;i〈k;i++〉for(j=0;j〈k;j++〉n[j]=n[i]+1;printf("%dn",n[1]);}下述程序运行后输出结果是A)2B)1C)0D)3n(1)(44)字符'0'的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是#includemain(){union{inti[2];longk;charc[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%cn",s->c[0])}A)39B)9C)38D)8(2)(45)设有以下定义:typedefunion{longi;intk[5];charc;}DATE;structdate{intcat;DATEcow;doubledog;}too;DATEmax;则下列语句的执行结果是printf("%d",sizeof(structdate)+sizeof(max));A)25B)30C)18D)8(3)(46)执行以下程序后,y的值是main(){inta[]={2,4,6,8,10};inty=1,x,*p;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%dn",y);}A)17B)18C)19D)20(4)(47)下列程序执行后输出的结果是intd=1;fun(intq){intd=5;d+=p++;printf("%d".d);}main(){inta=3;fun(a);d+=a++;printf("%dn",d);}A)84B)96C)94D)85(5)(48)下列程序的输出结果是main(){charch[2][5]={"6934,"8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];nfor(i=0;i<2;i++)for(j=0;p[i][j]>''&&p[i][j]<='9';j+=2)s=10*s+p[i][j]-'0';printf("%dn",s);A)6385B)69825C)63825D)693825(1)(49)以下程序的输出结果是fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);primtf("%dn",*p);}A)1B)7C)9D)11(2)(50)以下程序的输出结果是#include"ctype.h"space(char*str){inti,t;charts[81];for(i=0,t=0;str[i]!='';i+=2)if(!isspace(*str+i)&&(*(str+i)!='a'))ts[t++]=toupper(str[i]);ts[t]='';strcpy(str,ts);}mian(){chars[81]={"abcdefg"};space(s);puts(s);}A)abcdegB)bcdeC)ABCDED)BCDE二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡上【1】-【20】序号的横线上,答在试卷上不得分。(3)(1)十进制数112.375转换成十六进制数为【1】。(4)(2)存储200个32×32点阵的汉字信息需【2】KB。(5)(3)数字符号0的ASCII码十进制表示为48,数字符号9的ASCII码十进制表示为【3】。(6)(4)DOS命令分为内部命令与外部命令,TREE命令属于【4】命令。(7)(5)自动批处理文件的文件名为【5】。(8)(6)表示条件:10&b[0])putchar(*chp);putchar('n');}(1)(8)下列程序的输出结果是【8】。intast(intx,inty,int*cp,int*dp){*cp=x+y;*dp=x-y;}main(){inta,b,c,d;a=4;b=3;ast(a,b,&c,&d);printf("%d%d/n",c,d);}(2)(9)以下程序的功能是:人键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空.main(){floatx,amax,amin;scanf("%f",&x);amax=x;amin=x;while(【9】){if(x>amax)amax=x;if(【10】)amin=x;scanf("%f",&x);}printf("namax=%fnamin=%fn",amax,amin);}(3)(10)下面程序通过函数average计算数组中各元素的平均值,请填空.floataverage(int*pa,intn){inti;floatavg=0.0;for(i=0;imain(){FILE*fp;charch,fname[10];printf("lnputthenameoffilen");gets(fname);if((fp=【16】)==NULL){printf("Cannotopenn");exit(0);}printf("Enterdatan");while((ch=getchar())!='#')fputc(【17】,fp);fclose(fp);}n(1)(15)以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回.请填空:#includestructlist{chardata;structlist*next;};structlist*creat(){structlist*h,*p,*q;charch;h=【18】malloc(sizeof(structlist));p=q=h;ch=getchar();while(ch!='?'){p=【19】malloc(sizeof(structlist));p->data=ch;p->next=p;q=p;ch=getchar();}p->next='';【20】}〖完〗1997年4月二级C笔试试卷参考答案一选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)(1)B(2)B(3)C(4)A(5)C(6)B(7)B(8)B(9)C(10)C(11)D(12)D(13)C(14)D(15)B(16)D(17)C(18)A(19)C(20)D(21)B(22)A(23)A(24)C(25)D(26)D(27)C(28)D(29)D(30)C(31)C(32)B(33)C(34)B(35)A(36)D(37)D(38)D(39)D(40)B(41)D(42)C(43)D(44)B(45)B(46)C(47)A(48)A(49)C(50)D二填空题(每空2分,共40分)((1)至(5)题中所有字母都允许大`小写或大小写混合)(1)【1】70.6(2)【2】25(答25KB不扣分)(3)【3】57(4)【4】外部(答外部命令不扣分)(5)【5】AUTOEXEC.BAT(答AUTOEXEC扣1分)(6)【6】(x>10&&x<100)││x<0或(1010&&x<100)或0>x││(10<&&x<100)n(并且括号有无都可以)(7)【7】GFEDCB(8)【8】71(9)【9】x>=0.0或!(x<0)或!(x<0.0)或0.0<=x或!(0.0>x)或!(0>x)(10)【10】xx或amin>=x【11】*(pa+i)或pa[i]【12】avg/n或avg/(float)n或avg/(double)n(11)【13】10(12)【14】8(13)【15】HOWhowdoyoudo(说明:HOW和how之间有无空格均可)(14)【16】fopen(fname,"w")说明:"w"开头的字符串均可)【17】ch(15)【18】(structlist*)【19】(structlist*)【20】return(h);或returnh;n全国计算机等级考试二级笔试题基础知识和C语言程序设计(考试时间120分钟,满分100分)1997年9月21日一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题卡相应位置上涂黑,答在试卷上不得分。(1)(1)应用软件是指A)所有能够使用的软件B)能被各应用单位共同使用的某种软件C)所有微机上都应使用的基本软件D)专门为某一应用目的而编制的软件(2)(2)下列述叙中错误的是A)计算机要经常使用不要长期闲置不用B)为了延长计算机的寿命,应避免频繁开关计算机C)在计算机附近应避免磁场干扰D)计算机用几小时后,应关机一会儿再用(3)(3)下列字符中,ASCII码值最小的是A)AB)aC)ZD)x(4)(4)用晶体管作为电子器件制成的计算机属于A)第一代B)第二代C)第三代D)第四代(5)(5)下列各不同进制的四个无符号数中,最小的数是A)(11011001)2B)(37)8C)(75)10D)(2A)16(6)(6)二进制数1110111.11转换成十六进制数是A)77.CB)77.3C)E7.CD)E7.3(7)(7)下列各无符号十进制数中,能用八位二进制表示的是A)296B)333C)256D)199(8)(8)计算机的软件系统可分类为A)程序与数据B)系统软件与应用软件D)操作系统与语言处理程序D)程序、数据与文档(9)(9)486机中的CPU同时能处理的二进制位数为A)8B)16C)32D)64(10)(10)在使用计算机的过程中,需要重新启动DOS,则要A)按Ctrl+Break键B)按^C键C)按Ctrl+Alt+Del键D)按^H键(11)(11)现要从软盘启动DOS(软盘中已存有DOS系统),设有如下一些操作:①打开计算机电源;②将该软盘插入A驱动器;③关好A驱动器门。则冷启动的操作顺序应为A)①→②→③B)③→②→①C)②→①→③D)②→③→①(12)(12)设当前盘中某一文件路径为ACBABC.C,当前目录为A。下列命令中错误的是A)CD..B)RDACBC)TYPEACBABC.CD)TYPECBABC.C(13)(13)设当前盘中的根目录下有一子目录AB,在子目录AB下有一文件PQ.BAS。现要查看文件PQ.BAS的内容,应使用命令A)TYPEABPQ.BASB)TYPEABPQ.BASC)TYPEPQ.BASD)DIRABPQ.BAS(14)(14)自动批处理文件必须放在A)C盘根目录中B)A盘根目录中nC)启动盘的任一个目录中D)启动盘的根目录中(1)(15)设当前盘当前目录为C:USERXYP,且当前盘当前目录为空,则下列命令中能正确执行的是A)RDC:USERXYPB)RDUSERXYPC)MDUSERXYPUSERD)MDUSERXYPXY(2)(16)下列DOS命令中,合法的是A)DISKCOMPA.CB.CB)TYPEA.C>>B.CC)COMPA:B:D)COMPA:A:(3)(17)设当前盘为C盘,所用的所有软盘已格式化,且容量相同,则下列DOS命令中错误的是A)DISKCOPYA:A:B)COPYA:*.*C)COPY*.*D)COPYA:*.*C:(4)(18)下列DOS命令中错误的是A)TYPEA.TXT>PRNB)TYPEA.TXTPRNC)COPY*.TXTPRND)COPYCONPRN(5)(19)下列四组DOS命令中,互相等价的一组是A)COPYA:*.*B:与DISKCOPYA:B:B)COPYABC.TXT+XYZ.TXT与TYPEXYZ.TXT>>ABC.TXTC)COPYABC.TXT+XYZ.TXTXYZ.TXT与COPYXYZ.TXT+ABC.TXTD)TYPE*.FOR>CON与COPY*.FORCON(6)(20)设C盘目录结构如下:AUTOEXEC.BATC:根目录DOS子目录TC子目录TC.EXEFORTRAN子目录USER子目录且C盘根目录下文件AUTOEXEC.BAT的内容为CDFORTRANCDTC如果在A驱动器中插入一张根目录中只有扩展名为.C的若干文件(即A盘中无DOS系统文件)的软盘片,则由C盘启动DOS系统后,第一次键入下列命令中,正确的是A)COPYA:*.CB)COPYA:*.CTCC)COPYA:*.CFORTRAND)CDUSER(7)(21)C语言提供的合法的数据类型关键字是A)DoubleB)shortC)integerD)Char(8)(22)在C语言中,合法的长整型常数是A)0LB)4962710C)0.054838743D)2.1869e10(9)(23)表达式:10!=9的值是A)trueB)非零值C)0D)1(10)(24)合法的C语言中,合法的长整型常数是A)'t'B)"A"C)65D)A(11)(25)若有说明和语句:inta=5;a++;n此处表达式a++的值是A)7B)6C)5D)4(1)(26)在下列选项中,不正确的赋值语句是A)++t;B)n1=(n2=(n3=0));C)k=i==j;D)a=b+c=1;(2)(27)若有说明:inti,j=7,*p=&i;,则与i=j;等价的语句是A)I=*P;B)*P=*&J;C)i=&j;D)i=**p;(3)(28)不能把字符串:Hello!赋给数组b的语句是A)charb[10]={'H','e','l','l','o','!'};B)charb[10];b="Hello!";C)charb[10];strcpy(b,"Hello!");D)charb[10]="Hello!";(4)(29)若有以下说明:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='a',d,g;则数值为4的表达式是A)a[g-c]B)a[4]C)a['d'-'c']D)a['d'-c](5)(30)若有以下说明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是A)*p+6B)*(p+6)C)*p+=5D)p+5(6)(31)若有以下说明:intw[3][4]o={{0,1},{2,4},{5,8}};int(*p)[4]=w;则数值为4的表达式是A)*w[1]+1B)p++,*(p+1)C)w[2][2]D)p[1][1](7)(32)若程序中有下面的说明和定义structabc{intx;chary;}structabcs1,s2;则会发生的情况是A)编译进错B)程序将顺利编译`连接`执行C)能顺利通过编译`连接`但不能执行D)能顺利通过编译`但连接出错(8)(33)能正确表示a≥10或a≤0的关系表达式是A)a>=10ora<=0B)a>=10│a<=0C)a>=10││a<=0D)a>=10││a<=0(9)(34)下面程序的输出是main(){intx=3,y=6,a=0;while(x++!=(y+=o1)){a+o=1;if(y#includenmain(){charss[10]="12345";strcat(ss,"6789");gets(ss);printf("%sn",ss);}A)ABCB)ABC9C)123456ABCD)ABC456789(1)(35)下面程序的输出是main(){char*a="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%dn",v1,v2,v3,v4);}A)v1=4,v2=2,v3=1,v4=1B)v1=4,v2=9,v3=3,v4=1C)v1=5,v2=8,v3=6,v4=1D)v1=8,v2=8,v3=8,v4=8(2)(36)下面程序的输出是main(){intk=11;printf("k=%d,k=%o,k=%xn",k,k,k);}A)k=11,k=12,k=11B)k=11,k=13,k=13C)k=11,k=013,k=0xbD)k=11,k=13,k=b(3)(37)若有以下程序段,w和k都是整型变量:┆w=k;LB:if(w==0)gotoLE;w--;printf("*");gotoLB;LE:┆则不能与上面程序段等价的循环语句是A)for(w=k;w!=0;w--)printf("*");B)for(w=k;w;--w)printf("*");C)w=k;D)w=k;while(w--!=0)printf("*");w++;do{w--;printf("*");}while(w!=0);(4)(38)若有说明,double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是A)*p=&a;scanf("%lf",p);B)p=(double*)malloc(8);scanf("%f",p);C)p=&a;scanf("%lf",a);D)p=&a;scanf("%le",p);(5)(39)当执行下面程序且输入:ABC时,输出的结果是n#include#includemain(){charss[10]="12345";gets(ss);printf("%sn",ss);}A)ABCB)ABC9C)123456ABCD)ABC456789(1)(40)若有以下的说明和语句:main(){intt[3][2],*pt[3],k;fpr(k=o;k<3;k++)pt[k]=t[k];}则以一选项中能正确表示t数组元素地址的表达式是A)&t[3][2]B)*pt[0]C)*(pt+1)D)&pt[2](2)(41)下面程序输出数组中的最大值,由s指针指向该元素.main(){inta[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;flr(p=a,s=a;p-a<10;p++)if(---?---)s=p;printf("Themax:%d",*s):}则在if语句中的判断表达式应该是A)p>sB)*p>*sC)a[p]>a[s]D)p-a>p-s(3)(42)下面程序的输出是#includemain(){char*a="abcdefgh";fun(a);puts(a);}fun(char*s){intx=0,y;charc;for(y=strlen(s)-1;x",执行命令"PROMPT$p"后,系统提示符变为【4】。(6)(5)要建立当前盘当前目录下的全部文件与下一级子目录的目录信息文件MYDIR,应使用的DOS命令为【5】。(7)(6)若想通过以下输入语句给a赋于1,给b赋于2,则输入数据的形式应该是【6】。inta,b;scanf("a=%b,b=%d,&a,&b);(8)(7)函数mycmp(char*s,chat*t)的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCOII码的差值,即当s>t时返回正值,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCOII码的差值,即当s>t时返回正值,当sFILE*fp;main(){charch;nif((fp=fopen(【19】))==NULL)exit(0);while((ch=getchar())!='@')fputc(ch,fp);【20】〖完〗1997年9月基础知识和C语言程序设计答案及评分标准一.选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)(1)D(2)D(3)A(4)B(5)B(6)A(7)D(8)B(9)C(10)C(11)D(12)B(13)B(14)D(15)C(16)B(17)C(18)B(19)B(20)A(21)B(22)A(23)D(24)A(25)C(26)D(27)B(28)B(29)D(30)C(31)D(32)A(33)D(34)D(35)C(36)D(37)C(38)D(39)A(40)C(41)B(42)D(43)A(44)D(45)C(46)B(47)D(48)C(49)D(50)C二.填空题(每空2分,共40分)((1)至(5)题中所有字母都允许大、小写或大小写混合)(1)10.2或(0.2)16(2)2外部命令(答外部不扣分)(3)3COPY*.DATPRN(4)4C:USER(5)5DIR>MYDIR(6)6a=1,b=2(7)7*s=*t(8)8o246802468(9)9p=p+7或p+=7(10)10DDBBCC(11)11int*12*z(12)13(*b).day14b->day说明:答案[13]和[14]可以互换(13)152162(14)17char*data18structlink*next说明:答案[17]和[18]可以互换(15)19"bi.dat","w"(说明:"w"内以w开头的字符串都可以)20fclose(fp)n全国计算机等级考试二级笔试题基础知识和C语言程序设计(考试时间120分钟,满分100分)1998年4月一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题卡相应位置上涂黑,答在试卷上不得分。(1)(1)所谓“裸机”是指A)单片机B)单板机C)不装备任何软件的计算机D)只装备操作系统的计算机(2)(2)下列存储器中,存取速度最快的是A)软盘B)硬盘C)光盘D)内存(3)(3)系统软件中最重要的是A)操作系统B)语言处理程序C)工具软件D)数据库管理系统(4)(4)CPU处理的数据基本单位为字,一个字的字长A)为8个二进制位B)为16个二进制位C)为32个二进制位D)与CPU芯片的型号有关(5)(5)打印当前屏幕内容应使用的控制键是A)Scroll-LockB)Num-LockC)PgDnD)PrtSc(PrintScreen)(6)(6)能将高级语言源程序转换成目标程序的是A)调试程序B)解释程序C)编译程序D)编辑程序(7)(7)二进制数1110111.11转换成十进制数是A)119.375B)119.75C)119.125D)119.3(8)(8)十六进制数FF.1转换成十进制数是A)255.0625B)255.125C)127.0625D)127.125(9)(9)3.5英寸软盘片的一个角上有一个滑动块,如果移动该滑块露出一个小孔,则该软盘A)不能读但能写B)不能读也不能写C)只能读不能写D)能读写(10)(10)控制键^C的功能为A)终止当前操作B)系统复位C)暂停标准输出设备的输出D)结束命令行(11)(11)COMMAND.COM为命令处理程序,DOS系统启动后,它A)驻留在外存,需要时再装入内存B)常驻内存,包含所有内部命令C)不能处理外部命令D)不能处理后缀为.EXE的可执行文件(12)(12)为了将所有扩展名为.PAS的文件改成扩展名为.P,应使用命令A)REN*.PAS*.?ASB)RENPASPC)REN*.PAS*.PD)REN*.PAS*.P??(13)(13)设当前盘中文件XY.C的路径为ABXU,当前目录为AB。为了查看文件XY.C的内容,应使用命令A)TYPEXUXY.CB)TYPEXUXY.CC)DIRXUXY.CD)DIRABXUXY.C(14)(14)要将提示符改成当前盘当前目录后加一个大于号">",应使用命令A)PROMPTB)PROMPT$p$gC)PROMPT$$D)PROMPTC>n(1)(15)设C盘根目录中有一个批处理文件A.BAT,当前盘为A盘。为了执行该批处理文件,下列命令中一定正确的是A)C:AB)C:A.BATC)A.BATD)A.BAT(2)(16)设当前盘为C盘,将A盘根目录下的文件目录信息存放到当前盘当前目录下的文件AB中,应使用命令A)TYPEA:>ABB)DIR>ABC)DIRA:>ABD)DIR>AB(3)(17)可执行文件ABC.EXE所需要的输入数据已经按格式存放在文件XYZ中,要求将执行结果在打印机上打印输出。下列命令中正确的是A)ABCXYZC)ABC>XYZPRN(4)(18)在当前盘当前目录下有一个文件A.BAT,其内容为CDMDXYZABBCCDXYZABB在正确执行上述文件后,接着执行下列命令时,不会发生错误的是A)MDCB)RDXYZC)RDCD)RDB(5)(19)下列命令组中两个命令互相等价的是A)TYPEAB.TXT与DIRAB.TXTB)DISKCOMPA:B:与COMPA:*.*B:*.*C)TYPEAB.TXT>>XY.TXT与COPYAB.TXTXY.TXTD)TYPEAB.TXT>XY.TXT与COPYAB.TXTXY.TXT(6)(20)设A盘为启动盘,其目录结构为根目录DOS子目录COMMAND.COMUSER子目录AUTOEXEC.BAT其中文件AUTOEXEC.BAT的内容如下:MDXYZCDDOSUSER则由A盘启动成功后,A盘的当前目录是A)DOSUSERB)XYZC)根目录D)DOS(7)(21)在C语言提供的合法的关键字是A)swicthB)cherC)CaseD)default(8)(22)在C语言中,合法的字符常量是A)‘84'B)‘x43'C)‘ab'D)“”(9)(23)若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是A)1B)2C)2.0D)2.5(10)(24)合法的数组定义是A)inta[]="string";B)inta[5]={0,1,2,3,4,5};C)vhsts="string";D)chara[]={0,1,2,3,4,5};n(1)(25)设a为整型变量,不能正确表达数学关系:1010&&a>15D)!(a<=10)&&!(a>=15)(2)(26)若t为double类型,表达式t=1,t5,t++的值是A)1B)6.0C)2.0D)1.0(3)(27)若有定义和语句:chars[10]:s="abcd";printf("%sn",s);则结果是(以下u代表空格)A)输出abcdB)输出aC)输出abcduuuuuD)编译不通过(4)(28)若有定义和语句:int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%dn",*p,**pp);则输出结果是:A)10,20B)10,10C)20,10D)20,20(5)(29)若有以下定义和语句:intu=010,v=0x10,w=10;printf("%d,%d,%dn,u,v,w);则输出结果是:A)8,16,10B)10,10,10C)8,8,10D)8,10,10(6)(30)若有以下定义和语句charc1='b',c2='e';printf("%d,%cn",c2-c1,c2-'a'+"A");则输出结果是:A)2,MB)3,EC)2,ED)输出项与对应的格式控制不一致,输出结果不确定(7)(31)若有以下定义:chars[20]="programming",*ps=s;则不能代表字符o的表达式是A)ps+2B)s[2]C)ps[2]D)ps+=2,*ps(8)(32)若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是for(i=5;i;i--)for(j=0;j<4;j++){...}A)20B)25C)24D)30(9)(33)若有以下定义和语句:char*s1="12345",*s2="1234";printf("%dn",strlen(strcpy(s1,s2)));则输出结果是A)4B)5C)9D)10(10)(34)若有以下定义和语句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是A)*pB)a[10]C)*aD)a[p-a]n(1)(35)下面程序的输出是main(){char*s="121";intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-'0';continue;}b=b+s[k]-'0';a=a+s[k]-'0';}while(s[k+1]);printf("k=%da=%db=%dn",k,a,b);A)k=3a=2b=3B)k=3a=3b=2C)k=2a=3b=2D)k=2a=2b=3(2)(36)下面程序的输出是main(){unsigneda=32768;printf("a=%dn",a);}A)a=32768B)a=32767C)a=-32767D)a=-1(3)(37)若有以下定义:floatx;inta,b;则正确的switch语句是A)switch(x)B)switch(x){case1.0:printf("*n");{case1,2:printf("*n");case2.0:printf("**n");case3:printf("**n");}}C)switch(a+b)D)switch(a+b);{case1:printf("n");{case1:printf(."*n");case1+2:printf("**n");case2:printf("**n");}}(4)(38)若有定义:intx,y;chara,b,c;并有以下输入数据(此处代表换行符,/u代表空格):1u2AuBuC则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是A)scanf("x=%dy+%d",&x,&y);a=getchar();b=getchar();c=getchar();B)scanf("%d%d",&x,&y);a=getchar();b=getchar();c=getchar();C)scanf("%d%d%c%c%c,&x,&y,&a,&b,&c);D)scanf("%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);n(1)(39)以下程序输出的结果是#include#includemain(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},K;for(k=1;k<3;k++)printf("%sn",&w[k][k]);}A)ABCDB)ABCDFGHEFGKLIJMC)EFGD)FGHJKKLO(2)(40)若有以下的定义:inta[]={1,2,3,4,5,6,7,88,9,10},*p=a;则值为3的表式是A)p+=2,*(p++)B)p+=2,*++pC)p+=3,*kp++D)p+=2,++*p(3)(41)假定所有变量均已正确说明,下列程序段运行后x的值是a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;A)34B)4C)35D)3(4)(42)在以下一组运算符中,优先级最高的运算符是A)<=B)=C)%D)&&(5)(43)若有以下定义和语句:intw[2][3],(*pw)[3];pw=w;则对w数组元素非法引用是A)*(w[0]+2)B)*(pw+1)[2]C)pw[0][0]D)*(pw[1]+2)(6)(44)若有以下程序片段:charstr[]="abn12\"";printf(%dd",strlen(str));上面程序片段的输出结果是A)3B)4C)6D)12(7)(45)函数调用:strcat(strcpy(str1,str2),str3)的功能是A)将串str1复制到串str2中后再连接到串str3之后nB)将串str1连接到串str2之后再复制到串str3之后C)将串str2复制到串str1中后再将串str3连接到串str1之后D)将串str2连接到串str1之后再将串str1复制到串str3中(1)(46)以下对C语言函数的有关描述中,正确的是A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B)C函数既可以嵌套定义又可以递归调用C)函数必须有返回值,否则不能使用函数D)C程序中有调用关系的所有函数必须放在同一个源程序文件中(2)(47)以下叙述中不正确的是A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。B)在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。C)在C中,外部变量的隐含类别是自动存储类别。D)在C中,函数形参可以说明为register变量。(3)(48)以下程序的输出结果是#includesubl(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}{chara,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A)BABBABB)ABBBBAC)BABABAD)BAABBA(4)(49)设有如下定义:structsk{inta;floatb;}data,*p;若有p=&data;,则对data中的a域的正确引用是A)(*p).data.aB)(*p).aC)p->data.aD)p.data.a(5)(50)以下对枚举类型名的定义中正确的是A)enuma={one,two,three};B)enuma{one=9,two=-1,three};C)enuma={"one","two","three"};D)enuma{"one","two","three"};二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。(6)(1)与十进制数101等值的二进制数为【1】。(7)(2)DOS命令分为内部命令和外部命令,XCOPY命令属于【2】。(8)(3)设当前盘为A盘,当前系统提示符为">",在不改变当前盘的情况下,显示C盘的当前目录的路径,应使用命令【3】。(9)(4)自动批处理文件名必须是【4】。(10)(5)设当前盘当前目录下有两个文件W.TXT,现要将文件P.TXT连接到文件W.TXT的后面,若使用COPY命令,则完整的命令为【5】。(11)(6)请写出以下数学式的C语言表达式6──.na───b.c(1)(7)若已知a=10,b=20,则表达式!ab)printf("****y%dn",y);elseprintf("####x=%n",x);(2)(11)在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是11函数.──(3)(12)若函数fun的类型void,且有以下定义和调用语句:#defineM50main(){inta[M];...fun(a);...}定义fun函数首部可以用三种不同的形式,请写出这三种形式:12.13.14───(注意:①形参的名字请用q,②使用同一种风格).(4)(13)若给fun函数的形参s传送字符串:"uuuu6354abc",则函数的返回值是15 ─.logfun(chars[]){longn;intsign;for(;isspace(*s);s++);sign+(*s=='-')?-1:1;if(*s=='+'‖*s=='-'s++;for(n=0;isdigit(*s);s++)n=10*n+(*s-'0');returnsign*n;(5)(14)以下函数用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n所指存储单元中存放数组中数据的个数.插入后数组中的数仍有序.请填空.voidfun(char*w,charx,int*n){inti,p;p=0;w[*n]=x;nwhile(x>w[p])16──;for(i=*n;i>p;i--)w[i]=17─;w[p]=x;++*n;}(1)(15)fun1函数的调用语句为:fun1(&a,&b,&c);它将三个整数按由大到小的顺序调整后依次放入a,b,c,三个变量中,a中放量大数.请填空.voidfun2(int*x,int*y){intt;t=*x;*x=*y;*y=t;}voidfun1(int*pa,int*pb,int*pc){if(*pc>*pb)fun2(18)───;if(*pa<*pc)fun2(19)──; if(*pa<*pb)fun2(20)──;}〖完〗1998年4月全国计算机等级考试二级笔试C试卷答案一、选择题((1)--(40)题每题1分,(41)--(50)题每题2分,共60分。(1)C(2)D(3)A(4)D(5)D(6)C7)B(8)A(9)C(10)A(11)B(12)C(13)A(14)B(15)A(16)C(17)D(18)C(19)D(20)C(21)D(22)B(23)C(24)D(25)A(26)D(27)D(28)D(29)A(30)B(31)A(32)A(33)A(34)B(35)C(36)C(37)C(38)D(39)D(40)A(41)B(42)C(43)B(44)C(45)C(46)A(47)C(48)A(49)B(50)B二、填空题(每空2分,共40分)(1)1100101或(1100101)2(2)外部命令(答外部不扣分)(3)cdc:(cd与C:中间至少要有一个空格)(4)AUTOEXEC.BATn(5)COPYW.TXT+P.TXT或copyw.txt+p.txtw.txt(6)a/(b*c)或a/(a*b)或a/b/c或a/c/b(7)1(8)###a=26,b=13,c=19(9)*(p+5)或p[5](10)if(a<=b){x=1;printf("####x=%dn",x);}else{y=2;printf("****y=%dn",y);}或if(a>b){y=2;printf("****y=%dn",y);}else{x=1;printf("####"x=%dn",x);}或if(a<=b)printf("####"x=%dn",x=1);elseprintf("****y=%dn",y=2);或if(a>b)printf("****y=%dn",y=2);elseprintf("####"x=%dn",x=1);(11)rewind或fseek(12)(13)(14)voidfun(int*q);或voidfun(q)int*q;voidfun(intq[]);voidfun(q)intq[];voidfun(intq[M]);voidfun(q)intq[M];说明:以上两组答案中(A)三个答案可以任意次序(B)标识符q可以用字母或下划线开头以字母、数字和下划线组成的名字代替。(C)两种风格可以混用。(15)6354(16)p++或++p或p=p+1或p+=1或p=1+p(17)w[i-1]或*(w+i-1)(18)pc,pb或pb,pc(19)pc,pa或pa,pc(20)pb,pa或pa,pbn全国计算机等级考试二级笔试卷基础知识和C语言程序设计(考试时间120分钟,满分100分)1998年9月一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)(1)通常所说的主机主要包括A)CPUB)CPU和内存C)CPU、内存与外存D)CPU、内存与硬盘(2)(2)在微机系统中,最基本的输入输出模块BIOS存放在A)RAM中B)ROM中C)硬盘中D)寄存器中(3)(3)一个24*24点阵的汉字字形信息所占的字节数为A)2B)24C)32D)72(4)(4)bit的意思是A)字B)字长C)字节D)二进制位(5)(5)某学校的工资管理程序属于A)系统程序B)应用程序C)工具软件D)文字处理软件(6)(6)与十六进制数BB等值的十进制数是A)187B)188C)185D)186(7)(7)设一张软盘已染上病毒,能清除病毒的措施是A)删除该软盘上的所有文件B)格式化该软盘C)删除该软盘上的所有可执行文件C)删除该软盘上的所有批处理文件(8)(8)一张3.5英寸双面高密度软盘片的容量为A)360KBB)720KBC)1.44MBD)1.2MB(9)(9)与二进制小数0.1等值的十六进制小数为A)0.1B)0.2C)0.4D)0.8(10)(10)DOS系统的热启动与冷启动的不同之处为热启动时A)不检测键盘、处设接口与内存B)不提示用户输入日期与时间C)不用装入COMMAND.COM文件D)不能从软盘启动(11)(11)为了将磁盘上的文件K1,K2,K3,依次连接在文件K4的后面,应使用命令A)COPYK1+K2+K3K4B)COPYK1+K2+K3+K4C)COPYK1+K2+K3+K4K4D)COPYK4+K1+K2+K3(12)(12)下列文件名中可以作为批处理文件名的是A)AUTOEXC.CB)AUTOEXECC)ATX.BATD)AUTO.TXT(13)(13)要打印输出当前盘的根目录下所有文件与子目录清单,应使用命令A)DIR>PRNB)TYPE>PRNC)DIR>PRNC)TYPE>PRNC)DIR>PRND)TYPE>PRN(14)(14)设可执行文件ABC.EXE所需要的本该由键盘输入的数据已经按格式存放在文件XYZ中,并要求执行结果放在XYZ中输入数据的后面。下列命令中正确的是A)ABCXYZB)ABC>XYZC)ABC<XYZD)ABC>>XYZ(15)(15)设当前盘中某一目录路径为ABC,当前目录为A。下列命令中肯定出错的是A)MDACB)CD..C)MDABAD)MDABn(1)(16)设A盘的目录结构如下:根目录│┌────┬────┬──┴───┬─────┬────┐││││││ABCD1子目录DX.CQ.DATD2子目录A.FOR││┌────┬┴──┬───┐┌─────┼────┐│││││││B.PASD3子目录Y.BASA.CA1.CD4子目录XYZ.C│┌───┬──┴─┬───┐││││QR.CNA.CA.TXTB.C如果当前盘为C盘,A盘的当前目录为D2,则下列对A盘上文件QR.C的指定中,合法的是A)D2D4QR.CB)D4QR.CC)A:D4QR.CD)A:D2D4QR.C(2)(17)下列DOS命令中,有错误的是A)TYPEAAB.FOR>CONB)TYPE?AB.FORC)COPY*.CCOND)COPYCONPRN(3)(18)设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C盘根目录下的文件XYZ.TXT的后面,正确的命令是A)COPYC:XYZ.TXT+AB1.TXTB)COPYAB1.TXT>>C:XYZ.TXTC)TYPEAB1.TXT>C:XYZ.TXTD)AB1.TXT+C:XYZ.TXT>C:XYZ.TXT(4)(19)下列命令中合法的是A)DISKCOPYA:A:B)DISKCOPYA:C:C)DISKCOPYC:A:D)DISKCOPYC:D:(5)(20)设当前盘中某一目录路径为ABCDXU,当前目录为A。要将根目录下扩展名为.C的所有文件复制到当前目录下,并将扩展名改为.FOR,应使用命令A)COPY*.C*.FORB)COPY*.CA*.FORC)COPY*.FOR*.CD)COPYA*.C*.FOR(6)(21)下列不正确的转义字符是A)'\'B)'"C)'074'D)''(7)(22)若有以下定义:chara;intb;floatc;doubled;则表达式a*b+d-c值的类型为A)floatB)intC)charD)double(8)(23)表示关系x<=y<=z的c语言表达式为A)(X<=Y)&&(Y<=Z)B)(X<=Y)AND(Y<=Z)C)(X<=Y<=Z)D)(X<=Y)&(Y<=Z)n(1)(24)设a=1,b=2,c=3,d=4,则表达式:A)765.12<回车>B)i=100,f=765.12<回车>C)100<回车>765.12<回车>D)x=100<回车>y=765.12<回车>(2)(29)设x和y均为int型变量,则执行下的循环后,y值为for(y=1,x=1;y<=50;y++){if(x>=10))break;if(x%2==1){x+=5;continue;}x-=3;}A)2B)4C)6D)8(3)(30)给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为A)数组X和数组Y等价B)数组x和数组Y的长度相同C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度(4)(31)以下叙述中不正确的是A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效(5)(32)假定a和b为int型变量,则执行以下语句后b的值为a=1;b=10;do{b-=a;a++;}while(b--<0);A)9B)-2C)-1D)8(6)(33)设j为int型变量,则下面for循环语句的执行结果是for(j=10;j>3;j--){if(j%3)j--;--j;--j;printf("%d",j);}A)63B)74C)62D)73(7)(34)设有以下宏定义:#defineN3#defineY(n)((N+1)*n)则执行语句:z=2*(N+Y(5+1));后,z的值为A)出错B)42C)48D)54(35)设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是nA)k=*P1+*P2;B)p2=k;C)P1=P2;D)K=*P1*(*P2);(1)(36)设有如下定义:intarr[]={6,7,8,9,10};int*ptr;则下列程序段的输出结果为ptr=arr;*(ptr+2)+=2;printf("%d,%dn",*ptr,*(ptr+2));A)8,10B)6,8C)7,9D)6,10(2)(37)以下程序的输出结果是main(){inti,k,a[10],p[3]:K=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%dn",k);}A)20B)21C)22D)23(3)(38)执行以下程序段后,m的值为inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));A)15B)14C)13D)12(4)(39)有以下程序段chararr[]="ABCDE";char*ptr;for(ptr=arr;ptrmain(){union{intk;chari[2];}*s,a;s=&a;s->i[0]=0x39;s->i[1]=0x38;printf("%xn",s->k);}n输出结果是A)3839B)3938C)380039D)390038(1)(42)有以下程序#includemain(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%dn",a,b);}输出结果是A)2,1B)3,2C)4,3D)2,-1(2)(43)设有如下定义:int(*ptr)*();则以下叙述中正确的是A)ptr是指向一维组数的指针变量B)ptr是指向int型数据的指针变量C)ptr是指向函数的指针,该函数返回一个int型数据D)ptr是一个函数名,该函数的返回值是指向int型数据的指针(3)(44)有以下程序#includestructstu{intnum;charname[10];intage;};voidfun(structstu*p){printf("%sn",(*p).name);}main(){structstustudents[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};fun(students+2);}输出结果是A)ZhangB)ZhaoC)WangD)18(4)(45)设有以下说明和定义:typedefunion{longi;intk[5];charc;}DATE;nstructdate{intcat;DATEcow;doubledog;}too;DATEmax;则下列语句的执行结果是printf("%d",sizeof(structdate)+sizeof(max));A)26B)30C)18D)8(1)(46)有以下程序main(){chara[]="programming",b[]="language";char*p1,*p2;inti;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}输出结果是A)gmB)rgC)orD)ga(2)(47)有以下程序viodfun(inta,intb,intc){a=456;b=567;c=678;}main(){intx=10,y=20,z=30;fun(x,y,z);printf("%d,/%dn",c,d);}输出结果是A)30,20,10B)10,20,30C)456,567,678D)678,567,456(3)(48)有以下程序intfun(intx,inty,int*cp,int*dp){*cp=x+y;*dp=x-y;}main(){inta,b,c,d;a=30;b=50;fun(a,b,&c,&d);printf("%d,%dn",c,d);}输出结果是A)50,30B)30,J50C)80,-20D)80,20n(1)(49)有以下程序main(){inti,j;for(j=10;j<11;j++){for(i=9;i=j-1)printf("%d",j);}}输出结果是A)11B)10C)9D)1011(2)(50)有以下程序#include"atdio.h"intabc(intu,intv);main(){inta=24,b=16,c;c=abc(a,b);printf('%dn",c);}ntabc(intu,intv){intw;while(v){w=u%v;u=v;v=w}returnu;}输出结果是A)6B)7C)8D)9二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡【1】-【20】序号的横线上,答在试卷上不得分.(3)(1)自动批自理文件名为【1】。(4)(2)DOS命令分为内部命令与外部命令,COMP命令属于【2】命令。(5)(3)设当前为C盘,现要用一条DOS命令在打印机上输出A盘当前目录下所有扩展名为.DAT的文件内容。这一条DOS命令应为【3】。(4)要将当前盘当前目录下的子目录XYZ中所有扩展名为.BAK的文件名改成扩展名为.FOR,应使用的DOS命令为【4】。(5)设DOS外部命令文件所在的路径均已用PATH命令打通。现要将当前盘当前目录下的文件WST.TXT设置为只读属性,应使用的DOS命令为【5】。(6)设x和y均为int型变量,且x=1,y=2,则以下表达式的值为【6】。1.0+x/y(7)设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【7】。for(i=0,j=10;i<=j;i++,j--)nk=i+j;(1)(8)设有以下定义的语句:inta[3][2]={10,20,30,40,50,60},(*p)[2];p=a;则*(*(p+2)+1)值为【8】。(2)(9)以下程序的输出结果是【9】。#includeintfun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm}main(){intj=4,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%dn",k);}(3)(10)函数fun的功能是:使一个字符串按逆序存放,请填空voidfun(charstr[]){charm;inti,j;for(i=0,j=strlen(str);i<【10】;i++,j--){m=str[i];str[i]=【11】;str[j-1]=m;}printf("%sn",str);}(4)(11)以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。#include"ctype.h"#include"stdio.h"main(){charstr[81],*sptr;inti;for(i=0;i<80;i++){str[i]=getchar();nif(str[i]=='n')break;}str[i]=【12】;sptr=str;while(*sptr)putchar(*sptr【13】);}(1)(12)以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。#includemain(){charstr[100],str2[100],c;inti,s;printf("ninputstring1:n");gest(str1);printf("ninputstring2:n");gest(str2);i=0;while((strl[i]==str2[i]&&(str1[i]!=【14】))i++;s=【15】;printf("%dn",s);}(2)(13)以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。#includemain(){FILE*fp;charstr[100];inti=0;if((fp=fopen("text.txt",【16】))==NULL){printf("can'topenthisfile.n");exit(0);}printf("inputastring:n");gest(str);while(str[i]){if(str[i]>='a'&&str[i]<='z')str[i]=【17】;fputc(str[i],fp);i++;}fclose(fp);fp=fopen("test.txt",【18】);nfgets(str,100,fp);printf("%sn",str);fclose(fp);}(14)以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空。#include.main(){charb[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};intc[64],d,i=0,base;longn;printf("enteranumber:n");scanf("%ld",&n);printf("enternewbase:n");scanf("%d",&base);do{c[i]=【19】;i++;n=n/base;}while(n!=0);printf("transmitenewbase:n");for(--i;i>=0;--i){d=c[i];printf("%c",b【20】;}}〖完〗1998年9月基础知识和C语言程序设计答案及评分标准一、选择题((1)-(40)题每题1分;(41)-(50)题每题2分)(1)B(2)B(3)D(4)D(5)B(6)A(7)B(8)C(9)D(10)A(11)D(12)C(13)A(14)B(15)D(16)C(17)B(18)A(19)A(20)A(21)C(22)D(23)A(24)D(25)B(26)C(27)C(28)B(29)C(30)C(31)D(32)D(33)B(34)C(35)B(36)D(37)B(38)A(39)D(40)D(41)A(42)A(43)C(44)B(45)B(46)D(47)A(48)C(49)B(50)C二、填空题(每空2分,共4分)(1)至(5)题中所有字母都允许大,小写或大小写混合(1)【1】AUTOEXEC.BATn(2)【2】外部(答外部命令不扣分)(3)【3】COPYA:*.DATPRN(在COPY后面与A:*.DAT后面都至少要有一个空格)(4)【4】RENXYZ*.BAK*.FOR或RENAMEXYZ*.BAK*.FOR(在REN或RENAME后面与XYZ*.BAK后面都至少要有一个空格)(5)【5】ATTRIB+RWST.TXT(在ATTRIB后面与+R后面都至少有一个空格)或ATTRIBWST.TXT+R(在ATTRIB后面与WST.TXT后面都至少要有一个空格)(6)【6】1.0或1(7)【7】10(8)【8】60(9)【9】8,17(10)【10】strlen(str)/2或strlen(str)/2.0或0.5*strlen(str)或j或j-1【11】str[j-1]或*(str+j-1)(11)【12】''或0【13】++(12)【14】''或0【15】strl[i]-str2[i](13)【16】"w"或"w+"或"wt"或"w+t"或"""wt+"【17】str[i]-32或str[i]-('a'-'A'或str[i]-'a'+'A'【18】"r"或"r+"或"r+t"或"rt+"(14)【19】n%base【20】[d]n全国计算机等级考试二级笔试卷基础知识和C语言程序设计(考试时间120分钟,满分100分)1999年4月一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)(1)微型计算机的性能主要取决于A)内存B)中央处理器C)硬盘D)显示卡(2)(2)有一个数值152,它与十六进制数6A相等,那么该数值是A)二进制数B)八进制数C)十进制数D)四进制数(3)(3)使用超大规模集成电路制造的计算机应该归属于A)第一代B)第二代C)第三代D)第四代(4)(4)已知英文字母a的ASCII代码值是十六进制数61H,那么字母d的ASCII代码值是A)34HB)54HC)24HD)64H(5)(5)一片存储容量是1.44MB的软磁盘,可以存储大约140万个A)ASCII字符B)中文字符C)磁盘文件D)子目录(6)(6)在MS-DOS环境中同时按下[Ctrl]和[Break]两个键,其作用是A)终止当前操作B)暂停当前操作C)关机D)热启动(7)(7)将二进制数10000001转换为十进制数应该是A)127B)129C)126D)128(8)(8)磁盘处于写保护状态,那么磁盘中的数据A)不能读出,不能删改,也不能写入新数据B)可以读出,不能删改,也不能写入新数据C)可以读出,可以删改,但不能写入新数据D)可以读出,不能删改,但可以写入新数据(9)(9)微型机启动后,DOS提示符是C:>,现提示符变为C:USER>,则说明刚执行过命令A)PROMPTB)PROMPTUSERC)PROMPTSP$GD)CDUSER(10)(10)MS-DOS文件系统目录的组织形式属于A)关系型结构B)网络型结构C)树型结构D)直线型结构(11)(11)应用软件系统TH的总容量大约1MB,其主要程序文件存放在C:TH目录中,而数据文件存放在C:THDATA目录中,如果将它们完整地复制到A盘,应该使用的命令是A)XCOPYC:THA:B)XCOPYC:THA:/SC)XCOPYC:THA:/MD)XCOPYC:THA:/P(12)(12)执行COPYA.TXT+B.TXT这个DOS命令后,得到的磁盘文件是A)A.TXTB)B.TXTC)AB.TXTD)A+B.TXT(13)(13)在WINDOWS中,将一个应用程序窗口最小化之后,得到的磁盘文件是A)仍在后台运行B)暂时停止运行C)完全停止运行D)出错(14)(14)CD-ROM属于A)感觉媒体B)表示媒体C)表现媒体D)存储媒体(15)(15)在因特网(Internet)中电子公告板的缩写是A)FTPB)WWWC)BBSD)E-mail(16)(16)设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为A)4B)16C)32D)52(17)(17)设有如下的变量定义:ninti=8,k,a,b;unsignedlongw=5;doublex=1,42,y=5.2;则以下符合C语言语法的表达式是A)a+=a-=(b=4)*(a=3)B)x%(-3);C)a=a*3=2D)y=float(i)(1)(18)假定有以下变量定义:intk=7,x=12;则能使值为3的表达式是A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)(2)(19)以下叙述中正确的是A)输入项可以是一个实型常量,如:scakf("%f",3.5);B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf("a=%d,b=%d");C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scakf("%4.2f",&f);D)当输入数据时,必须指明变量地址,例如:scakf("%f",&f);(3)(20)设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是A)把x和y按从大到小排列B)把x和y按从小到大排列C)无确定结果D)交换x和y中的值(4)(21)以下程序的输出结果是A)1010B)1212C)1110D)1113main(){inta=12,b=12;printf("%d,%dn",--a,++b);}(5)(22)以下程序运行后,输出结果是A)cdeB)字符c的ASCII码值C)字符c的地址D)出错main(){char*s="abcde";s+=2;printf("%ldn",s);}(6)(23)以下程序输出结果是A)7B)6C)5D)4main(){intm=5;if(m++>5)printf("%dn",m);esleprintf("%dn",m--);n}(1)(24)当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为A)1B)2C)3D)6if(a,则输出为A)ABCdefB)abcDEFC)abcD)DEF#includemain(){charch;while((ch=getchar())!='n'){if(ch>='A'&&ch<='Z')ch=ch+32;elseif(ch>='a'&&ch<='z')ch=ch-32;printf("%c",ch);}printf("n");}(3)(26)下面能正确进行字符串赋值操作的语句是A)chars[5]={"ABCDE"};B)chars[5]={'A','B','C','D','E'};C)char*s;s="ABCDEF";D)char*s;scanf("%s",s);(4)(27)执行以下程序段时A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误X=-1;do{x=x*x;}while(!x);(5)(28)执行以下程序后,输出的结果是A)-1B)1C)8D)0main(){inty=10;do{y--;}while(--y);printf("%dn",y--);}(6)(29)在下列选项中,没有构成死循环的程序段是nA)inti=100B)for(;;);while(1){i=i%100+1;if(i>100)break;}C)intk=1000;D)ints=36;do{++k;}while(k>=10000);while(s);--s;(1)(30)执行语句:for(i=l:i++<4:);后,变量i的值是A)3B)4C)5D)不定(2)(31)以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为A)8B)7C)6D)5#include#includefunc,则输出结果为A)2,0B)5,0C)5,5D)2,5#includemair(){intv1=0,v2=0;charch;while((ch=getchar())!='#')switch(ch){case'a';case'h';default;v1++;case'0';v2++;}printf("%d,%dn",v1,v2);}(4)(33)若以下程序所生成的可执行文件名为filel.exe;当打入以下命令执行该程序时;FILELCHINABEIJINGSHANGHAIn程序的输出结果是A)CHINABEIJINGSHANGHAIB)FILELCHINABEIJINGC)CBSD)FCBmain(intargc,char*argv[]){while(arge-->0){++argv;printf("%s",*argv);}}(1)(34)下面程序运行的结果是A)2ba56B)6521C)6D)62main(){charch[7]={65ab21"};inti,s=0for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%dn",s);}(2)(35)运行下面的程序,如果从键盘上输入:ab<回车>c<回车>def<回车>则输出结果为A)aB)aC)abD)abcdefbbcccdddef#include#defineN6main(){charc[N];inti=0;for(;iss(char*s)n{char*p=s;while(*p)p++;return(p-s);}main(){char*a="abded";inti;i=ss(a);printf("%dn",i);}(1)(37)以下程序运行后,输出结果是A)8,15B)8,16C)8,17D)8,8func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%dn",p);}(2)(38)以下程序运行后,输出结果是A)49.5B)9.5C)22.0D)45.0#include#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1fn",S(a+b));}(3)(39)以下程序运行后,输出结果是A)ABCDEFGB)CDGC)abcdefghD)abCDefGhmain(){staticchara[]="ABCDEFGH",b[]="abCDefGh";char*p1,*p2;intk;np1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));printf("n");)(1)(40)以下程序运行后,a的值是A)4B)1C)0D)运行时出错,a无定值main(){inta,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;printf("%dn",a);}(2)(41)以下程序运行后,输出结果是A)84B)99C)95D)44intd=1;fun(intp){intd=5;d+=p++;printf("%d,d);}main(){inta=3;fun(a);d+=a++;printf("%dn,d);}(3)(42)以下程序运行后,输出结果是A)6385B)22C)33D)693825main(){charch[2][5]={'693","825"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]='0'&&p[i][j]<='9';j+=2)s=10*s+p[i][j]-'0';printf("%dn",s);n}(1)(43)以下程序运行后,输出结果是A)1B)7C)9D)11fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%dn",*P);}(2)(44)设有如下定义:inta=1,b=2,c=3,d=4,m=2,n=2:则执行表达式:(m=a>b)&&(n=c>d)后,n的值为A)1B)2C)3D)0(3)(45)在执行以下程序时,为了使输出结果为:t=4,则给a和b输入的值应满足的条件是A)a>bB)aa>bmain(){ints,t,a,b;scanf("%d,%d",&a,&b);s=1;t=1;if(a>0)s=s+1;if(a>b)t=s+t;elseif(a==b)t=5;elset=2*s;printf("t=%dn",t);}(4)(46)以下程序的输出结果是A)x=4B)x=8C)x=6D)x=12main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;n}printf("x=%dn",x);}(1)(47)以下程序运行后,输出结果是A)1234567B)7654321C)1711717D)7177171#inchude#inchudefun(char*w,intn){chart,*s1,*s2;s1=w:s2=w+n-1;while(s1,则输出结果为:A)m=3B)m=2C)m=1D)m=1main(){intm,n;printf("Enterm,n;");scanf("%d%d",&m,&n):while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%dn",m);}(3)(49)以下程序运行后,如果从键盘上输入:book<回车>book<空格><回车>则输出的结果是A)*8B)#9C)#6D)*9n#includemain(){chara1[80],a2[80],*s1=a1,*s2=a2;gets(s1);gets(s2);if(!strcmp(s1,s2))printf("*");esleprintf("#");printf("%d/n",strlen(strcat(s1,s2)));}(1)(50)以下程序运行后,输出结果是A)10000B)10010C)00110D)10100main(){inty=18,i=0,j,a[8];do{a[i]=y%2;i++y=y/2;}while(y>=1)for(j=i-1;j>=0;j--)printf("%d",a[j];printf("n");}二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡上【1】-【20】序号上,答在试卷上不得分。(2)(1)DOS中的自动批处理文件的全名是【1】。(3)(2)在DOS启动盘中,除COMMAND.COM外,还有两个必备的系统文件,它们是MSDOS.SYS(或IBMDOS.COM)与【2】。(4)(3)在DOS下,要将当前目录中AB.TXT文件设置为只读属性,应该使用的完整命令行是【3】。(5)(4)在DOS下,要查看当前目录中所有批处理文件的总字节数,应该使用的完整命令行是【4】。(6)(5)计算机病毒除有破坏性、潜伏性和激发性外,还有一个最明显的特性是【5】。(7)(6)若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【6】:.chara[10],b;scanf("a=%sb=%c",a,&b);:.(8)(7)下面程序的输出结果是【7】ncharb[]="ABCD";main(){char*chp;for(chp=b;*chp:chp+=2)printf("%s",chp);printf("n");(1)(8)下面程序输出的结果是【8】#defineMAX3inta[MAX];main(){fun1();fun2(a);printf("n");}fun1(){intk,t=0;for(k=0;k<MAX;K++,t++)a[k]=t+t;}fun2(intb[]){intk;for(k=0;k<NAX;k++)printf("%d",*(b+K));}(2)(9)以下程序输出的是【9】main(){inta[10]={19,23,44,17,37,28,49,36},*p; p=a;printf("%dn",(p+=3)[3]);}(3)(10)以下程序输出的是【10】main(){inti=3,j=2;char*a="DCBA";printf("%c%cn",a[i],a[j]);}(4)(11)以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。exchange(int*x,int*y){intt;t=*y;*y=【11】;*x=【12】;}(5)(12)若以下定义和语句,则sizeof(a)的值是【13】,而sizeof(b)的值是【14】nstruct{intday;charmouth;intyear;}a,*b;b=&a;(1)(13)以下fun函数的功能是:累加数组元数中的值.n为数组中元素的个数,累加的和值放入x所指的存储单元中,请填空.fun(intb[],intn,int*x){intk,r=0;for(k=0;kFILE*fp;main(){inti,j;if((fp=fopen(【19】,"wb"))==NULL)exit(0);for(i=0;i<10;i++){scanf("%d",&j);fwrite(&j,sizeof(int),1,【20】);}fclose(fp);}〖完〗n1999年4月基础知识知识和C语言程序设计答案及评分标准一.选择((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)(1)B(2)B(3)D(4)D(5)A(6)A(7)B(8)B(9)D(10)C(11)B(12)A(13)A(14)D(15)C(16)C(17)A(18)D(19)D(20)D(21)D(22)C(23)B(24)B(25)B(26)C(27)A(28)D(29)C(30)C(31)D(32)C(33)A(34)C(35)C(36)D(37)C(38)B(39)B(40)C(41)A(42)A(43)C(44)B(45)C(46)B(47)C(48)C(49)B(50)B二.填空题(每空2分,共40分)(1)【1】AUTOEXEC.BAT(2)【2】IO.SYS或IBMBIO.COM(3)【3】ATTRIBAB.TXT+RAB.TXT(4)【4】DIR*.BAT或DIR*.BATP或DIR*.BAT/W或DIR*.BAT/W/P或*.BAT/P/W(5)【5】传染性或传播性(6)【6】a=1234b=5A或a=1234b=5(7)【7】ABCDCD(8)【8】024(9)【9】49(10)【10】AB(11)【11】*X(11)12T(12)【13】5(12)142(13)【15】r+b[k]或b[k]或*(b+k)+r(13)【16】*x(14)【17】structlist*next(14)【18】intdata说明:以上两个答案(17和18)次序可以颠倒.(15)【19】"bi.dat"(15)【20】fpn全国计算机等级考试二级笔试试卷基础部分和C语言程序设计(考试时间120分钟,满分100分)1999年9月一、选择题((1)-(40)每个选项1分,(41)-(50)每个选项2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应的位置上,答在试卷上不得分。(1)(1)十进制数1385转换成十六进制数为A) 568B) 569C) D85D) D55(2)(2)下列叙述中正确的是A) 计算机病毒只能传染给可执行文件B) 计算机软件是指存储在软盘中的程序C) 计算机每次启动的过程之所以相同,是因为RAM中的所有信息在关机后不会丢失D) 硬盘虽然装在主机箱内,但它属于外存(3)(3)一个字长的二进制位数是A) 8B) 16C) 32D) 随计算机系统而不同的(4)(4)CPU主要由运算器与控制器组成,下列说法中正确的是A) 运算器主要负责分析指令,并根据指令要求作相应的运算B) 控制器主要完成对数据的运算,包括算术运算和逻辑运算C) 控制器主要负责分析指令,并根据指令要求作相应的运算D) 控制器直接控制计算机系统的输入与输出操作(5)(5)下列叙述中正确的是A) 将数字信号变换成便于在模拟通信线路中传输的信号称为调制B) 以原封不动的形式将来自终端的信息送入通信线路称为调制解调C) 在计算机网络中,一种传输介质不能传送多路信号D) 在计算机局域网中,只能共享软件资源,而不能共享硬件资源(6)(6)各种网络传输介质A) 具有相同的传输速率和相同的传输距离B) 具有不同的传输速率和不同的传输距离C) 具有相同的传输速率和不同的传输距离D) 具有不同的传输速率和相同的传输距离(7)(7)多媒体计算机系统的两大组成部分是A) 多媒体功能卡和多媒体主机B) 多媒体通信软件和多媒体开发工具C) 多媒体输入设备和多媒体输出设备D) 多媒体计算机硬件系统和多媒体计算机软件系统(8)(8)n按通信距离划分,计算机网络可以分为局域网和广域网。下列网络中属于局域网的是A) InternetB) CERNETC) NovellD) CHINANET(1)(9)在Windows中,启动应用程序的正确方法是A) 用鼠标双击该应用程序图标B) 将该应用程序窗口最小化成图标C) 将该应用程序窗口还原D) 将鼠标指向该应用程序图标(2)(10)在Windows中,终止应用程序执行的正确方法是A) 用鼠标双击应用程序窗口左上角的控制菜单框B) 将应用程序窗口最小化成图标C) 用鼠标双击应用程序窗口右上角的还原按钮D) 用鼠标双击应用程序窗口中的标题栏(3)(11)DOS控制键Ctrl+Alt+Del的功能为A) 删除一个字符并退格B) 暂停标准输出设备的输出C) 热启动D) 终止当前操作(4)(12)设当前盘为C盘,为了将A盘当前目录中所有扩展名为.PAS的文件改成扩展名为.P,应使用的DOS命令为A) RENA:*.PASA:*.PB) RENA:*.PAS*.PB) RENA:.PASA:.PD) RENA:.PAS.P(5)(13)设当前盘为C盘,其根目录下有两个子目录D1与D2,且当前目录为D1,若要进入子目录D2,正确的DOS命令为A) CDD2B) CDD2C) CDD2D) CDD1D2(6)(14)设当前盘为A盘,要将B盘当前目录下的两个文件A.TXT与X.TXT连接后以文件名Y.TXT存放到A盘的当前目录中,正确的DOS命令为A) COPYA.TXT+X.TXTA:Y.TXTB) COPYB:A.TXT+X.TXTA:Y.TXTB) COPYB:A.TXT+B:X.TXT>Y.TXTD) COPYB:A.TXT+B:X.TXTY.TXT(7)(15)下列DOS命令中正确的是A) RENUSERA.TXTB.TXTB) CDC) TYPE*.TXTD) MD(8)(16)以下选项中属于C语言的数据类型是A) 复数型B) 逻辑型C) 双精度型D) 集合型(9)(17)在C语言中,不正确的int类型的常数是A) 32768B) 0C) 037D) 0xAF(10)(18)语句:printf("%d",(a=2)&&(b=-2);的输出结果是A) 无输出B) 结果不确定C) -1D) 1(11)(19)下列描述中不正确的是A) 字符型数组中可以存放字符串B) 可以对字符型数组进行整体输入、输出C) 可以对整型数组进行整体输入、输出D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值n(1)(20)设有如下定义:intx=l,y=-1;,则语句:printf("%dn",(x--&++y));的输出结果是A) 1B) 0C) -1D) 2(2)(21)当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A) c=b=a;B) (a=c) ‖(b=c) ;C) (a=c) &&(b=c);C) a=c=b;(3)(22)以下程序的输出结果是A) 10192B) 9876C) 10990D) 101091main(){intx=10,y=10,I;for(i=0;x>8;y=++i)printf("%d,%d",x--,y);}(4)(23)以下程序的输出结果是A) 52B) 51C) 53D) 97main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2)printf("%d",p[i]);}(5)(24)以下程序的输出结果是A)6B) 6789C) '6'D) 789main(){chara[10]={'1','2','3','4','5','6','7','8','9',0},*p;inti;i=8;p=a+I;printf("%sn",p-3);}(6)(25)以下程序的运行结果是A) 运行后报错B) 66C) 612D) 55#include"stdio.h"main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12,};int*p=a+5,*q=NULL;*q=*(p+5);printf("%d%dn",*p,*q);}n(1)(26)以下说法中正确的是A) #define和printf都是C语句B) #define是C语句,而printf不是C) printf是C语句,但#define不是D) #define和printf都不是C语句(2)(27)语句:printf("%dn",12&012);的输出结果是A) 12B) 8C) 6D) 012(3)(28)能正确表示a和b同时为正或同时为负的逻辑表达式是A) (a>=0‖b>=0)&&(a<0‖b<0)B) (a>=0&&b>=0)&&(a<0&&b<0)C) (a+b>0)&&(a+b<=0)D) a*b>0(4)(29)以下程序的输出结果是A) 20B) 31C) 321D) 210main(){intn=4;while(n--)printf("%d",--n);}(5)(30)若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是A) p+1B) a+1C) a++D) ++p(6)(31)以下程序的输出结果是A) 17,021,0x11B) 17,17,17B) 17,0x11,021D) 17,21,11main(){intk=17;printf("%d,%o,%xn",k,k,k);}(7)(32)以下程序的输出结果是A) -11B) 01C) 10D) 00main(){inta=-1,b=1,k;if((++a<0)&&!(b--<=0))printf("%d%dn",a,b);elseprintf("%d%dn",b,a);}(8)(33)若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A) *p=&a;scanf("%ld",p);nB) p=(long*)malloc(8);scanf("%ld",p);C) scanf("%ld",p=&a);D) scanf("%ld",&a);(1)(34)以下选项中,能定义s为合法的结构体变量的是A) typedefstructabcB) struct{doublea;{doublea;charb[10];charb[10];}s;}s;C) structABCD) typedefABC{doublea;{doublea;charb[10];charb[10];}}ABCs;ABCs;(2)(35)若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是A) t[2][0]B) t[2][2]C) t[l][2]D) t[2][l]intt[3][3],*pt([3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];(3)(36)下面程序把数组元素中的最大值放入a[0]中。则在if语句中的条件表达式应该是A) p>aB) *p>a[0]C) *p>*a[0]D) *p[0]>*a[0]main(){inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,I;for(i=o;i<10;i++,p++)if(________)*a=*p;printf("%d",*a);}(4)(37)以下程序的输出结果是A) ihgfedcbaB) abcdefghiC) abcdedebaD) ihgfefghi#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x0)fun(k-1);printf("%d",k);}n(1)(42)以下程序的输出结果是A) 699B) 669C) 61515D) 6615intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);return(d);}main(){inta=3;printf("%dn",fun(a+fun(d)));}(2)(43)以下程序的输出结果是A) 123456780B) 123456780C) 12345678D) 147main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}(3)(44)以下程序的输出结果是A) 1B) 4C) 7D) 5#includeinta[3][3]={1,2,3,4,5,6,7,8,9,},*p;main(){p=(int*)malloc(sizeof(int));f(p,a);printf("%dn",*p);}f(int*s,intp[][3]){*s=p[1][1];}(4)(45)以下程序的输出结果是A) 9B) 6C) 36D) 18#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%dn",c);}n(1)(46)以下程序的输出结果是A)4211B) 0008C) 4678D) 8888main(){char*s="12134211";intv[4]={0,0,0,0},k,i;for(k=0;s[k];k++){switch(s[k]){case'1':i=0;case'2':i=1;case'3':i=2;case'4':i=3;}v[i]++;}for(k=0;k<4;k++)printf("%d",v[k]);}(2)(47)以下程序的输出结果是A) AfghdEFGB) AbfhdC) AfghdD) Afgd#includemain(){char*p1,*p2,str[50]="ABCDEFG";p1="abcd";p2="efgh";strcpy(str+1,p2+1);strcpy(str+3,p1+3);printf("%s",str);}(3)(48)以下程序的输出结果是A) #*#*#B) #####C) *****D) *#*#*main(){inti;for(i=1;i<6;i++){if(i%2){printf("#");continue;}printf("*");}printf("n");}(4)(49)若有以下定义和语句:doubler=99,*p=&r;*p=r;n则以下正确的叙述是A) 以下两处的*p含义相同,都说明给指针变量p赋值B) 在"doubler=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元C) 语句"*p=r;"把变量r的值赋给指针变量pD) 语句"*p=r;"取变量r的值放回r中(1)(50)以下程序的输出结果是A) 编译不通过,无输出B) acegC) acegiD) abcdefghimain(){inti;for(i='A';i<'I';i++,i++)printf("%c",i+32);printf("n");}二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。(2)(1)DOS命令分为内部命令与外部命令,PATH命令是【1】 命令。(3)(2)设当前盘为A盘,当前目录为XY,A盘上的一个文件QR.C在当前目录下的子目录W中。现已将A盘的当前目录改为DXY,当前盘改为C盘,如果需指定A盘上的该文件应写成【2】 。(4)(3)为了得到XCOPY命令的在线帮助,可使用的DOS命令文件一为 【3】 。(5)(4)在DOS系统下,代表键盘与显示器的设备文件名为 【4】 。(6)(5)在DOS系统下,可以直接执行的文件的扩展名除.FXE外,还有两个是 【5】 。(6)若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【6】 。intb,c;floata;scanf("%f,%d,c=%d",&a,&b,&c);...(7)下列程序的输出结果是 【7】 。#includemain(){charb[30],*chp;strcpy(&b[0],"CH");strcpy(&b[1],"DEF");strcpy(&b[2],"ABC");printf("%sn",b);n}(8)下列程序的输出结果是 【8】 。intt(intx,inty,intcp,intdp){cp=x*x+y*y;dp=x*x-y*y;}main(){inta=4,b=3,c=5,d=6;t(a,b,c,d);printf("%d%dn",c,d);}(9)下列程序中字符串中各单词之间有一个空格,则程序的输出结果是 【9】 。#includemain(){charstrl[]="Howdoyoudo",*p1=strl;strcpy(strl+strlen(strl)/2,"esshe");printf("%sn",pl);}(1)(10)以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。main(){floatx[1000],sum=0.0,ave,a;intn=0,i;printf("Entermark:n");scanf("%f",&a);while(a>=0.0&&n<1000){sum+ 【10】 ;x[n]= 【11】 ;n++;scanf("%f",&a);}ave= 【12】 ;printf("Output:n");printf("ave=%fn",ave);for(I=0;Imain(){FILE*fp;charch,fname[32];intcount=0;printf("Inputthefilename:");scanf("%s",fname);if((fp=fopen( 【16】 ,"w+"))==NULL){printf("Can'topenfile:%sn",fname);exit(0);}printf("Enterdata:n");while((ch=getchar())!="#"){fputc(ch,fp);count++;}fprintf( 【17】 ,"n%dn",count);fclose(fp);}(2)(13)以下函数creatlist用来建立一个带头节点的单链表,链表的结构如下图所示,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回,链表最后一个节点的next域放入NULL,作为链表结束标志。data为字符型数据域,next为指针域。读入时字符以#表示输入结束(#不存入链表)。请填空。structnode{chardata;structnode*next;};... 【18】 creatlist(){structnode*h,*s,*r;charch;h=(structnode*)malloc(sizeof(structnode));r=h;ch=getchar();{s=(structnode*)malloc(sizeof(structnode));s->data= 【19】 ;r->next=s;r=s;nch=getchar();}r->next= 【20】 ;returnh;}1999年9月全国计算机等级考试二级笔试答案C语言一、选择题((1)--(40)题每题1分,(41)--(50)题每题2分,共60分。(1)B(2)D(3)D(4)D(5)A(6)B(7)D(8)C(9)A(10)A(11)C(12)B(13)C(14)D(15)B(16)C(17)A(18)D(19)C(20)B(21)C(22)D(23)C(24)B(25)A(26)D(27)B(28)D(29)A(30)C(31)D(32)C(33)A(34)B(35)C(36)B(37)(38)(39)(40)(41)(42)C(43)C(44)D(45)C(46)B(47)D(48)A(49)D(50)B二、填空题(每空2分,共40分)(1)内部(2)A:XYWOR.C(3)XCOPY/?或XCOPY/H(4)CON(5)COM和.BAT(6)5.0,4,c=3(7)CDABC(8)56(9)Howdesshe(10)=a(11)a(12)sum/n(13)x[i]>ABC.TXTC)COPYABC.TXT+XYZ.TXT与COPYXYZ.TXT+ABC.TXTD)TYPE*.FOR>CON与COPY*.FORCON(2)(11)设当前目录为D:BB,现要把D:AA目录下首字符是A的文本文件全部删除,应该使用命令A)DELA*.TXTB)DELAAA.TXTC)DELAAA*.TXTD)DELAAA?.TXT(3)(12)在Windows中,启动应用程序的正确方法是A)用鼠标指向该应用程序图标B)将该应用程序窗口最小化成图标B)将该应用程序窗口还原D)用鼠标双击该应用程序图标(4)(13)在Windows中,终止应用程序执行的正确方法是A)将该应用程序窗口最小化成图标B)用鼠标双击应用程序窗口右上角的还原按钮C)用鼠标双击应用程序窗口中的标题栏D)用鼠标双击应用程序窗口左上角的控制菜单框(5)(14)在微机系统中,对输入输出设备进行管理的基本程序模块(BIOS)存放在A)RAM中B)ROM中C)硬盘中D)寄存器中(6)(15)使计算机病毒传播范围最广的媒介是A)硬磁盘B)软磁盘C)内部存储器D)互联网(7)(16)设有intx=11;则表达式(x++*1/3)的值是A)3B)4C)11D)12(8)(17)下列程序的输出结果是A)3B)3.2C)0D)3.07main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%dn",d*y);}(9)(18)下列程序执行后的输出结果是(小数点后只写一位)A)666.06.0B)666.76.7C)666.06.7D)666.76.0nmain(){doubled;floatf;lingl;inti;i=f=1=d=20/3;printf("%d%ld%f%fn",i,l,f,d);}(1)(19)下列变量定义中合法的是A)short_a=1-.le-1;B)doubleb=1+5e2.5;C)longdo=0xfdaL;D)float2_and=1-e-3;(2)(20)设intx=1,y=1;表达式(!x||y--)的值是A)0B)1C)2D)-1(3)(21)与y=(x>0?1:x<0?-1:0);的功能相同的if语句是A)if(x>0)y=1;B)if(x)elseif(x<0)y=-1;if(x>0)y=1;elsey=0;elseif(x<0)y=-1;elsey=0;C)y=-1D)y=0;if(x)if(x>=0)if(x>0)y=1;if(x>0)y=1;elseif(x==0)y=0;elsey=-1;elsey=-1;(4)(22)以下循环体的执行次数是A)3B)2C)1D)0main(){inti,j;for(i=0,j=1;i<=j+1;i+=2,j--)printf("%dn",i);}(5)(23)以下叙述正确的是A)do-while语句构成的循环不能用其它语句构成的循环来代替。B)do-while语句构成的循环只能用break语句退出。C)用do-while语句构成的循环,在while后的表达式为非零时结束循环。D)用do-while语句构成的循环,在while后的表达式为零时结束循环。(6)(24)下列程序执行后的输出结果是A)GB)HC)ID)Jmain(){intx='f';printf("%cn",'A'+(x-'a'+1));}(7)(25)执行下面的程序段后,变量k中的值为A)不定值B)33C)30D)10nintk=3,s[2];s[0]=k;k=s[1]*10;(1)(26)若已定义:inta[]={0,1,2,3,4,5,6,7,8,9],*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用上A)a[p-a]B)*(&a[i])C)p[i]D)a[10](2)(27)下列程序执行后的输出结果是A)6B)7C)8D)9voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%dn,b[0]);}(3)(28)下列程序的运行结果是A)a=%2,b=%5B)a=2,b=5C)a=d,b=dD)a=%d,b=%d#includemain(){inta=2,c=5;printf("a=%d,b=%dn",a,c);}(4)(29)下列程序执行后的输出结果是A)3B)6C)9D)随机数main(){inta[3][3],*p,i;p=&a[0][0];for(i=p;i<9;i++)p[i]=i+1;printf("%dn",a[1][2]);}(5)(30)设有数组定义:chararray[]="China";则数组array所占的空间为A)4个字节B)5个字节C)6个字节D)7个字节(6)(31)下列程序的输出结果是A)4B)6C)8D)10intb=2;intfunc(int*a){b+=*a;return(b);}nmain(){inta=2,res=2;res+=func(&a);printf("%dn",res);}(1)(32)在以下四组中,每组有两个分别运算的函数,运算结果相同的是A)4B)2C)2D)0main(){inti,j,m=0,n=0;for(i=p;i<2;i++)for(j=0;j<2;j++)if(j>=i)m=1;n++;printf("%dn",n);}(2)(33)下列程序的输出结果是A)5B)6C)7D)8structabc{inta,b,c;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0],a+s[1],b;printf("%dn",t);}(3)(34)设intb=2;表达式(b>>2)/(b>>1)的值是A)0B)2C)4D)8(4)(35)在C程序中,可把整型数以二进制形式存放到文件中的函数是A)fprintf函数B)fread函数C)fwrite函数D)fputc函数(5)(36)下列程序执行后的输出结果是A)-32767B)FFFEC)-1D)-32768main(){charx=0xFFFF;printf("%dn",x--);}(6)(37)若有定义:floatw;inta,b;则合法的switch语句是A)switch(w)B)switch(a);{case1.0:printf("*n");{case1printf("*n");case2.0:printf("**n");case2printf("**n");}}C)switch(b)D)switch(a+b);n{case1:printf("*n");{case1:printf("*n");default:printf("n");case2:printf("**n");case1+2:printf("**n");default:printf("n");}}(1)(38)以下程序段的执行结果是A)a=12y=12B)a=12y=12a=14y=16a=16y=28a=16y=20a=18y=24C)a=12y=12D)a=12y=12a=14y=26a=14y=44inta,y;a=10;y=0;do{a+=2;y+=a;printf("a=%dy=%dn",a,y);if(y>20)break;{while(a=14);...(2)(39)若有以下调用语句,则不正确的fun函数的首部是A)voidfun(intm,intx[])B)voidfun(ints,inth[41])C)voidfun(intp,int*s)D)voidfun(intn,inta)main(){…inta[50],n;…fun(n,&a[9]);…}(3)(40)语句printf("abre'hi'y\boun");的输出结果是A)abre'hi'y\bouB)abre'hi'ybouC)re'hi'youD)abre'hi'ybou(说明:'b'是退格符)(4)(41)请选出正确的程序段nA)int*p;B)int*s,k;scanf("%d",p);*s=100;……C)int*s,k;D)int*s,k;char*p,c;char*p,e;s=&k;s=&k;p=&c;p=&c;*p='a';s=p;…*s=1;…(1)(42)已知指针p的指向如下图所示,则执行语句*--p;后*p的值是A)30B)20C)19D)29a[0]a[1]a[2]a[3]a[4]1020304050(2)(43)设已有定义:char*st="howareyou";下列程序段中正确的是A)chara[11],*p;strcpy(p=a+1,&st[4]);B)chara[11];strcpy(++a,st);C)chara[11];strcpy(a,st);D)chara[],*p;strcpy(p=&a[1],st+2);(3)(44)下列程序执行后的输出结果是A)you&neB)youC)meD)errmai(){chararr[2][4];strcpy(arr,"you");strcpy(arr[1],"me");arr[0][3]='&';printf("%sn",arr);}(4)(45)下列程序执行后的输出结果是A)helloB)helC)hloD)hlmvoidfunc1(inti);voidfunc2(inti);charst[]="hello,friend!";voidfunc1(inti){printf("%c",st[i]);if(i<3){i+=2;func2(i);}}voidfunc2(inti)n{printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){inti=0;func1(i);printf("n");}(1)(46)假定下列程序的可执行文件名为prg.exe,则在该程序所在的子目录下输入命令行:prghellogood<回车>后,程序的输出结果是A)hellogoodB)hgC)helD)hellogoodmain()(intargc,char*argv[]){inti;if(argc<-0)return;for(i=1;inext=&b;D)(*p).next=q;structnode{chardata;structnode*next;{a,b,*p=&a,*q=&b;datanextdatanext5↑pa↑qb9o(4)(49)变量a所占内存字节数是A)4B)5C)6D)8unionU{charst[4];inti;longl;};nstructA{intc;unionUu;}a;(1)(50)执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是A)123,456,789B)1,456,789C)1,23,456,789D)1,23,456main(){chars[100];intc,i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%sn",c,i,s);}二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡上[1] ̄[20]序号的横线上,答在试卷上不得分。(2)(1)计算机网络按通信距离来划分,可分为局域网和广域网。因特网属于[1]。(3)(2)当前盘是C,确保在D盘的根目录下建立一个子目录USER的一条DOS命令是[2]。(4)(3)要将当前盘当前目录中所有扩展名为.TXT的文件内容显示在屏幕上的DOS命令是[3]。(5)(4)DOS命令分为内部命令和外部命令,CHKDSK命令是[4]命令。(6)(5)在Windows中,为了终止一个应用程序的运行,首先单击该应用程序窗口中的控制菜单框,然后在控制菜单中单击[5]命令。(7)(6)设有以下变量定义,并已赋确定的值charw;intx;floaty;doublez;则表达式:w*x+z-y所求得的数据类型为[6]。(8)(7)若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式[7]。(9)(8)若有如下图所示五个连续的int类型的存储单元并赋值如下图,a[0]的地址小于a[4]的地址。p和s是基类型为int的指针变量。请对以下问题进行填空。a[0]a[1]a[2]a[3]a[4]22334455661,若p已指向存储单元a[1]。通过指针p,给s赋值,使s指向最后一个存储单元a[4]的语句是[8]。2,若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是[9]。(10)(9)下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。intadd(intx,inty,[10]z){[11]=x+y;}(11)(10)下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。#includenmain(){inta,b,c,i;a=c=0;for(i=0;i<10;i+=2){a+=i;[12];c+=b;}printf("偶数之和=%dn",a);printf("奇数之和=%dn",c-11);}(1)(11)下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。#includemain(){inti,j;for(i=0;[13];i++){j=i*10+6;if([14])continue;printf("%d",j);}}(2)(12)下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。#include#includemain(){chara[]="clanguage",t;inti,j,k;k=strlen(a);for(i=0;i<=k-2;i+=2)for(j=i+2;j<=k;[15])if([16]){t=a[i];a[i]=a[j];a[j]=t;}puts(a);printf("n");}(3)(13)以下程序的运行结果是[17]n#includemain(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%dn",p);}func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;returnm;}(1)(14)以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。#includemain(){char*p,s[6];intn;p=s;gets(p);n=*p-'0';while([18]!='')n=n*8+*p-'0';printf("%dn",n);}(2)(15)函数voidfun(float*sn,intn)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。voidfun(float*sn,intn){floats=0.0,w,f=-1.0;inti=0;for(i=0;i<=n;i++){f=[19]*f;w=f/(2*i+1);s+=w;}[20]=s;}n「完」全国计算机等级考试二级笔试试卷参考答案2000年4月C语言一、选择题((1)--(40)题每题1分,(41)--(50)题每题2分,共60分。(1)A(2)C(3)C(4)D(5)D(6)A7)C(8)C(9)D(10)B(11)C(12)D(13)D(14)B(15)D(16)A(17)C(18)A(19)A(20)B(21)A(22)C(23)D(24)A(25)A(26)D(27)A(28)B(29)B(30)C(31)B(32)A(33)B(34)D(35)A(36)C(37)D(38)B(39)C(40)C(41)C(42)B(43)A(44)A(45)C(46)B(47)B(48)B(49)C(50)D二、填空题(每空2分,共40分)(1)广域网(2)MDD:USER(3)COPY*.TXTCON(4)外部(5退出(或关闭)(6)double(7)x==0||x==1(8)s=p+3(9)2(10)int*(11)*z(12)b=i+1(13)i<10(14)i%3!=0(15)j+=2(16)a[i]>a[j](17)8,17(18)*(++p)(19)–1(20)*snn全国计算机等级考试二级笔试试卷基础部分和C语言程序设计(考试时间:120分钟,满分100分)2000年9月一、选择题((1)--(40)每小题1分,(41)--(50)每小题2分,共60分下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题卡相应位置上涂黑,答在试卷上不得分。(1)(1)下列电子邮件地址中正确的是(其中□表示空格)A)Malin&ns.cnc.ac.cnB)malin@ns.cac.ac.cnC)Lin□Ma&ns.cnc.ac.cnD)Lin□Ma@ns.cnc.ac.cn(2)(2)下列说法中正确的是A)为了使用Novell网提供的服务,必须采用FTP协议B)为了使用Internet网提供的服务,必须采用TELNET协议C)为了使用Novell网提供的服务,必须采用TCP/IP协议D)为了使用Internet网提供的服务,必须采用TCP/IP协议(3)(3)下列说法中不正确的是A)调制解调器(Modem)是局域网络设备B)集线器(Hub)是局域网络设备C)网卡(NIC)是局域网络设备D)中继器(Repeater)是局域网络设备(4)(4)十进制数397的十六进制值为A)18DB)18EC)277D)361(5)(5)下列说法中不正确的是A)CD-ROM是一种只读存储器但不是内存储器B)CD-ROM驱动器是多媒体计算机的基本部分C)只有存放在CD-ROM盘上的数据才称为多媒体信息D)CD-ROM盘上最多能够存储大约650兆字节的信息(6)(6)Windows应用环境中鼠标的拖动操作不能完成的是A)当窗口不是最大时,可以移动窗口的位置B)当窗口最大时,可以将窗口缩小成图标C)当窗口有滚动条时可以实现窗口内容的滚动D)可以将一个文件移动(或复制)到另一个目录中去(7)(7)从Windows中启动MS-DOS方式进入了DOS状态,如果想回到Windos状态,在DOS提示符下,应键入的命令为A)EXITB)QUITC)WIND)DOS-U(8)(8)要在WINDOWS标准窗口的下拉菜单中选择命令,下列操作错误的是A)用鼠标单击该命令选项nB)用键盘上的上下方向键将高亮度条移至该命令选项后再按回车键C)同时按下ALT键与该命令选项后括号中带有下划线的字母键D)直接按该命令选项后面括号中带有下划线的字母键(1)(9)ASCLL码(含扩展)可以用一个字节表示,则可以表示的ASCLL码值个数为A)1024B)256C)128D)8O(2)(10)字长为32位的计算机是指A)该计算机能够处理的最大数不超过232B)该计算机中的CPU可以同时处理32位的二进制信息C)该计算机的内存量为32MBD)该计算机每秒钟所能执行的指令条数为32MIPS(3)(11)在DOS系统中,下列文件名中非法的是A)ABCDEFG1B)ABCDEFG1.234C)ABCD_EFGD)ABCDEFG(4)(12)DOS系统启动后,下列文件中驻留内存的是A)CONFIG.SYSB)COMMAND.COMC)AUTOEXEC.BATD)MEM.EXE(5)(13)DOS下的“DIR*2”命令将列出当前目录下的A)所有名字末尾为字符2的非隐含文件和目录B)所有名字末尾为字符2的非隐含文件C)所有非隐含文件D)所有非隐含文件和目录(6)(14)软驱的盘符为A,A盘上只有一个目录XYZ,而XYZ下有若干子目录和文件,若想把A盘的所有内容复制到C盘根目录下,应使用的命令为A)COPYA:*.*C:B)COPYA:*.*C:*.*C)XCOPYA:*.*C:/SD)DISKCOPYA:C:(7)(15)若要将当前盘目录下的文件A.TXT连接在文件B.TXT后面,应使用的命令为A)COPYA.TXT>>B.TXTB)MOVEA.TXT>>B.TXTC)PATHA.TXT>>B.TXTD)TYPEA.TXT>>B.TXT(8)(16)若变量已正确定义并赋值,下面符合C语言语法的表达式是A)a:=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b(9)(17)C语言中运算对象必须是整型的运算符是A)%=B)/C)=D)〈=(10)(18)若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是A)1B)2C)2.0D)2.5(11)(19)若变量a、iI已正确定义,且i已正确赋值,合法的语句是A)a==1B)++i;C)a=a++=5;D)a=int(i);(12)(20)若有以下程序段,intc1=1,c2=2,c3;c3=1.0/c2*c1;n则执行后,c3中的值是A)0B)0.5C)1D)2(1)(21)有如下程序main0{inty=3,x=3,z=1;printf(“%d%dn”,(++x,y++),z+2);}运行该程序的输出结果是A)34B)42C)43D)33(2)(22)能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是A)a>=10ora<=0B)a>=0|a<=10C)a>=10&&a<=0D)a>=10‖a<=0(3)(23)有如下程序main0{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++case2:a++;b++}printf(“a=%d,b=%dn”,a,b);}该程序的输出结果是A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2(4)(24)有如下程序main0{floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf(“%fn”,y);}该程序的输出结果是A)0.000000B)0.250000C)0.500000D)1.000000(5)(25)有如下程序main0{inta=2,b=-1,c=2;if(a6){n--;printf(“%d”,n);}}该程序段的输出结果是A)987B)876C)8765D)9876(4)(29)设有说明语句:chara=’72’;则变量aA)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法(5)(30)有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5);该函数调用语句中,含有的实参个数是A)3B)4C)5D)有语法错(6)(31)有如下程序intrunc(inta,intb){return(a+b);}main0{intx=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%dn”,r);}n该程序的输出的结果是A)12B)13C)14D)15(1)(32)有如下程序段int*p,a=10,b=1p=&a;a=*p+b;执行该程序段后,a的值为A)12B)11C)10D)编译出错(2)(33)对于基类型相同的两个指针变量之间,不能进行的运算是A)2)return(fib(n-1)+fib(n-2));elsereturn(2);}main0{printf(“%dn”,fib(3));该程序的输出结果是A)2B)4C)6D)8(5)(36)在C语言中,函数的隐含存储类别是A)autoB)staticC)externD)无存储类别(6)(37)有如下程序#defineN2#defineMN+1#defineNUM2*M+1#main(){inti;for(i=1;i<=NUM;i++)printf(“%dn”,i);}该程序中的for循环执行的次数是nA)5B)6C)7D)8(1)(38)有以下函数charfun(char*p){returnp;}该函数的返回值是A)无确切的值B)形参p中存放的地址值B)一个临时存储单元的地址D)形参p自身的地址值(2)(39)有如下程序段inta=14,b=15,x;charc=’A’;x=(a&&b)&&(c<’B’);执行该程序段后,x的值为A)tureB)falseC)0D)1(3)(40)若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是A)EOFB)0C)非零值D)NULL(4)(41)若有以下说明和定义fun(int*c){}main(){int(*a)()=fun,*b(),w[10],c;┆}在必要的赋值之后,对fun函数的正确调用语句是A)a=a(w);B)(*a)(&c);C)b=*b(w);D)fun(b);(5)(42)有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是A)*P+9B)*(P+8)C)*P+=9D)P+8(6)(43)有如下程序main0{intn[5]={0,0,0},i,k=2;for(i=0;inext;s->next=p;p->next=s;B)p=p->next;s->next=p->next;p->next=s;C)s->next=NULL;p=p->next;p->next=s;D)p=(*p).next;(*s).next=(*p).next;(*p).next=s;(1)(49)有如下程序main(){chars[]=”ABCD”,*P;for(p=s+l;p’’;j+=2)s=10*s+p[i][j]-‘0’;printf(“%dn”,s);}该程序的输出结果是A)69825B)63825C)6385D)693825二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡上[1]至[20]序号的横线上,答在试卷上不得分。(1)在DOS状态下,当执行当前盘目录中的程序A.EXE时,为了将本该在屏幕上显示的运行结果输出到文件A.DAT中,应使用的DOS命令为[1]。(2)在XCOPY、PATH、TREE三个DOS命令中,属于内部命令的是令是[2]。(3)设当前盘为C盘,为了将当前盘当前目录中第三个字符为X的所有文件同名复制到A盘的当前目录中,应使用的DOS命令为[3]。n(4)要将当前盘的目录ABC设置为当前目录,应使用的DOS命令为[4]。(5)计算机网络按通信距离划分为局域网与广域网,Novell网属于[5]。(6)以下程序的输出结果是[6]。main(){unsignedshorta=65536;intb;printf(“%dn”,b=a);}(7)若有定义:inta=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是[7]。c=(a-=(b-5));c=(a%11)+(b=3);(8)表示“整数x的绝对值大于5”时值为“真”的C语言表达式是[8]。(9)要使以下程序段输出10个整数,请填入一个整数。for(i=0;i<=[9];printf(“%dn”,i+=2));(1)(10)函数pi的功能是根据以下近似公式求π值:(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)现在请你在下面的函数中填空,完成求π的功能。#include“math.h”doublepi(longn){doubles=0.0;longi;for(i=1;i<=n;i++)s=s+[10];return(sqrt(6*s));}(2)(11)若输入字符串:abcde<回车>,则以下while循环体将执行[11]次。While((ch=getchar())==’e’)printf(“*”);(3)(12)以下函数用来求出两整数之和,并通过形参将结果传回,请填空。voidfunc(intx,inty,[12]z){*z=x+y;}(4)(13)若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是[13]。intw[10]={23,54,10,33,47,98,72,80,61},*p=w;(5)(14)设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部[14]。要求形参名为b。main(){doubles[10][22];intn;┆┆fun(s);┆n}(1)(15)以下程序的输出结果是[15]。voidfun(){staticinta=0;a+=2;printf(“%d”,a);}main(){intcc;for(cc=1;cc<4;cc++)fun()printf(“n”);}(2)(16)以下程序的输出结果是[16]。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(“%dn”,t);}(3)(17)若要使指针p指向一个double类型的动态存储单元,请填空。p=[17]malloc(sizeof(double));(4)(18)设有以下结构类型说明和变量定义,则变量a在内存所占字节数是[18]。Structstud{charnum[6];ints[4];doubleave;}a,*p;(5)(19)以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。Strcen(chara[],charb[]){intnum=0,n=0;while(*(a+num)!=[19])num++;while(b[n]){*(a+num)=b[n];num++;[20];}return(num);}2000年9月全国计算机等级考试二级笔试试卷答案一、选择题:(1)B(2)D(3)A(4)A(5)C(6)B(7)A(8)C(9)B(10)Bn(11)D(12)B(13)D(14)C(15)D(16)B(17)A(18)C(19)B(20)A(21)D(22)D(23)A(24)C(25)C(26)C(27)B(28)B(29)A(30)A(31)D(32)B(33)C(34)D(35)B(36)C(37)B(38)B(39)D(40)c(41)B(42)B(43)D(44)D(45)A(46)D(47)C(48)A(49)D(50)C二、填空题:[1]A.EXE>A.DAT或A>>A.DAT[2]PATH[3]COPY??X*.*A:[4]CDABC[5]局域网[6]0[7]3[8]x>5||x<-5[9]18[10]1.0/(i*i)[11]0[12]int*[13]P[5]或*(p+5)[14]voidfun(doubleb[][22])或voidfun(doubleb[0][22])或voidfun(double(*b)[22])[15]246[16]7[17](double*)[18]22[19]''或0[20]n++或n+=1或n=n+1n全国计算机等级考试二级笔试试卷基础部分和C语言程序设计(考试时间:120分钟,满分100分)2001年4月一、选择题((1)-(40)题每题1分,(41)-(50)题每题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)(1)计算机的存储器完整的应包括A)软盘、硬盘B)磁盘、磁带、光盘C)内存储器、外存储器D)RAM、ROM(2)(2)计算机中运算器的作用是A)控制数据的输入/输出B)控制主存与辅存间的数据交换C)完成各种算术运算和逻辑运算D)协调和指挥整个计算机系统的操作(3)(3)软磁盘处于写保护状态时,其中记录的信息A)绝对不会丢失B)不能被擦除,但能追加新信息C)不能通过写磁盘操作被更新D)不能以常规方式被删除,但可以通过操作系统的格式化功能被擦除(4)(4)光盘根据基制造材料和记录信息的方式不同,一般可分为A)CD、VCDB)CD、VCD、DVD、MP3C)只读光盘、可一次性写入光盘、可擦写光盘D)数据盘、音频信息盘、视频信息盘(5)(5)在计算机系统中,可执行程序是A)源代码B)汇编语言代码C)机器语言代码D)ASCII码(6)(6)计算机软件系统包括A)操作系统、网络软件B)系统软件、应用软件C)客户端应用软件、服务器端系统软件D)操作系统、应用软件和网络软件(7)(7)目前,一台计算机要连入Internet,必须安装的硬件是A)调制解调器或网卡B)网络操作系统C)网络查询工具D)WWW浏览器(8)(8)在多媒体计算机系统中,不能存储多媒体信息的是A)光盘B)磁盘C)磁带D)光缆(9)(9)要将当前盘当前目录下一个文本文件内容显示在屏幕上,正确的命令形式是A)TYPEa*.*B)TYPEabc.exeC)TYPEpro.c>PRND)TYPEabc.txt(10)(10)下列更改文件名的命令中正确的是A)RENA:file1C:F1B)RENAMEA:A:file1C:F1C)RENA:file1F1D)RENA:file1SUBF1(11)(11)已知A盘为DOS系统启动盘,只有A:DOS下有自动批处理文件,其中内容为:CDDOSMDUSERCDUSER由A盘启动DOS系统后,A盘的当前目录是A)DOSB)DOSUSERC)D)USERn(1)(12)MS-DOS是A)分时操作系统B)分布式操作系统C)单用户、单任务操作系统D)单用户、多任务操作系统(2)(13)在Windows操作系统中,不同文档之间互相复制信息需要借助于A)剪切板B)记事本C)写字板D)磁盘缓冲器(3)(14)在Windows操作系统中A)同一时刻可以有多个活动窗口B)同一时刻可以有多个应用程序在运行,但只有一个活动窗口C)同一时刻只能有一个打开的窗口D)DOS应用程序窗口与Windows应用程序窗口不能同时打开着(4)(15)下列叙述中正确的是A)所有DOS应用程序都可以在Windows操作系统中正确运行B)所有DOS应用程序都不能在Windows操作系统中正确运行C)大部分DOS应用程序可以在Windows操作系统中正确运行D)为DOS5.0以上版本操作系统编写的应用程序可以在Windows操作系统中正确运行(5)(16)下列叙述中正确的是A)C语言编译时不检查语法B)C语言的子程序有过程和函数两种C)C语言的函数可以嵌套定义D)C语言所有函数都是外部函数(6)(17)以下所列的C语言常量中,错误的是A)0xFFB)1.2e0.5C)2LD)‘72’(7)(18)下列选项中,合法的C语言关键字是A)VARB)cherC)integerD)default(8)(19)以下变量x.、y、z均为double类型且已正确赋值,不能正确表示数学式子的C语言表达式是A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z(9)(20)若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是A)-3B)9C)-12D)6(10)(21)设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为A)不定值B)4C)3D)1(11)(22)若变量已正确说明为float类型,要通过语句scanf(“%f%f%f”,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:A)10<回车>B)10.0,22.0,33.0<回车>22<回车>33<回车>C)10.0<回车>D)1022<回车>22.033.0<回车>33<回车>(12)(23)若执行以下程序时从键盘上输入9,则输出结果是A)11B)10C)9D)8Main0{intn;scanf(“%d”,&n);if(n++<10)printf(“%dn”,n);elseprintf(“%dn”,n--);}(13)(24)若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是nA)swich(a+b);B)switch(a*a+b*b){case1:y=a+b;break;{case3:case0:y=a-b;break;case1:y=a+b;break;}case3:y=b-a,break;}C)switchaD)switch(a-b){casec1:y=a-b;break{default:y=a*b;breakcasec2:x=a*d;breakcase3:case4:x=a+b;breakdefault:x=a+b;case10:case11:y=a-b;break;}}(1)(25)有以下程序段intk=0while(k=1)k++;while循环执行的次数是A)无限次B)有语法错,不能执行C)一次也不执行D)执行1次(2)(26)以下程序执行后sum的值是A)15B)14C)不确定D)0min(){inti,sum;for(i=1;i<6;i++)sum+=i;printf(“%dn”,sum);}(3)(27)有以下程序段intx=3do{printf(“%d”,x-=2);}while(!(--x));其输出结果是A)1B)30C)1-2D)死循环(4)(28)若变量c为char类型,能正确判断出c为小写字母的表达式是A)‘a’<=c<=‘z’B)(c>=‘a’)||(c<=‘z’)C)(‘a’<=c)and(‘z’>=c)D)(c>=‘a’)&&(c<=‘z’)(5)(29)以下所列的各函数首部中,正确的是A)voidplay(var:Integer,varb:Integer)B)voidplay(inta,b)C)voidplay(inta,intb)D)Subplay(aasinteger,basinteger)(6)(30)以下程序的输出结果是A)0B)29C)31D)无定值fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(5,2,a);printf(“%d”,a);}(7)(31)下列程序段的输出结果是nA)2143B)1212C)1234D)2112voidfun(int*x,int*y){printf(“%d%d”,*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf(“%d%d”,x,y);}(1)(32)下列程序的输出结果是A)非法B)a[4]的地址C)5D)3main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf(“%d”,*--p);}(2)(33)下列程序的运行结果是A)63B)36C)编译出错D)00voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x=&a,*y=&b;fun(x,y);printf(“%d%d”,a,b);}(3)(34)下面程序的输出结果是A)0B)1C)10D)9main(){inta[]={1,2,3,4,5,6,7,8,9,0,},*p;p=a;printf(“%dn”,*p+9);}(4)(35)当调用函数时,实参是一个数组名,则向函数传送的是A)数组的长度B)数组的首地址C)数组每一个元素的地址D)数组每个元素中的值(5)(36)设有以下说明语句structex{intx;floaty;charz;}example;则下面的叙述中不正确的是A)struct结构体类型的关键字B)example是结构体类型名C)x,y,z都是结构体成员名D)structex是结构体类型(6)(37)以下只有在使用时才为该类型变量分配内存的存储类说明是A)auto和staticB)auto和registerC)register和staticD)extern和register(7)(38)若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是A)EOFB)-1C)非零值D)NULL(8)(39)以下程序的输出结果是A)20B)21C)22D)23main(){inti,k,a[10],p[3];nk=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf(“%dn”,k);}(1)(40)以下程序的输出结果是A)1,5,9B)1,4,7C)3,5,7D)3,6,9main(){inti,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf(“%d,”,x[i][2-i]);}(2)(41)以下程序的输出结果是A)18B)19C)20D)21main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(“%dn”,s);}(3)(42)以下程序的输出结果是A)ABCDB)ABCDC)EFGD)EFGHFGHEFGJKIJKLKLIJOMmain(){charw[][10]={“ABCD”,”EFGH”,”IJKL”,”MNOP”},k;for(k=1;k<3;k++)printf(“%sn”,w[k]);}(4)(43)当执行下面的程序时,如果输入ABC,则输出结果是A)ABC6789B)ABC67C)12345ABC6D)ABC456789#include“stdio.h”#include“string.h”main(){charss[10]=“1,2,3,4,5”;gets(ss);strcat(ss,“6789”);printf(“%sn”,ss);}(5)(44)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROGABCDEFGHIJKL<回车>,则输出结果为A)ABCDEFGB)IJHLC)ABCDEFGHIJKLD)IJKLABCDEFGHmain(intargc,char*argv[])){while(--argc>0)printf(“%s”,argv[argc]);printf(“n”);}(6)(45)以下程序的输出结果是A)1B)2C)3D)4longfun(intn){longs;if(n==1||n==2)s=2;nelses=n-fun(n-1);returns;}main(){printf(“%ldn”,fun(3));}(1)(46)以下程序的输出结果是A)16B)2C)9D)1#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf(“dn”,a);}(2)(47)若定义了以下函数:voidf(……){……*p=(double*)malloc(10*sizeof(double));……}p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是A)double*pB)float**pC)double**pD)float*p(3)(48)以下程序的输出是A)10B)11C)51D)60structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};main(){p=aa;printf(“%dn”,++(p->x));}(4)(49)假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是A)free(q);p->next=q->next;B)(*p).next=(*q).next;free(q);C)q=(*q).next;(*p).next=q;free(q);D)q=q->next;p->next=q;p=p->next;free(p);834…………headdatanext↑p↑q(5)(50)以下程序的输出结果是A)0B)1C)2D)3main(){intx=0.5;charz=’a’;printf(“%dn”,(x&1)&&(z<’z’));}n二)填空题(每空2分,共40分)请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。(1)计算机机领域中,通常用英文单词“Byte”表示【1】。(2)在DOS环境下,自动批处理的文件名为【2】。(3)要将当前盘当前目录下所有扩展名为.TXT的文件内容在打印机上打印输出,应使用的单条DOS内部命令为【3】。(4)在Windows环境下,可以利用单击、双击、拖动这三种鼠标操作之一的【4】操作实现窗口的移动。(5)在Windows环境下,可以将窗口最小化为【5】。(6)以下程序的输出结果是【6】main(){inta=1,b=2;a=a+b;b=a-b;a=a-b;printf(“%d,%dn”,a,b);}(7)下列程序的输出结果是16.00,请填空。。main(){inta=9,b=2;floatx=【7】,y=1.1,z;z=a/2+b*x/y+1/2;printf(“%5.2fn”,z);}(8)用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*)【8】;(9)下列程序段的输出结果是【9】。main(){charb[]=”Hello,you”;b[5]=0;printf(“%sn”,b);}(10)下列程序段的输出结果是【10】。intn=’c’;switch(n++){default:printf(“error”);break;case‘a’:case‘A’:case‘b’:case‘B’:printf(“good”);break;case‘c’:case‘C’:printf(“pass”);case‘d’:case‘D’:printf(“warn”);}(11)以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量p的语句。voidfun(int*x,int*y){……}main(){inta=10,b=20;【11】;/定义变p*/p=fun;p(&a,&b);……}n(1)下列程序的输出结果是【12】。voidfun(int*n){while((*n)--);printf(“%d”,++(*n));}main(){inta=100;fun(&a);}(2)以下程序的输出结果是【13】。main(){intarr[]={30,25,20,15,10,5},*p=arr;p++;printf(“%dn”,*(p+3));}(3)以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。structst{charname[20];doublescore;};main(){structstex;printf(“exsize:%dn”,sizeof(【14】));}(4)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中。请填空。#include“stdio.h”FILE*fp;{charch;if((fp=fopen(【15】))==NULL)exit(0);while((ch=getchar())!=’@’)fputc(ch,fp);fclose(fp);}(5)若变量n中的值为24,则prnt函数共输出【16】行,最后一行有【17】个数。voidprnt(intn,intaa[]){inti;for(i=1;i<=n;i++){printf(“%6d”,aa[i]);if(!(i%5))printf(“n”);}printf(“n”);}(6)以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空。#defineN3#defineM4voidLineMax(intx[N][M]){inti,j,p;for(i=0;iCON(8)(8)设当前盘为C盘,C盘的当前目录为ABC。下列DOS命令中能正确执行的是A)MDB)MDA:C)MDABD)CDC:(9)(9)为了将C:USER中的文件FILE.TXT同名复制到A盘根目录下,下列DOS命令中能正确执行的是A)TYPEC:USERFILE.TXT>A:FILE.TXTB)TYPEC:USERFILE.TXTA:FILE.TXTC)COPYC:USERFILE.TXT>A:FILE.TXTD)COPYC:USERFILE.TXT(10)(10)在Windows下,当一个应用程序窗口被最小化后,该应用程序A)终止运行B)暂停运行C)继续在后台运行D)继续在前台运行(11)(11)在Windows环境下,下列操作中与剪贴板无关的是A)剪切B)复制C)粘贴D)删除(12)(12)在Windows环境下,实现窗口移动的操作是A)用鼠标拖动窗口中的标题栏B)用鼠标拖动窗口中的控制按钮C)用鼠标拖动窗口中的边框D)用鼠标拖动窗口中的任何部位(13)(13)一台计算机连入计算机网络后,该计算机A)运行速度会加快B)可以共享网络中的资源C)内存容量变大D)运行精度会提高(14)(14)不能作为计算机网络中传输介质的是A)微波B)光纤C)光盘D)双绞线(15)(15)下列各项中,不属于多媒体硬件的是nA)声卡B)光盘驱动器C)显示器D)多媒体制作工具(1)(16)在C语言中,合法的长整型常数是A)OLB)4962710C)324562&D)216D(2)(17)以下有4组用户标识符,其中合法的一组是A)ForB)4dC)f2_G3D)WORD-subDOIFvoidCaseSizeabcdefine(3)(18)以下选项中合法的字符常量是A)“B”B)‘10’C)68D)D(4)(19)假定x和y为double型,则表达式x=2,y=x+3/2的值是A)3.500000B)3C)2.000000D)3.000000(5)(20)以下合法的赋值语句是A)x=y=100B)d--;C)x+y;D)c=int(a+b);(6)(21)设正x、y均为整型变量,且x=10y=3,则以下语句的输出结果是pprintf(”%d,%dn”,x--,--y);A)10,3B)9.3C)9.2D)10.2(7)(22)x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是A)INPUTx、y、z;B)scanf(“%d%d%d”,&x,&y,&z);C)scanf(“%d%d%d”,x,y,z);D)read(“%d%d%d”,&x,&y,&z);(8)(23)以下程序的输出结果是main(){inta=3;printf(“%dn”,(a+a-=a*a));}A)–6B)12C)0D)-12(9)(24)设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值位为A)0B)1C)2D)3(10)(25)阅读以下程序:main(){intx;scanf(“%d”,&x);if(x--<5)printf(“%d”’x);elseprintf(“%d”’x++);}程序运行后,如果从键盘上输人5,则输出结果是A)3B)4C)5D)6(11)(26)假定w、x、y、z、m均为int型变量,有如下程序段:w=1;x=2;y=3;z=4;m=(w=0;i--)a[i]=10-i;printf(“%d%d%d”,a[2],a[5],a[8]);}A)258B)741C)852D)369(4)(39)以下数组定义中不正确的是A)inta[2][3];B)intb[][3]={0,1,2,3};C)intc[100][100]={0};D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};(5)(40)以下程序的输出结果是main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf(“%d%d%d%dn”,a[0][3],a[1][2],a[2][1],a[3][0];}A)0650B)1470C)5430D)输出值不定(6)(41)以下程序的输出结果是main(){charst[20]=“hellot\”;printf(%d%dn”,strlen(st),sizeof(st));}A)99B)520C)1320D)2020(7)(42)以下选项中,不能正确赋值的是A)chars1[10];s1=“Ctest”;B)chars2[]={‘C’,‘t’,‘e’,‘s’,‘t’};C)chars3[20]=“Ctest”;D)char*s4=“Ctestn”(8)(43)以下程序的输出结果是amovep(intp,int(a)[3],intn){inti,j;for(i=0;i<;i++)for(j=0;jx,(h[1],p)->y);}A)12B)23C)14D)32(1)(45)以下程序的输出结果是main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=10)break;if(b%3==1){b+=3;continue;}}printf(“%dn”,a);}A)101B)6C)5D)4(2)(46)以下程序的输出结果是unionmyun{struct{intx,y,z;}u;intk;}a;main(){a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf(%dn”,a.u.x);}A)4B)5C)6D)0(3)(47)以下程序的输出结果是inta,b;voidfun(){a=100;b=200;}main(){inta=5,b=7;fun();printf(“%d%dn”,a,b);}A)100200B)57C)200100D)75(4)(48)以下程序的输出结果是#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf(“%dn”,M(a+b,b+c,c+a));}A)19B)17C)15D)12(5)(49)整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是A)x||yB)x|yC)x&yD)x^y(6)(50)下面的程序执行后,文件testt.t中的内容是n#includevoidfun(char*fname.,char*st){FILE*myf;inti;myf=fopen(fname,“w”);for(i=0;i2);printf(“%dn”,j);}(9)(9)设有以下程序:main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序运行后,如果从键盘上输入1298;则输出结果为【9】。(10)(10)以下程序输出的最后一个值是【10】。intff(intn){staticintf=l;f=f*n;returnf;}main(){inti;nfor(I=1;I<=5;I++printf(“%dn”,ff(i));}(1)(11)以下函数的功能是:求x的y次方,请填空。doublefun(doublex,inty){inti;doublez;for(i=1,z=x;iPRNB)TYPE*.TXT>PRNC)COPY*.TXTPRND)COPY*.TXT>PRN(7)(7)将当前盘当前目录及其子目录中的全部文件(总量不足1.2MB)复制到一张空的A盘的根目录下,应该使用的DOS命令为A)XCOPY*.*A:/MB)XCOPY*.*A:/SC)XCOPY*.*A:/PD)XCOPY*.*A:/A(8)(8)在C盘根目录下执行PROMPT$p$g命令之后,DOS的提示符变为A)C:>B)C:>C)C>D)C:(9)(9)DOS命令"COPYCONDISP"中的CON代表A)子目录B)磁盘文件C)键盘D)显示器(10)(10)结构化程序设计所规定的三种基本控制结构是A)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数(11)(11)要把高级语言编写的源程序转换为目标程序,需要使用A)编辑程序B)驱动程序C)诊断程序D)编译程序(12)(12)英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为A)50B)66C)52D)68(13)(13)Windows环境下,PrintScreen键的作用是A)复制当前窗口到剪贴板B)打印当前窗口的内容C)复制屏幕到剪贴板D)打印屏幕内容(14)(14)在Windows环境下,为了终止应用程序的运行,应A)关闭该应用程序窗口B)最小化该应用程序窗口C)双击该应用程序窗口的标题栏D)将该应用程序窗口移出屏幕(15)(15)下列各带有通配符的文件名中,能代表文件XYZ.TXT的是nA)*Z.?B)X*.*C)?Z,TXTD)?.?(1)(16)若有定义:inta=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为A)1.4B)1C)2.0D)2(2)(17)若变量a是int类型,并执行了语句:a=‘A'+1.6;,则正确的叙述是A)a的值是字符CB)a的值是浮点型C)不允许字符型和浮点型相加D)a的值是字符‘A’的ASCII值加上1。(3)(18)以下程序段的输出结果是inta=1234;printf("%2dn",a);A)12B)34C)1234D)提示出错、无结果(4)(19)以下选项中不属于C语言的类型的是A)signedshortimtB)unsignedlongintC)unsignedintD)longshort(5)(20)若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A)scanf("%d%d%d",&a,&b,d);B)scanf("%d%d%d",&a,&b,&d);C)scanf("%d%d%d",a,b,d);D)scanf("%d%d%d",a,b,*d);(6)(21)在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是A)a=20000+20000;B)a=4000*10;C)a=30000+10000;D)a=4000L*10L;(7)(22)以下叙述正确的是A)可以把define和if定义为用户标识符B)可以把define定义为用户标识符,但不能把if定义为用户标识符C)可以把if定义为用户标识符,但不能把define定义为用户标识符D)define和if都不能定义为用户标识符(8)(23)若定义:inta=511,*b=&a;,则printf("%dn",*b);的输出结果为A)无确定值B)a的地址C)512D)511(9)(24)以下程序的输出结果是main(){inta=5,b=4,c=6,d;printf("%dn",d=a>b?(a>c?a:c):(b));}A)5B)4C)6D)不确定(10)(25)以下程序中,while循环的循环次数是main(){inti=0;while(i<10){if(i<1)continue;if(I==5)break;i++;}......}A)1B)10C)6D)死循环,不能确定次数(11)(26)以下程序的输出结果是main(){inta=0,i;for(i=;i<5;i++)n{switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf("%dn",a);}A)31B)13C)10D)20(1)(27)以下程序的输出结果是main(){inta=4,b=5,c=0,d;d=!a&&!b||!c;printf("%dn",d);}A)1B)0C)非0的数D)-1(2)(28)以下程序的输出结果是#includemain(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}printh("%dn",a);}A)21B)32C)33D)11(3)(29)以下程序的输出结果是charcchar(charch){if(ch>=‘A’&&ch<=‘Z')ch=ch-‘A'+‘a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%sn",s);}A)abc+ABC=DEFdefB)abc+abc=defdefC)abcaABCDEFdefD)abcabcdefdef(4)(30)以下程序的输出结果是intf(){staticinti=0;ints=1;ns+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%dn",a);}A)20B)24C)25D)15(1)(31)以下程序段的输出结果是chars[]="\141141abct";printf("%dn",strlen(s));A)9B)12C)13D)14(2)(32)若有以下程序#includevoidf(intn);main(){voidf(intn);f(5);}voidf(intn){printf("%dn",n);}则以下叙述中不正确的是A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数fC)对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明D)函数f无返回值,所以可用void将其类型定义为无值型(3)(33)以下程序调用findmax函数返回数组中的最大值findmax(int*a,intn){int*p,*s;for(p=a,s=a;p-asB)*p>*sC)a[p]>a[s]D)p-a>p-s(4)(34)以下程序的输出结果是main(){charcf[3][5]={"AAAA","BBB","CC"};printf(""%s"n",ch[1]);}A)"AAAA"B)"BBB"C)"BBBCC"D)"CC"(5)(35)在C语言中,形参的缺省存储类是A)autoB)registerC)staticD)extern(6)(36)若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是nA)p=2*(int*)malloc(sizeof(int));B)p=(int*)malloc(2*sizeof(int));C)p=(int*)malloc(2*2);D)p=(int*)calloc(2,sizeof(int));(1)(37)以下程序的输出结果是main(){charx=040;printf("%0n",x<<1);}A)100B)80C)64D)32(2)(38)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是A)fopen("A:userabc.txt","r")B)fopen("A:\user\abc.txt","r+")C)fopen("A:userabc.txt","rb")C)fopen("A:\user\abc.txt","w")(3)(39)以下不能正确进行字符串赋初值的语句是A)charstr[5]="good!";B)charstr[]="good!";C)char*str="good!";D)charstr[5]={‘g',‘o',‘o',‘d'};(4)(40)若有下面的说明和定义:structtest{intml;charm2;floatm3;unionuu{charul[5];intu2[2];}ua;}myaa;则sizeof(structtest)的值是A)12B)16C)14D)9(5)(41)若有定义:intaa[8];。则以下表达式中不能代表数组元aa[1]的地址的是A)&aa[0]+1B)&aa[1]C)&aa[0]++D)aa+1(6)(42)以下程序的输出结果是f(intb[],intm,intn){inti,s=0;for(i=m;i#includemain(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pb);printf("%dn",strlen(b2));}A)8B)3C)1D)7(2)(46)在说明语句:int*f();中,标识符f代表的是A)一个用于指向整型数据的指针变量B)一个用于指向一维数组的行指针C)一个用于指向函数的指针变量D)一个返回值为指针型的函数名(3)(47)不合法的main函数命令行参数表示形式是A)main(inta,char*c[])B)main(intarc,char**arv)C)main(intargc,char*argv)D)main(intargv,char*argc[])(4)(48)以下程序的输出的结果是intx=3;main(){inti;for(i=1;inext=&c;q->next=p->next;D)(*p).next=q;(*q).next=&b;(1)(50)设有以下说明语句typedefstruct{intn;charch[8];}PER;则下面叙述中正确的是A)PER是结构体变量名B)PER是结构体类型名C)typedefstruct是结构体类型D)struct是结构体类型名二、填空题(每空2分,共40分)请将每一个空的正确答案写在答案卡上,答在试卷上不得分。(2)(1)为了要将当前盘目录中的可执行程序ABC.EXE的输出结果存放到当前盘当前目录中的文件OUT.TXT中,则应使用的DOS命令为【1】。(3)(2)计算机网络分为广域网和局域网,因特网属于【2】。(4)(3)要想在当前目录下方便地执行C盘UCDOS目录中的程序,就应该先执行预设搜索路径的命令,该DOS命令为【3】。(5)(4)要查看当前目录中扩展名为.DAT的所有文件目录,应该使用的DOS命令为【4】。(6)(5)在Windows环境下,当进行复制操作时,其复制的内容将存放在【5】中(7)(6)若从键盘输入58,则以下程序输出的结果是【6】。main(){inta;scanf("%d",&a);if(a>50)printf("%d",a);if(a>40)printf("%d",a);if(a>30)printf("%d",a);}(8)(7)以下程序的输出结果是【7】。main(){inta=177;printf("%on",a);}(9)(8)以下程序的输出结果是【8】。main(){inta=0a+=(a=8);printf("%dn",a);}(10)(9)以下程序输出的结果是【9】。main(){inta=5,b=4,c=3,d;d=(a>b>c);printf("%dn",d);}n(1)(10)以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针.请将定义补充完整。structnode{intinfo;【10】link;}(2)(11)以下程序的输出结果是【11】。main(){ints,i;for(s=0,i=1;i<3;i++,s+=i);printf("%dn",s);}(3)(12)以下程序的输出结果是【12】。main(){char*p="abcdefgh",*r;long*q;q=(long*)p;q++;r=(char*)q;printf("%sn",r);}(4)(13)以下程序的输出结果是【13】。main(){chars[]="abcdef";s[3]=‘';printf("%sn",s);}(5)(14)以下程序的输出结果是【14】。main(){intx=0;sub(&x,8,1);printf("%dn",x);}sub(int*a,intn,intk){if(k<=n)sub(a,n/2,2*k);*a+=k;}(6)(15)设有如下宏定义#defineMYSWAP(z,x,y){z=x;x=y;y=z;}以下程序段通过宏调用实现变量a、b内容交换,请填空。floata=5,b=16,c;MYSWAP(【15】,a,b);(7)(16)以下程序用来统计文件中字符个数。请填空。#include"stdio.h"main(){FILE*fp;longnum=0L;if((fp=fopen("fname.dat","r"))==NULL){pirntf("Openerrorn");exit(0);}while(【16】){fgetc(fp);num++;}printf("num=%1dn",num-1);nfclose(fp);}(1)(17)以下程序中,select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。#defineN3#defineM3select(inta[N][M],int*n){inti,j,row=1,colum=1;for(i=0;ia[row][colum]){row=i;colum=j;}*n=【17】;return【18】;}main(){inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;max=select(a,&n);printf("max=%d,line=%dn",max,n);}(2)(18)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。intmystrlen(char*str){inti;for(i=0;【19】!=‘';i++);return(【20】);}基础部分和C语言程序设计试题参考答案及评分标准一、选择题(⑴-(40)题每题1分,(41)-(50)题每题2分,其60分)(1)D(2)B(3)A(4)A(5)B(6)C(7)B(8)B(9)C(10)C(11)D(12)D(13)C(14)A(15)B(16)B(17)D(18)C(19)D(20)A(21)D(22)B(23)D(24)C(25)D(26)A(27)A(28)B(29)B(30)D(31)A(32)C(33)B(34)B(35)A(36)A(37)A(38)B(39)A(40)A(41)C(42)A(43)C(44)B(45)D(46)D(47)C(48)C(49)C(50)B二、填空题答案(每空2分,共40分)(1)【1】ABC>OUT.TXT或者ABC.EXE>OUT.TXT(2)【2】广域网(3)【3】PATHC:UCDOS或其它等效命令n(1)【4】DIR*.DAT或DIR*.DAT/P或DIR*.DAT/W或带其它参数也可(2)【5】剪贴板(3)【6】585858(4)【7】261(5)【8】16(6)【9】0(7)【10】structnode*(8)【11】5(9)【12】efgh(10)【13】abc(11)【14】7(12)【15】c(13)【16】!feof(fp)(14)【17】row(15)【18】a[row][colum](16)【19】*(str+i)str[i](17)【20】i〖完〗录入陈贤武,校对:Forestn2002年9月全国计算机等级考试二级C语言笔试试题(含参考答案)    一、选择题((1)—(40)每题1分,(41)—(50)每题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)在32位计算机中,一个字长所占的字节数为A)1 B)2 C)4 D)8(2)与十进制数511等值的十六进制数为A)1FF B)2FF C)1FE D)2FE(3)能将高级语言编写的源程序转换成目标程序的是A)编程程序 B)编译程序 C)解释程序 D)链接程序(4)在计算机系统中,存储一个汉字的国标码所需要的字节数为A)1 B)2 C)3 D)4(5)下列带有通配符的文件名中,能表示文件ABC.TXT的是A)*BC.? B)A?.* C)?BC.* D)?.?(6)在多媒体计算机系统中,不能用以存储多媒体信息的是A)光缆 B)软盘 C)硬盘 D)光盘(7)DOS命令“COPY/?”的功能是A)将当前盘当前目录中的所有文件复制到当前盘的根目录下B)将当前盘当前目录中所有以单个字符命名的文件复制到当前盘的根目录下C)以提示方式复制文件D)显示COPY命令的帮助信息(8)在Windows环境下,若要将当前活动窗口存入剪贴板,则可以按A)Ctrl+PrintScreen键  B)Ctrl+PrintScreen键C)Shift+PrintScreen键 D)PrintScreen键(9)在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是A)将当前应用程序转为后台运行   B)退出Windows后再关机C)退出Windows后重新启动计算机  D)终止当前应用程序的运行n(10)在Windows环境中,粘贴按钮是A) B) C) D)(11)以下叙述中正确的是A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其它函数之前D)所有被调用的函数一定要在调用之前进行定义(12)以下选项中合法的实型常数是A)5E2.0 B)E-3 C).2E0 D)1.3E(13)以下选项中合法的用户标识符是A)long B)_2Test C)3Dmax D)A.dat(14)已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘101’是A)字符A B)字符a C)字符e D)非法的常量(15)以下非法的赋值语句是A)n=(i=2,++i); B)j++; C)++(i+1); D)x=j>0;(16)设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是A)6.500000 B)6 C)5.500000 D)6.000000(17)已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是A)scanf(“%2d%2d%2d”,&i,&j,&k);B)scanf(“%d%d%d”,&i,&j,&k);C)scanf(“%d,%d,%d”,&i,&j,&k);D)scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);(18)与数学式子对应的C语言表达式是A)3*x^n(2*x-1)           B)3*x**n(2*x-1)C)3*pow(x,n)*(1/(2*x-1)) D)3*pow(n,x)/(2*x-1)(19)设有定义:longx=-123456L;,则以下能够正确输出变量x值的语句是nA)printf(“x=%dn”,x);   B)printf(“x=%1dn”,x);C)printf(“x=%8dLn”,x); D)printf(“x=%LDn”,x);(20)若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf(“%d,%dn”,m,i);}执行后的输出结果是A)8,6 B)8,3 C)6,4 D)7,4(21)已有定义:intx=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是A)6 B)0 C)2 D)1(22)有一函数,,以下程序段中不能根据x值正确计算出y值的是A)if(x>0)y=1;B)y=0;elseif(x==0)y=0;if(x>0)y=1;elsey=-1;elseif(x<0)y=-1;C)y=0;D)if(x>=0)if(x>=0);if(x>0)y=1;if(x>0)y=1;elsey=0;elsey=-1;elsey=-1;(23)以下选项中,与k=n++完全等价的表达式是A)k=n,n=n+1 B)n=n+1,k=n C)k=++n D)k+=n+1(24)以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:main(){intn,k;floatscore,sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf(“%f”,&score);sum+=score;}ave=sum/4.0;printf(“NO%d:%fn”,n,ave);}n}上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是A)sum=0.0;     B)sum+=score;C)ave=sun/4.0; D)printf(“NO%d:%fn”,n,ave);(25)有以下程序段intn=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);此处do—while循环的结束条件是A)P的值不等于12345并且n的值小于3B)P的值等于12345并且n的值大于等于3C)P的值不等于12345或者n的值小于3D)P的值等于12345或者n的值大于等于3(26)有以下程序main(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf(“%dn”,m);}程序运行后的输出结果是A)1 B)2 C)3 D)4(27)C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是A)void B)int C)float D)double(28)若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是A)p=q; B)*p=*q; C)n=*q; D)p=n;(29)有以下程序nfloatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf(“%3.0fn”,fun(int)fun(a+c,b),a-c));}程序运行后的输出结果是A)编译出错 B)9 C)21 D)9.0(30)有以下程序voidfun(char*c,intd){*c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);}main(){chara=’A’,b=’a’;fun(&b,a);printf(“%c,%cn”,a,b);}程序运行后的输出结果是A)B,a,B,a B)a,B,a,B C)A,b,A,b D)b,B,A,b(31)以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i则运行的结果是:A)22 B)17 C)12 D)9(41)有以下程序intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx){returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);printf(“%dn”,i);}n程序运行后的输出结果是A)-4 B)1 C)4 D)8(42)有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf(“%dn”,s);}程序运行后的输出结果是A)8 B)10 C)7 D)11(43)有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-‘a’+’A’;s++;}}main(){charstr1[100]=“abcddfefdbd”,c=’d’;ss(str1,c);printf(“%sn”,str1);}程序运行后的输出结果是A)ABCDDEFEDBD B)abcDDfefDbDC)abcAAfefAbA D)Abcddfefdbd(44)有以下程序structSTU{charnum[10];floatscore[3];};main(){structstus[3]={{“20021”,90,95,85},{“20022”,95,80,75},{“20023”,100,95,90}},*p=s;inti;floatsum=0;for(i=0;i<3,i++)nsum=sum+p->score[i];printf(“%6.2fn”,sum);}程序运行后的输出结果是A)260.00 B)270.00 C)280.00 D)285.00(45)设有如下定义:strucksk{inta;floatb;}data;int*p;若要使P指向data中的a域,正确的赋值语句是A)p=&a; B)p=data.a; C)p=&data.a; D)*p=data.a;(46)有以下程序#includestructNODE{intnum;structNODE*next;};main(){structNODE*p,*Q,*R;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p->num=10;q->num=20;r->num=30;p->next=q;q->next=r;printf(“%dn”,p->num+q->next->num);}程序运行后的输出结果是A)10 B)20 C)30 D)40(47)若有以下说明和定义typedefint*INTEGER;INTEGERp,*q;以下叙述正确的是A)P是int型变量             B)p是基类型为int的指针变量C)q是基类型为int的指针变量  D)程序中可用INTEGER代替int类型名n(48)有以下程序main(){unsignedchara,b,c;a=0x3;b=a|0x8;c=b<<1;printf(“%d%dn”,b,c);}程序运行后的输出结果是A)–1112 B)–6–13 C)1224 D)1122(49)有以下程序#includemain(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf(“%s%s”,p,q);printf(“%s%sn”,p,q);}若从键盘输入:abcdef<回车>,则输出结果是:A)defdef B)abcdef C)abcd D)dd(50)以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。#includevoidf(charp[][10],intn){chart[20];inti,j;for(i=0;i10&&x<50){x++;if(x/3){x++;break;}elsecontinue;}printf(“%dn”,x);}9、有以下程序:#includemain()n{charc;while((c=getchar())!=’?’)putchar(--c);}程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为[10]。10、以下程序运行后的输出结果是[11]。voidfun(intx,inty){x=x+y;y=x-y;x=x-y;printf(“%d,%d,”,x,y);}main(){intx=2,y=3;fun(x,y);printf(“%d,%dn”,x,y);}11、以下函数的功能是计算s=1+++……+,请填空。doublefun(intn){doubles=0.0,fac=1.0;inti;for(i=1,i<=n;i++){fac=fac[12];s=s+fac;}returns;}12fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。#include#defineN100intfun(int(*a)[N]){introw,col,max,min;for(row=0;rowmax或者a[row][col]>=max(18)【18】max<="min"min>max或者min>=max(19)【19】*t或者t[0](20)【20】*s-*t或者*s-t[0]或者s[0]-*t或者s[0]-t[0]n2003年4月全国计算机等级考试二级C语言笔试试题(含参考答案)    一、选择题((1)~(40)每小题1分,(41)~(55)每小题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)用8位无符号二进制数能表示的最大十进制数为A)127 B)128 C)255 D)256(2)在64位高档微机中,一个字长所占的二进制位数为A)8 B)16 C)32 D)64(3)在Windows环境下,为了复制一个对象,在用鼠标拖动该对象时应同时按住A)Alt键 B)Esc键 C)Shift键 D)Ctrl键(4)在Windows菜单中,暗淡(灰色)的命令项表示该命令A)暂时不能用 B)正在执行 C)包含下一层菜单 D)包含对话框(5)在DOS环境下,为了得到TYPE命令的帮助信息,正确的DOS命令为A)TYPE B)TYPE/H C)TYPE/* D)TYPE/?(6)下列选项中,能作为合法DOS文件名的是A)ANP/A.DAT B)ABCCOM C)ECD.BASIC D)XY+Z.TXT(7)下列叙述中正确的是A)在Windows环境下,最大化的窗口是不能移动的B)在Windows环境下,应用程序窗口最小化后,该应用程序暂停执行C)在Windows环境下,只有最小化的窗口才能关闭D)在Windows环境下,不能关闭最大化的窗口(8)在Windows环境下,工具栏中的复制按钮是A)打印机图标 B)剪刀标志 C)复制标志 D)粘贴标志(9)在Windows98环境下,若要将整个屏幕上显示的内容存入剪贴板,可以按A)Ctrl+PrintScreen键  B)Alt+PrintScree键C)Shift+PrintScreen键 D)PrintScreen键(10)目前,计算机病毒扩散最快的途径是nA)通过软件复制 B)通过网络传播C)通过磁盘考贝 D)运行游戏软件(11)以下叙述中正确的是A)C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点(12)C语言中用于结构化程序设计的三种基本结构是A)顺序结构、选择结构、循环结构  B)if、switch、breakC)for、while、do-while        D)if、for、continue(13)在一个C程序中A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现C)main函数必须出现在所有函数之后 D)main函数必须出现在固定位置(14)下列叙述中正确的是A)C语言中既有逻辑类型也有集合类型B)C语言中没有逻辑类型但有集合类型C)C语言中有逻辑类型但没有集合类型D)C语言中既没有逻辑类型也没有集合类型(15)下列关于C语言用户标识符的叙述中正确的是A) 用户标识符中可以出现在下划线和中划线(减号)B) 用户标识符中不可以出现中划线,但可以出现下划线C) 用户标识符中可以出现下划线,但不可以放在用户标识符的开头D) 用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头(16)若有以下程序段(n所赋的是八进制数)intm=32767,n=032767printf("%d,%o/n",m,n);执行后输出结果是A)32767,32767 B)32767,032767C)32767,77777 D)32767,077777(17)下列关于单目运算符++、--的叙述中正确的是nA)它们的运算对象可以是任何变量和常量B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量D)它们的运算对象可以是char型变量、int型变量和float型变量(18)若有以下程序段intm=0xabc,n=0xabc;m-=n;printf("%Xn",m);执行后输出结果是A)0X0 B)0x0 C)0 D)0XABC(19)有以下程序段intm=0,n=0;charc='a';scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%dn",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是:A)10,A,10 B)10,a,10 C)10,a,0 D)10,A,0(20)有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}执行后输出结果是A)011122 B)012 C)012020 D)120(21)有以下程序main(){inti=1,j=1,k=2;if((j++‖k++)&&i++)printf("%d,%d,%dn",i,j,k);}n执行后输出结果是A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3(22)有以下程序main(){inta=5,b=4,c=3,d=2;if(a>b>c)printf("%dn",d);elseif((c-1>=d)==1)printf("%dn",d+1);elseprintf("%dn",d+2)}执行后输出结果是A)2 B)3 C)4 D)编译时有错,无结果(23)有以下程序main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%dn",k);}执行后输出结果是A)58 B)56 C)45 D)24(24)有以下程序main(){inti=0,s=0;do{if(i%2){i++;continue;}i++;s+=i;}while(i<7);printf("%dn",s);}执行后输出结果是A)16 B)12 C)28 D)21n(25)有以下程序main(){inti=10,j=1;printf("%d,%dn",i--,++j);}执行后输出结果是A)9,2 B)10,2 C)9,1 D)10,1(26)有以下程序main(){chara,b,c,*d;a='';b='xbc';c='xab';d="17";print("%c%c%cn",a,b,c,*d);}编译时出现错误,以下叙述中正确的是A)程序中只有a='';语句不正确   B)b='xbc';语句不正确C)d="127";语句不正确         D)a='';和c='xab';语句都不正确(27)有以下程序intfl(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d,e,f;d=f1(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf("%d,%d,%dn",d,f,e);}执行后输出结果是A)3,4,5 B)5,3,4 C)5,4,3 D)3,5,4(28)有如下程序voidf(intx,inty)n{intt;if(x=0;ps--)puts(ps);}执行后的输出结果是A)yz  B)z  C)z  D)xxyz     yz    yz    xyxyz     xyz(42)有以下程序main(){inta[][3]={{1,2,3},{4,5,0}},{*pa}[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%dn",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是A)7 B)6 C)8 D)无确定值(43)有以下程序voidfun(int*a,inti,intj){intt;if(i则运行结果为A}6 B)8 C)3 D)4(45)以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是A)main()                B)main{int*p;                {int*p;fun(p);                  fun(&p);}                       }intfun(int*p)           intfun(int**p){ints;p=&s;}           {ints;*p=&s;}C)#include              D)#includemain()                   main()n{int*p;                {int*p;fun(&p);                 fun(p);}                        }intfun(int**p)         intfun(int*p){*p=(int*)malloc(2);}   {p=(int*)malloc(sizeo(int));}(46)若要说明一个类型名STP,使得定义语句STPs等价于char*s,以下选项中正确的是A)typedefSTPchar*s; B)typedef*charSTP;C)typedefstp*char;   D)typedefchar*STP;(47)设有如下定义structss{charname[10];intage;charsex;}std[3],*p=std;下面各输入语句中错误的是A)scanf("%d",&(*p).age);  B)scanf("%s",&std.name);C)scanf("%c",&std[0].sex) D)scanf("%c",&(p->sex));(48)设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是A)10101001 B)10101000 C)11111101 D)01010101(49)以下叙述中不正确的是A)C语言中的文本文件以ASCⅡ码形式存储数据B)C语言中对二进制文件的访问速度比文本文件快C)C语言中,随机读写方式不适用于文本文件D)C语言中,顺序读写方式不适用于二进制文件(50)以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。#includemain(){FILE*fout;charch;fout=fopen('abc.txt','w');ch=fgetc(stdin);while(ch!='#'){fputc(ch,fout);nch=fgetc(stdin);}fclose(fout);}出错的原因是A)函数fopen调用形式错误 B)输入文件没有关闭C)函数fgetc调用形式错误 D)文件指针stdin没有定义二、填空题(每空2分,共20分)请将每空的正确答案写在答题卡上【1】-【20】序号的横线上,答在试卷上不得分。(1)用十六进制绘存储器中的字节地址进行编号,若地址编号从000到FFFF,则该存诸器的容量为【1】KB。(2)假设在当前盘的当前目录下有两个文件A.TXT和B.TXT,现要将文件B.TXT合并连接到文件A.TXT的后面。若使用COPY命令,则完整的命令为【2】。(3)E-mail地址由用户和域名两部分组成,这两部分的分隔符为【3】。(4)假设在当前盘当前目录下有一个可执行程序USER.EXE。现要执行该程序,并要求在执行过程中将显示输出的结果信息存入当前盘当前目录的文件OUT.DAT中,则完整的DOS命令为【4】。(5)在DOS环境下,表示打印机的设备文件名为【5】。(6)若有语句inti=-19,j=i%4;printf("%dn",j);则输出结果是 【6】 。(7)若有程序main(){inti,j;scanf("i=%d,j=%d";&i,&j);printf("i=%d,j=%dn",i,j);}要求给i赋10,给j赋20,则应该从键盘输入 【7】 。(8)若有以下程序main()n{intp,a=5;if(p=a!=0)printf("%dn",p);elseprintf("%dn",p+2);}执行后输出结果是 【8】 。(9)若有以下程序main(){inta=4,b=3,c=5,t=0;if(aif(aprintf("%d%d%dn",a,b,c);}执行后输出结果是【9】。(10)若有以下程序main(){inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};inti,j,s=0;for(i=0;i<4;i++){for(j=0;j<4;j++){if(a[i][j]<0)continue;if(a[i][j]==0)break;s+=a[i][j];}}printf("%dn",s);}执行后输出的结果是 【10】 。(11)若有以下程序main(){chara;a='H'-'A'+'0';print("%cn",a);n}执行后的输出结果是【11】。(12)若有以下程序intf(intx,inty){return(y-x)*x;}main(){inta=3,b=4,c=5,d;d=f(f(3,4),f(3,5));printf("%dn",d);}执行后输出的结果是【12】。(13)函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下111121133114641其构成规律是:第0列元素和主对角线无素均为1其余元素为其左上方和正上方元素之和数据的个数每行递增1请将程序补充完整。#defintN6voidYangHui(int*[N][N]){inti,j;x[0][0]=1for(i=1;iOUT.DAT(5) PRN或LPT1或LPT2(6) -3(7) i=10,j=20(8) 1(9) 503(10)58(11)7(12)9(13)x[i][i]和x[i-1][j-1]+x[i-1][j](14)!(s[i]>='0'&&s[i]<='9')和''(15)findbig(16)16(17)x.link=y.link;(18)Hell2003年9月全国计算机等级考试二级C语言笔试试题(含参考答案)n    一、选择题((1)~(40)每题1分,(41)~(50)每题2分,共60分)(1)在计算机中,一个字节所包含二进制位的个数是A)2 B)4 C)8 D)16(2)在多媒体计算机中,CD-ROM属于A)存储媒体 B)传输媒体 C)表现媒体 D)表示媒体(3)在DOS系统中,带有通配符的文件名*.*表示A)硬盘上的全部文件   B)当前盘当前目录中的全部文件C)当前盘上的全部文件 D)根目录中的全部文件(4)十六进制数100转换为十进制数为A)256 B)512 C)1024 D)64(5)能将高级语言编写的源程序转换为目标程序的软件是A)汇编程序 B)编辑程序 C)解释程序 D)编译程序(6)在Internet中,用于在计算机之间传输文件的协议是A)TELNET B)BBS C)FTP D)WWW(7)在Windows环境下,资源管理器左窗口中的某文件夹左边标有"+"标记表示A)该文件夹为空                 B)该文件夹中含有子文件夹C)该文件夹中只包含有可执行文件  D)该文件夹中包含系统文件(8)在Windows环境下,下列叙述中正确的是A)在"开始"菜单中可以增加项目,也可以删除项目B)在"开始"菜单中不能增加项目,也不能删除项目C)在"开始"菜单中可以增加项目,但不能删除项目D)在"开始"菜单中不能增加项目,但可以删除项目(9)从Windows环境进入DOS方式后,返回Windows环境的命令为A)QUIT B)WIN C)EXIT D)ESC(10)下列叙述中正确的是A)计算机病毒只感染可执行文件B)计算机病毒只感染文本文件nC)计算机病毒只能通过软件复制的方式进行传播D)计算机病毒可以通过读写磁盘或网络等方式进行传播(11)以下叙述中正确的是A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号"{"和"}"只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分(12)以下选项中可作为C语言合法整数的是A)10110B B)0386 C)0Xffa D)x2a2(13)以下不能定义为用户标识符的是A)scanf B)Void C)_3com_ D)int(14)有以下程序main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1fn",a,c,f,x);}程序运行后的输出结果是A)16516.5    B)1651.56.5C)1651.06.5  D)2651.56.5(15)以下选项中非法的表达式是A)0<=x<100     B)i=j==0C)(char)(65+3) D)x+1=x+1(16)有以下程序main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a B)11,12<回车>C)11,12<回车> D)11,<回车>,12<回车>(18)设有如下程序段:intx=2002,y=2003;printf("%dn",(x,y));则以下叙述中正确的是A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出B)运行时产生出错信息C)输出值为2002    D)输出值为2003(19)设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是A)x=x*100+0.5/100.0;         B)x=(x*100+0.5)/100.0;C)x=(int)(x*100+0.5)/100.0;  D)x=(x/100+0.5)*100.0;    (21)有以下程序main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%dn",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是A)-1 B)-3 C)-5 D)0(22)若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;则与上述程序段功能等价的赋值语句是A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c;n(23)有以下程序main(){intk=4,n=0;for(;n{n++;if(n%3!=0)continue;k--;}printf("%d,%dn",k,n);}程序运行后的输出结果是A)1,1 B)2,2 C)3,3 D)4,4(24)要求以下程序的功能是计算:s=1+1/2+1/3+……+1/10(资料来源:东方教育网http://www.eastedu.com.cn)main(){intn;floats;s=1.0;for(n=10;n>1;n--)s=s+1/n;printf("%6.4fn",s);}程序运行后输出结果错误,导致错误结果的程序行是A)s=1.0;      B)for(n=10;n>1;n--)C)s=s+1/n;    D)printf("%6.4fn",s);(25)已定义ch为字符型变量,以下赋值语句中错误的是A)ch=''; B)ch=62+3; C)ch=NULL; D)ch='xaa';(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A)函数调用可以作为独立的语句存在  B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中      D)函数调用可以作为一个函数的形参(27)有以下函数定义:voidfun(intn,doublex){……}若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A)fun(inty,doublem); B)k=fun(10,12.5);nC)fun(x,n);            D)voidfun(n,x);(28)有以下程序voidfun(char*a,char*b){a=b;(*a)++;}main(){charc1='A',c2='a',*p1,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf("%c%cn",c1,c2);}程序运行后的输出结果是A)Ab B)aa C)Aa D)Bb(29)若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是A)int*i=NULL;       B)float*f=NULL;   scanf("%d",i);       *f=10.5;C)chart='m',*c=&t; D)long*L;   *c=&t;                    L='';(30)有以下程序#includemain(){printf("%dn",NULL);}程序运行后的输出结果是A)0  B)1  C)-1  D)NULL没定义,出错(31)已定义c为字符型变量,则下列语句中正确的是A)c='97'; B)c="97"; C)c=97; D)c="a";(32)以下不能正确定义二维数组的选项是A)inta[2][2]={{1},{2}}; B)inta[][2]={1,2,3,4};C)inta[2][2]={{1},2,3}; D)inta[2][]={{1,2},{3,4}};(33)以下选项中不能正确把cl定义成结构体变量的是A)typedefstruct         B)structcolorcl  {intred;                 {intred;  intgreen;                 intgreen;n  intblue;                  intblue;  }COLOR;                   };COLORcl;C)structcolor           D)struct  {intred;                {intred;  intgreen;                intgreen;  intblue;                 intblue;  }cl;                     }cl;(34)以下能正确定义一维数组的选项是A)intnum[];       B)#defineN100intnum[N];C)intnum[0..100]; D)intN=100;intnum[N];(35)下列选项中正确的语句组是A)chars[8];s={"Beijing"}; B)char*s;s={"Beijing"};C)chars[8];s="Beijing";   D)char*s;s="Beijing";(36)已定义以下函数fun(int*p){return*p;}该函数的返回值是A)不确定的值              B)形参p中存放的值C)形参p所指存储单元中的值  D)形参p的地址值(37)下列函数定义中,会出现编译错误的是A)max(intx,inty,int*z)B)intmax(intx,y){*z=x>y?x:y;}{intz;z=x>y?x:y;returnz;}C)max(intx,inty)D)intmax(intx,inty){intz;{return(x>y?x:y);}z=x>y?x:y;return(z);}(38)有以下程序n#include#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%dn",F(a++,b++));}程序运行后的输出结果是A)12 B)15 C)16 D)20(39)有以下程序fun(inta,intb){if(a>b)return(a);elsereturn(b);}main(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%dn",r);}程序运行后的输出结果是A)3 B)6 C)8 D)12(40)若有定义:int*p[3];,则以下叙述中正确的是A)定义了一个基类型为int的指针变量p,该变量具有三个指针B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针C)定义了一个名为*p的整型数组,该数组含有三个int类型元素D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素(41)以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址#include#includechar*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main()n{inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/strcpy(string,scmp(string,str[2]));printf("%sn",string);}若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为A)abcd B)abba C)abc D)abca(42)有以下程序structs{intx,y;}data[2]={10,100,20,200};main(){structs*p=data;printf("%dn",++(p->x));}程序运行后的输出结果是A)10 B)11 C)20 D)21(43)有以下程序段main(){inta=5,*b,**c;c=&b;b=&a;……}程序在执行了c=&b;b=&a;语句后,表达式:**c的值是A)变量a的地址B)变量b中的值C)变量a中的值D)变量b的地址(44)有以下程序#includemain(){charstr[][20]={"Hello","Beijing"},*p=str;printf("%dn",strlen(p+20));}程序运行后的输出结果是A)0 B)5 C)7 D)20n(45)已定义以下函数fun(char*p2,char*p1){while((*p2=*p1)!=''){p1++;p2++;}}函数的功能是A)将p1所指字符串复制到p2所指内存空间B)将p1所指字符串的地址赋给指针p2C)对p1和p2两个指针所指字符串进行比较D)检查p1和p2两个指针所指字符串中是否有''(46)有以下程序main(){intx=3,y=2,z=1;printf("%dn",x/y&~z);}程序运行后的输出结果是A)3 B)2 C)1 D)0(47)若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为A)0 B)1 C)-1 D)一个非0值(48)下列关于C语言数据文件的叙述中正确的是A)文件由ASCII码字符序列组成,C语言只能读写文本文件B)文件由二进制数据序列组成,C语言只能读写二进制文件C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(49)有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf("%dn",a[1][2]);}程序运行后的输出结果是A)3 B)6 C)9 D)2(50)有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。nstructnode{intdata;structnode*next;}*p,*q,*r;_______________________________|datanextdatanextdatanext||→□□→□□→□□→|| ↑p↑q↑r||______________________________|现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是A)r->next=q;q->next=r->next;p->next=r;B)q->next=r->next;p->next=r;r->next=q;C)p->next=r;q->next=r->next;r->next=q;D)q->next=r->next;r->next=q;p->next=r;二、填空题(每空2分,共40分)(1)计算机软件分为系统软件与应用软件,UNIX属于〖1〗。(2)假设在当前盘的当前目录下有两个文件A.TXT和B.TXT,现要将文件B.TXT合并连接到文件A.TXT的后面。若使用TYPE命令,则完整的命令为〖2〗。(3)Internet的信息服务方式分为基本服务和扩展服务,电子邮件属于〖3〗。(4)在Windows环境下,利用菜单命令删除固定硬盘上的文件与文件夹,实际上是将需要删除的文件与文件夹移动到〖4〗文件夹中。(5)在Windows环境下,为了进行"添加/删除程序"操作,首先打开〖5〗,然后双击其中的相应图标。(6)以下程序运行后的输出结果是〖6〗。main(){intp=30;printf("%dn",(p/3>0?p/10:p%3));}(7)以下程序运行后的输出结果是〖7〗。main(){charm;nm='B'+32;printf("%cn",m);}(8)以下程序运行后的输出结果是〖8〗。main(){inta=1,b=3,c=5;if(c=a+b)printf("yesn");elseprintf("non");}(9)以下程序运行后的输出结果是〖9〗。main(){inti,m=0,n=0,k=0;for(i=9;i<=11;i++)switch(i/10){case0:m++;n++;break;case10:n++;break;default:k++;n++;}printf("%d%d%dn",m,n,k);}(10)执行以下程序后,输出'#'号的个数是〖10〗。#includemain(){inti,j;for(i=1;i<5;i++)for(j=2;j<=i;j++)putchar('#');}(11)以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。intfun(intn){intm=0,f=1,i;for(i=1;i<=n;i++){m+=i*f;f=〖11〗;}nreturnm;}main(){printf("m=%dn",〖12〗);}(12)以下程序运行后的输出结果是〖13〗main(){inti,n[]={0,0,0,0,0};for(i=1;i<=4;i++){n[i]=n[i-1]*2+1;printf("%d",n[i]);}}(13)以下程序运行后的输出结果是〖14〗main(){inti,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++)a[j][i]=0;for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%d",a[i][j]);printf("n");}}(14)以下程序运行后的输出结果是〖15〗inta=5;fun(intb){staticinta=10;a+=b++;printf("%d",a);}main(){intc=20;fun(c);a+=c++;printf("%dn",a);n}(15)请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。〖16〗(double,double);main(){doublex,y;scanf("%lf%lf",&x,&y);printf("%lfn",max(x,y));}doublemax(doublea,doubleb){return(a>b?a:b);}(16)以下程序运行后输入:3,abcde<回车>,则输出结果是〖17〗#includemove(char*str,intn){chartemp;inti;temp=str[n-1];for(i=n-1;i>0;i--)str[i]=str[i-1];str[0]=temp;}main(){chars[50];intn,i,z;scanf("%d,%s",&n,s);z=strlen(s);for(i=1;i<=n;i++)move(s,z);(资料来源:东方教育网http://www.eastedu.com.cn)printf("%sn",s);}(17)以下程序运行后的输出结果是〖18〗fun(intx){if(x/2>0)fun(x/2);printf("%d",x);}main(){fun(6);}n(18)已有定义如下:structnode{intdata;structnode*next;}*p;以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。请填空。p=(structnode*)malloc(〖19〗);(19)以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。#include#includemain(){chars[80],d[80];inti,j;gets(s);for(i=j=0;s[i]!='';i++)if(〖20〗){d[j]=s[i];j++;}d[j]='';puts(d);}          2003年9月全国计算机等级考试二级C语言笔试试卷参考答案一、选择题(1)C(2)A(3)B(4)A(5)D(6)C(7)B(8)A(9)C(10)D(11)A(12)C(13)D(14)B(15)D(16)C(17)A(18)D(19)C(20)C(21)B(22)B(23)C(24)C(25)A(26)D(27)C(28)A(29)D(30)A(31)C(32)D(33)B(34)B(35)D(36)C(37)B(38)A(39)D(40)B(41)B(42)B(43)C(44)C(45)A(46)D(47)A(48)D(49)B(50)A二、填空题(1) 〖1〗系统软件n(2) 〖2〗TYPEB.TXT>>A.TXT(3) 〖3〗基本服务(4) 〖4〗回收站(5) 〖5〗控制面板(6) 〖6〗3(7) 〖7〗b(8) 〖8〗yes(9) 〖9〗132(10)〖10〗6(11)〖11〗-f(12) 〖12〗fun(10)(13)〖13〗13715             056             009(14)〖14〗123(15)〖15〗3025(16) 〖16〗doublemax(17)〖17〗cdeab(18)〖18〗136(19)〖19〗sizeof(structnode)   (20)〖20〗s[i]>='0'&&s[i]<='9'n2004年4月全国计算机等级考试二级C语言笔试试题(含参考答案)    一、选择题,(1-40)每题1分,(41-50)每题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)1MB等于A)1000字节       B)1024字节C)1000×1000字节 D)1024×1024字节(2)与十六进制数200等值的十进制数为A)256 B)512 C)1024 D)2048(3)所谓“裸机”是指A)单片机                B)单板机C)不装备任何软件的计算机 D)只装备操作系统的计算机(4)能将高级语言编写的源程序转换成目标程序的是A)链接程序 B)解释程序 C)编译程序 D)编辑程序(5)在64位计算机中,一个字长所占的字节数为A)64 B)8 C)4 D)1(6)在Windows环境下,当一个应用程序窗口被最小化后,该应用程序A)继续在后台运行 B)继续在前台运行C)终止运行       D)暂停运行(7)在Windows环境下,能实现窗口移动的操作是A)用鼠标拖动窗口中的任何部位  B)用鼠标拖动窗口的边框C)用鼠标拖动窗口的控制按钮    D)用鼠标拖动窗口的标题栏(8)在Windows环境下,PrintScreen键的作用是A)打印当前窗口的内容  B)打印屏幕内容C)复制屏幕到剪贴板    D)复制当前窗口到剪贴板(9)Internet的通信协议是A)TCP/IPB)BBSC)WWWD)FTPn(10)下列叙述中正确的是A)计算机病毒只感染可执行文件B)计算机病毒只感染文本文件C)计算机病毒只能通过软件复制的方式进行传播D)计算机病毒可以通过网络或读写磁盘等方式进行传播(11)一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是A)有零个或多个输入  B)有零个或多个输出C)有穷性            D)可行性(12)以下叙述中正确的是A)C语言的源程序不必通过编译就可以直接运行B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C源程序经编译形成的二进制代码可以直接运行D)C语言中的函数不可以单独进行编译(13)以下符合C语言语法的实型常量是A)1.2E0.5 B)3.14.159E C).5E-3 D)E15(14)以下4组用户定义标识符中,全部合法的一组是A)_main B)If C)txt D)intenclude  -max   REAL   k_2sin      turbo  3COM_  001(15)若以下选项中的变量已正确定义,则正确的赋值语句是A)x1=26.8%3 B)1+2=x2 C)x3=0x12 D)x4=1+2=3;(16)设有以下定义inta=0;doubleb=1.25;charc=’A’;#defined2则下面语句中错误的是A)a++; B)b++ C)c++; D)d++;(17)设有定义:floata=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是nA)(a+B)*h/2    B)(1/2)*(a+B)*hC)(a+B)*h*1/2  D)h/2*(a+B)(18)有以下程序main(){intx=102,y=012;printf(“%2d,%2dn”,x,y);}执行后输出结果是A)10,01 B)02,12 C)102,10 D)02,10(19)以下4个选项中,不能看作一条语句的是A){;} B)a=0,b=0,c=0; C)if(a>0); D)if(b==0)m=1;n=2;(20)设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是A)scanf(“%d”,pA);  B)scanf(“%d”,A);C)scanf(“%d”,&pA); D)scanf(“%d”,*pA);(21)以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是A)if((a>B)&&(b>C))k=1; B)if((a>B)||(b>C))k=1elsek=0;C)if(a<=B)k=0;           D)if(a>B)k=1;elseif(b<=C)k=1;        elseif(b>C)k=1;elsek=0;(22)有以下程序main(){chark;intI;for(i=1;i<3;i++){scanf(“%c”,&k);switch(k){case‘0’:printf(“anothern”);case‘1’:printf(“numbern”);}}}n程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是A)another B)another C)another D)numbernumbernumbernumbernumberanothernumber(23)有以下程序main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf(“%d,%d,%dn”,x,y,z);}程序执行后的输出结果是A)3,2,0 B)3,2,-1 C)4,3,-1 D)5,-2,-5(24)有以下程序main(){inti,s=0;for(i=1;i<10;i+=2)s+=i+1;printf(“%dn”,s);}程序执行后的输出结果是A)自然数1~9的累加和     B)自然数1~10的累加和C)自然数1~9中的奇数之和 D)自然数1~10中的偶数之和(25)有以下程序main(){inti,n=0;for(i=2;i<5;i++){do{if(i%3)continue;n++;}while(!i);n++;}printf(“n=%dn”,n);}程序执行后的输出结果是nA)n=5 B)n=2 C)n=3 D)n=4(26)若程序中定义了以下函数doublemyadd(doublea,doubleB){return(a+B);}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是A)doublemyadd(doublea,B);B)doublemyadd(double,double);C)doublemyadd(doubleb,doubleA);D)doublemyadd(doublex,doubley);(27)有以下程序charfun(charx,chary){if(xreturny;}main(){inta=’9’,b=’8’,c=’7’;printf(“%cn”,fun(fun(a,B),fun(b,C)));}程序的执行结果是A)函数调用出错 B)8 C)9 D)7(28)设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是A)p=1; B)*q=2; C)q=p; D)*p=5;(29)有以下程序voidf(intv,intw){intt;t=v;v=w;w=t;}main(){intx=1,y=3,z=2;if(x>y)f(x,y);elseif(y>z)f(y,z);elsef(x,z);printf(“%d,%d,%dn”,x,y,z);n}执行后输出结果是A)1,2,3 B)3,1,2 C)1,3,2 D)2,3,1(30)有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是A)5 B)6 C)8 D)9(31)31、有以下程序main(){chara[]=”abcdefg”,b[10]=”abcdefg”;printf(“%d%dn”,sizeof(A),sizeof(B));}执行后输出结果是A)77 B)88 C)810 D)1010(32)有以下程序voidswap1(intc[]){intt;t=c[0];c[0]=c[1];c[1]=t;}voidswap2(intc0,intc1){intt;t=c0;c0=c1;c1=t;}main(){inta[2]={3,5},b[2]={3,5};swap1(A);swap2(b[0],b[1]);printf(“%d%d%d%dn”,a[0],a[1],b[0],b[1]);}其输出结果是A)5353 B)5335 C)3535 D)3553(33)有以下程序voidsum(int*A)n{a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)&nbsp;sum(&aa[i]);printf(“%dn”,aa[0]);}执行后的输出结果是A)4 B)3 C)2 D)1(34)34、有以下程序intf(intb[][4]){inti,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};printf(“%dn”,f(A));}执行后的输出结果是A)12 B)11 C)18 D)16(35)有以下定义#includechara[10],*b=a;不能给数组a输入字符串的语句是A)gets(A) B)gets(a[0]) C)gets(&a[0]); D)gets(B);(36)有以下程序main(){char*p[10]={“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”};printf(“%dn”,strlen(p[4]));n}执行后输出结果是A)2 B)3 C)4 D)5(37)有以下程序inta=2;intf(int*A){return(*A)++;}main(){ints=0;{inta=5;s+=f(&A);}s+=f(&A);printf(“%dn”,s);}执行后输出结果是A)10 B)9 C)7 D)8(38)有以下程序#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf(“%dn”,i);}执行后输出结果是A)28 B)22 C)16 D)4(39)设有以下语句typedefstructS{intg;charh;}T;则下面叙述中正确的是A)可用S定义结构体变量 B)可以用T定义结构体变量C)S是struct类型的变量 D)T是structS类型的变量(40)有以下程序nstrucSTU{charname[10];intnum;};voidf1(structSTUC){structSTUb={“LiSiGuo”,2042};c=b;}voidf2(structSTU*C){structSTUb={“SunDan”,2044};*c=b;}main(){structSTUa={“YangSan”,2041},b={“WangYin”,2043};f1(A);f2(&B);printf(“%d%dn”,a.num,b.num);}执行后的输出结果是A)20412044 B)20412043 C)20422044 D)20422043(41)有以下程序main(){unsignedchara,b;a=4|3;b=4&3;printf(“%d%dn”,a,b(;}执行后输出结果是A)70 B)07 C)11 D)430(42)下面程序的功能是输出以下形式的金字塔图案是:****************main(){inti,j;nfor(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf(““);for(j=1;j<=_______;j++)printf(“*”);printf(“n”);}}在下划线处应填入的是A)i B)2*i-1 C)2*i+1 D)i+2(43)有以下程序voidsort(inta[],intn){inti,j,t;for(i=0;ifor(j=i+2;jif(a[i]}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)printf(“%d”,aa[i]);printf(“n”);}其输出结果是A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,C)9,2,7,4,5,6,3,8,1,10, D)1,10,3,8,5,6,7,4,9,2,(44)以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是A)chars[10]=”abcdefg”;   B)chart[]=”abcdefg”,*s=t;C)chars[10];s=”abcdefg”; D)chars[10];strcpy(s,”abcdefg”);(45)有以下程序#includemain(intargc,char*argv[]){inti,len=0;for(i=1;iprintf(“5dn”,len);}经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行exabcdefgh3k44n执行后输出结果是A)14 B)12 C)8 D)6(46)有以下程序voidf(inta[],inti,intj){intt;if(iScore>p[j]->Score){t=p[i];p[i]=p[j];p[j]=t;}printf(“5d%dn”,s[1].Score,p[1]->Score);}n执行后输出结果是A)550550 B)680680 C)580550 D)580680(48)有以下程序#includestructNODE{intnum;structNODE*next;};main(){structNODE*p,*q,*r;intsum=0;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p->num=1;q->num=2;r->num=3;p->next=q;q->next=r;r->next=NULL;sum+=q->next->num;sum+=p->num;printf(“%dn”,sum);}执行后的输出结果是A)3 B)4 C)5 D)6(49)有以下程序#includemain(){FILE*fp;inti,k=0,n=0;fp=fopen(“d1.dat”,”w”);for(i=1;i<4;i++)fprintf(fp,”%d”,i);fclose(fp);fp=fopen(“d1.dat”,”r”);fscanf(fp,”%d%d”,&k,&n);printf(“%d%dn”,k,n);fclose(fp);}执行后输出结果是A)12 B)1230 C)123 D)00n(50)有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)#includemain(){FILE*fp;inti,a[4]={1,2,3,4},b;fp=fopen("data.dat","wb");for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);fclose(fp);fp=fopen("data.dat","rb");fseek(fp,-2L*sizeof(int).SEEK_END);fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/fclose(fp);printf("%dn",B);}执行后输出结果是A)2 B)1 C)4 D)3二、填空题(每空2分,共40分)请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分.(1)E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【1】。(2)计算机网络分为广域网和局域网,因特网属于【2】。(3)从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为【3】。(4)在Windows环境下,只要在“开始”菜单中单击【4】选项,就可以查阅最近打开过的文档清单。(5)计算机的运算速度可以用MIPS来描述,1MIPS是指每秒执行【5】条指令。(6)已知字符A的ACSII码值为65,以下语句的输出结果是【6】charch=’B’;printf(“%c%dn”,ch,ch);(7)有以下语句段intn1=10,n2=20;printf(“【7】”,n1.n2);n要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。n1=10n2=20(8)有以下程序main(){intt=1,i=5;for(;i>=0;i--)t*=i;printf(“%dn”,t);}执行后输出结果是【8】。(9)有以下程序main(){intn=0,m=1,x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf(“%dn”,x);}执行后输出结果是【9】。(10)有以下程序#includemain(){charch1,ch2;intn1,n2;ch1=getchar();ch2=getchar();n1=ch1-‘0’;n2=n1*10+(ch2-‘0’);printf(“%dn”,n2);}程序运行时输入:12<回车>,执行后输出结果是【10】。(11)有以下程序voidf(inty,int*x){y=y+*x;*x=*x+y;}main(){intx=2,y=4;nf(y,&x);printf(“%d%dn”,x,y);}执行后输出的结果是【11】。(12)函数fun的功能是计算xndoublefun(doublex,intn){inti;doubley=1;for(i=1;i<=n;i++)y=y*x;returny;}主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+B)3。实现这一计算的函数调用语句为【12】。(13)下面rotate函数的功能是:将n行n列的矩阵A转置为A’,例如:1234159135678261014当A=9101112则A’=37111513141516481216请填空#defineN4voidrotate(inta[][N]){inti,j,t;for(i=0;i1)returna[0]+f(&a[1],n-1);elsereturna[0];}main(){intaa[3]={1,2,3},s;s=f(&aa[0],3);printf(“%dn”,s);}(17)以下程序中给指针p分配三个double型动态内存单元,请填空。#includemain(){double*p;p=(double*)malloc(【18】);p[0]=1.5;p[1]=2.5;p[2]=3.5;printf(“%f%f%fn”,p[0],p[1],p[2]);}(18)以下程序的运行结果是【19】#includetypedefstructstudent{charname[10];longsno;floatscore;}STU;nmain(){STUa={“zhangsan”,2001,95},b={“Shangxian”,2002,90},c={“Anhua”,2003,95},d,*p=&d;d=a;if(strcmp(a.name,b.name)>0)d=b;if(strcmp(c.name,d.name)>0)d=c;printf(“%ld%sn”,d.sno,p->name);}(19)以下sum函数的功能是计算下列级数之和。S=1+x+x2/2!+x3/3!+........+xn/n!请给函数中的各变量正确赋初值。doublesum(doublex,intn){inti;doublea,b,s;【20】for(i=1;i<=n;i++){a=a*x;b=b*i;s=s+a/b;}returns;}东方教育网提供Http://www.eastedu.com.cn              2004年4月全国计算机等级考试二级C语言笔试参考答案一.选择题  1~10:DBCCBADCAD11~20:BBCACDBCDA21~30:ACBDDADDCD31~40:CBADBACADA41~50:ABCCDACBBD二.填空题1、@2、广域网3、EXIT或exit4、文档5、百万条或一百万条或1000000条6、B66n7、n1=%dnn2=%d8、09、-410、1211、8412、fun(a,4)+fun(b,4)-fun(a+b,3);13、j<=i14、a[i][j]=a[j][i]15、*t++16、617、efgh18、3*sizeof(double)19、2002Shangxian20、a=1.0;b=1.0;s=1.0;n2004年9月全国计算机等级考试二级C语言笔试试题(含参考答案)    一、选择题((1)~(40)每小题1分,(41)~(55)每小题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。1.与十进制数200等值的十六进制数为A)A8 B)A4 C)C8 D)C42.DOS文件系统的组织结构属于A)星形结构 B)网形结构 C)环形结构 D)树形结构3.对存储器按字节进行编址,若某存储器芯片共有10根地址线,则该存储器芯片的存储容量为A)1KB B)2KB C)4KB D)8KB4.在DOS环境下,代表键盘和显示器的设备文件名为A)PRN B)CON C)NUL D)LPT5.计算机网络的主要特点是A)运算速度快 B)运算精度高 C)资源共享 D)人机交互6.磁盘处于写保护状态时其中的数据A)不能读出,不能删改 B)可以读出,不能删改C)不能读出,可以删改 D)可以读出,可以删改7.从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为A)EXIT B)QUIT C)RET D)MSDO8.在Windows环境下,若资源管理器左宣传品中的某文件夹左边标有“+”标记,则表示A)该文件夹为空                B)该文件夹中含有子文件夹C)该文件夹中只包含有可执行文件 D)该文件夹中包含系统文件9.在Windows菜单中,暗淡的命令名项目表示该命令A)暂时不能用     B)正在执行C)包含下一层菜单 D)包含对话框10.在Windows环境下,单击当前窗口中的按钮“×”(右上角的关闭按钮),其功能是A)将当前应用程序转为后台运行 B)退出Windows后再关机nC)终止当前应用程序的运行     D)退出Windows后重新启动计算机11.用C语言编写的代码程序A)可立即执行       B)是一个源程序C)经过编译即可执行  D)经过编译解释才能执行12.结构化程序由三种基本结构组成,三种基本结构组成的算法A)可以完成任何复杂的任务   B)只能完成部分复杂的任务C)只能完成符合结构化的任务 D)只能完成一些简单的任务13.以下定义语句中正确的是A)chara='A'b='B'; B)floata=b=10.0;C)inta=10,*b=&a;  D)float*a,b=&a;14.下列选项中,不能用作标识符的是A)_1234_ B)_1_2 C)int_2_ D)2_int_15.有以下定义语句doublea,b;intw;longc;若各变量已正确赋值,则下列选项中正确的表达式是A)a=a+b=b++    B)w%(int)a+b)C)(c+w)%(int)a D)w=a==b;16.有以下程序main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf("%dn",x);}程序运行后的输出结果是A)3 B)5 C)-1 D)-217.有以下程序main(){chara='a',b;print("%c,",++a);nprintf("%cn",b=a++);}程序运行后的输出结果是A)b,b B)b,c C)a,b D)a,c18.有以下程序main(){intm=0256,n=256;printf("%o%on",mn,n);}程序运行后的输出结果是A)02560400 B)0256256 C)256400 D)40040019.有以下程序main(){inta=666,b=888;printf("%dn",a,b);}程序运行后的输出结果是A)错误信息 B)666 C)888 D)666,88820.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序运行后的输出结果是A)022111 B)021021 C)000122 D)01221.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是资料来源:东方教育网全国计算机等级考试频道Http://www.eastedu.com.cnnA)abs(x-y)<10           B)x-y>-10&&x-y<10C)@(x-y)<-10||!(y-x)>10 D)(x-y)*(x-y)<10022.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>b)if(b>c)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%dn",d);}程序运行后的输出结果是A)2 B)3 C)43 D)4423.下列条件语句中,功能与其他语句不同的是A)if(a)printf("%dn",x);elseprintf("%dn",y);B)if(a==0)printf("%dn",y);elseprintf("%dn",x);C)if(a!=0)printf("%dn",x);elseprintf("%dn",y);D)if(a==0)printf("%dn",x);elseprintf("%dn",y);24.有以下程序main(){inti=0,x=0;for(;;){if(i==3||i==5)continue;if(i==6)break;i++;s+=i;};printf("%dn",s);}程序运行后的输出结果是A)10 B)13 C)21 D)程序进入死循环n25.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是BA)for(i=1,p=1;i<=5;i++)p*=i;B)for(i=1;i<=5;i++){p=1;p*=i;}C)i=1;p=1;while(i<=5){p*=i;i++;}D)i=1;p=1;do{p*=i;i++;}while(i<=5);26.有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("c,%c,%c,%cn",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,627)以下能正确定义二维数组的是A)inta[][3];    B)inta[][3]=2{2*3};C)inta[][3]={}; D)inta[2][3]={{1},{2},{3,4}};28.有以下程序intf(inta){returna%2;}main(){ints[8]={1,3,5,2,4,6},i,d=0;for(i=0;f(s);i++)d+=s;printf("%dn",d);}程序运行后的输出结果是A)9 B)11 C)19 D)2129.若有以下说明和语句,intc[4][5],(*p)[5];p=c;能正确引用c数组元素的是A)p+1       B)*(p+3)C)*(p+1)+3  D)*(p[0]+2])30.有以下程序main()n{inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%dn",*p,"q,a,b);}程序运行后的输出结果是A)8,7,8,7 B)7,8,7,8 C)8,7,7,8 D)7,8,8,731.s12和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是A)if(s1>s2)S;           B)if(strcmp(s1,s2))S;C)if(strcmp(s2,s1)>0)S; D)if(strcmp(s1,s2)>0)S;32.设有定义语句intx[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是A)for(i=0;i<6;i++)printf("%2d",*(p++));B)for(i=0;i<6;i++)printf("%2d",*(p+i));C)for(i=0;i<6;i++)printf("%2d",*p++);D)for(i=0;i<6;i++)printf("%2d",(*p)++);33.有以下程序#includemain(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%dn",*p,*1);}程序运行后的输出结果是A)运行后报错 B)66 C)611 D)51034有以下定义和语句inta[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*p[0]+1)所代表的数组元素是A)a[0][1] B)a[1][0] C)a[1][1] D)a[1][2]35.有以下程序nmain(){charstr[][10]={"China","Beijing"},*p=str;printf("%sn",p+10);}程序运行后的输出结果是A)China B)Bejing C)ng D)ing36.有以下程序main(){chars[]="ABCD",*p;for(p=s+1;pnum B)p->num C)(*p).num D)stu[3].age46.有以下程序mina(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf("%d",x);printf("n");}程序运行后的输出结果是:A)75310246 B)01234567 C)76310462 D)1357024647.有如下程序#includemain()n{FILE*fp1;fp1=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为A)goodabc B)abcd C)abc D)abcgood48~50.以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中,请从与下划线处号码对应的一组选若中选择出正确的选项。#includestuctnode{chardata;structnode*next;};(48)CreatList(char*s){structnode*h,*p,*q);h=(structnode*)malloc(sizeof(structnode));p=q=h;while(*s!=''){p=(structnode*)malloc(sizeof(structnode));p->data=(49);q->next=p;q=(50);s++;}p->next='';returnh;}main(){charstr[]="linklist";structnode*head;head=CreatList(str);...}(48)A)char* B)structnode C)structnode* D)char(49)A)*s     B)s           C)*s++          D)(*s)++(50)A)p->nextB)p           C)s             D)s->nextn二、填空题:(每空2分,共40分)1.在64位高档微机中,CPU能同时处理_____个字节的二进制数据。2.E-mail地址由域名和用户名两部分组成,它们之间用@分隔,其中在@后面的部分是_______3.Windows窗口一般由标题栏、菜单栏、控制按钮等部分组成。为了移动窗口,则要用鼠标拖动_____4.计算机软件分为系统软件和应用软件,UNIX系统属于________。5.在Windows环境下,为了将屏幕内容存入剪贴板,应按________键。6.以下程序段的输出结果是_____inti=9;printf("%on",i);7.以下程序运行后的输出结果是_______。main(){inta,b,c;a=25;b=025;c=0x25;printf("%d%d%dn',a,b,c);}8.以下程序运行后的输出结果是______。main(){intp[7]={11,13,14,15,16,17,18};inti=0,j=0;while(i<7&&p%2==1)j+=p[i++];printf("%dn",j);}9.以下程序运行后的输出结果是_______。main(){intx=1,y=0,a=0,b=0;switch(x)n{case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("%d%dn",a,b);}10.以下程序运行后的输出结果是_______。main(){inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};inti=0,j=0,s=0;while(i++<4){if(i==2||i==4)continue;j=0;do{s+=a[j];j++;}while(j<4);}printf("%dn",s);}11.以下程序运行后的输出结果是_____。main(){chara[]="Language",b[]="Programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*p1+k)==*(p2+k))printf("%c",*(p1+k));}12.以下程序运行后的输出结果是_______。main(){chara[]="123456789",*p;inti=0;p=a;while(*p){if(i%2==0)*p='*";np++;i++;}puts(a);}13.以下程序中,for循环体执行的次数是_____。#defineN2#defineMN+1#defineKM+1*M/2main(){inti;for(i=1;i0){count++;sum+=______;}}printf("sum=%d,count=%dn",sum,count);}16.以下程序中,函数sumColumM的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。#defineM2#defineN4voidSumColumMin(inta[M][N],int*sum){inti,j,k,s=0;for(i=0;ia[j])k=j;s+=_______;}[*sum]=s;}main(){intx[M][N]={3,2,5,1,4,1,8,3},s;SumColumMin(_______);printf("%dn",s);}                      2004年9月二级C笔试答案选择题1-5  CDABC6-10 BABAC11-15BCCDC16-20DACBC21-25CADDBn26-30ACADC31-35DDACB36-40DBDAA41-45CBBCD46-50ACCAB填空题1.82.域名3.标题栏4.系统软件5.PEINTSCREEN6.117.2521378.249.2110.9211.gae12.1*3*5*7*913.414.xx*x+115.&a[i]a[i]16.a[k][i]*sumx,&sn2005年4月全国计算机等级考试二级C语言笔试试题(含参考答案)    一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)数据的存储结构是指______。A)存储在外存中的数据          B)数据所占的存储空间量C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示(2)下列关于栈的描述中错误的是______。A)栈是先进后出的线性表B)栈只能顺序存储C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是______。A)冒泡排序为n/2B)冒泡排序为nC)快速排序为nD)快速排序为n(n-1)/2(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。A)log2n B)n/2 C)n D)n+1(5)下列对于线性链表的描述中正确的是______。A)存储空间不一定是连续,且各元素的存储顺序是任意的B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面C)存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间必须连续,且各元素的存储顺序是任意的(6)下列对于软件测试的描述中正确的是______。A)软件测试的目的是证明程序是否正确B)软件测试的目的是使程序运行结果正确C)软件测试的目的是尽可能多地发现程序中的错误D)软件测试的目的是使程序符合结构化原则(7)为了使模块尽可能独立,要求______。A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强nB)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(8)下列描述中正确的是______。A)程序就是软件B)软件开发不受计算机系统的限制C)软件既是逻辑实体,又是物理实体D)软件是程序、数据与相关文档的集合(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指______。A)数据与程序独立存放B)不同的数据被存放在不同的文件中C)不同的数据只能被对应的应用程序所使用D)以上三种说法都不对(10)用树形结构表示实体之间联系的模型是______。A)关系模型 B)网状模型 C)层次模型 D)以上三个都是(11)算法具有五个特性,以下选项中不属于算法特性的是______。A)有穷性 B)简洁性 C)可行性 D)确定性(12)以下选项中可作为C语言合法常量的是______。A)-80. B)-080 C)-8e1.0 D)-80.0e(13)以下叙述中正确的是______。A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(14)以下不能定义为用户标识符的是______。A)Main B)_0 C)_int D)sizeof(15)以下选项中不能作为合法常量的是______。A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0n(16)数字字符0的ASCII值为48,若有以下程序main(){chara='1',b='2';printf("%c,",b++);printf("%dn",b-a);}程序运行后的输出结果是______。A)3,2 B)50,2 C)2,2 D)2,50(17)有以下程序main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%dn",n++,++m);}程序运行后的输出结果是______。A)12353514 B)12353513 C)12343514 D)12343513(18)有定义语句:intb;charc[10];,则正确的输入语句是______。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(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%dn",m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。A)m=123n=456p=789    B)m=123n=456p=789C)m=123,n=456,p=789 D)123456789(20)有以下程序main(){inta,b,d=25;a=d/10%9;b=a&&(-1);nprintf("%d,%dn",a,b);}程序运行后的输出结果是______。A)6,1B)2,1C)6,0D)2,0(21)有以下程序main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%dn",i,j,k);}程序运行后的输出结果是______。A)123 B)234 C)223 D)233(22)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a    A)1 B)2 C)3 D)4(23)有以下程序main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%dn",j);}程序运行后的输出结果是______。A)42 B)45 C)56 D)60(24)有以下程序main(){chara[7]="a0a0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%dn",i,j);}程序运行后的输出结果是______。A)22 B)76 C)72 D)62n(25)以下能正确定义一维数组的选项是______。A)inta[5]={0,1,2,3,4,5};B)chara[]={0,1,2,3,4,5};C)chara={'A','B','C'};  D)inta[5]="0123";(26)有以下程序intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%dn",e,f,g);}程序运行后的输出结果是______。A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7(27)已有定义:chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是______。A)数组a和b的长度相同     B)a数组长度小于b数组长度C)a数组长度大于b数组长度  D)上述说法都不对(28)有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p{f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是______。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,n(29)有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序运行后的输出结果是______。A)012 B)123 C)234 D)345(30)以下叙述中错误的是______。A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数(31)有以下程序#defineN20fun(inta[],intn,intm){inti,j;for(i=m;i>=n;i--)a[i+1]=a[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);}程序运行后的输出结果是______。A)10234 B)12344 C)12334 D)12234(32)有以下程序main(){inta[3][2]={0},(*ptr)[2],i,j;nfor(i=0;i<2;i++){ptr=a+i;scanf("%d",ptr);ptr++;}for(i=0;i<3;i++){for(j=0;j<2;j++)printf("%2d",a[i][j]);printf("n");}}若运行时输入:123<回车>,则输出结果是______。A)产生错误信息  B)10 C)12 D)10                   20    30    20                   00    00    30(33)有以下程序prt(int*m,intn){inti;for(i=0;i}main(){inta[]={1,2,3,4,5},i;prt(a,5);for(i=0;i<5;i++)printf("%d,",a[i]);}程序运行后的输出结果是______。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(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p}程序运行后的输出结果是______。A)1,2,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)有以下程序#defineP3voidF(intx){return(P*x*x);}main()n{printf("%dn",F(3+5));}程序运行后的输出结果是______。A)192 B)29 C)25 D)编译出错(36)有以下程序main(){intc=35;printf("%dn",c&c);}程序运行后的输出结果是______。A)0 B)70 C)35 D)1(37)以下叙述中正确的是______。A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间(38)若有以下说明和定义uniondt{inta;charb;doublec;}data;以下叙述中错误的是______。A)data的每个成员起始地址都相同B)变量data所占的内存字节数与成员c所占字节数相等C)程序段:data.a=5;printf("%fn",data.c);输出结果为5.000000D)data可以作为函数的实参(39)以下语句或语句组中,能正确进行字符串赋值的是______。A)char*sp;*sp="right!";B)chars[10];s="right!";C)chars[10];*s="right!";D)char*sp="right!";(40)设有如下说明typedefstructST{longa;intb;charc[2];}NEW;则下面叙述中正确的是______。A)以上的说明形式非法  B)ST是一个结构体类型C)NEW是一个结构体类型 D)NEW是一个结构体变量(41)有以下程序nmain(){inta=1,b;for(b=1;b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a-=3;}printf("%dn",b);}程序运行后的输出结果是______。A)3 B)4 C)5 D)6(42)有以下程序main(){chars[]="159",*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所指字符串中C)将b所指字符串连接到a所指字符串后面D)比较a和b所指字符串的大小(44)有以下程序main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;for(i=0;i<4;i++)n{for(j=0;j<=i;j++)printf("%4c",'');for(j=_____;j<4;j++)printf("%4d",num[i][j]);printf("n");}}若要按以下形式输出数组右上半三角1234678111216则在程序下划线处应填入的是______。A)i-1 B)i C)i+1 D)4-i(45)有以下程序point(char*p){p+=3;}main(){charb[4]={'a','b','c','d'},*p=b;point(p);printf("%cn",*p);}程序运行后的输出结果是______。A)a B)b C)c D)d(46)程序中若有如下说明和定义语句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;......}以下选项中对函数fun的正确调用语句是______。A)(*f1)(a); B)*f1(*s); C)fun(&a); D)ch=*f1(s);(47)有以下结构体说明和变量定义,如图所示:structnode{intdata;structnode*next;}*p,*q,*r;datanextdatanextdatanextpqrn现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是______。A)P->next=q->next; B)p->next=p->next->next;C)p->next=r;       D)p=q->next;(48)以下对结构体类型变量td的定义中,错误的是______。A)typedefstructaaB)structaa{intn;{intn;floatm;floatm;}AA;}td;AAtd;structaatd;C)structD)struct{intn;{intn;floatm;floatm;}aa;}td;structaatd;(49)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是______。A)feof(fp) B)ftell(fp) C)fgetc(fp) D)rewind(fp)(50)有以下程序#includevoidWriteStr(char*fn,char*str){FILE*fp;fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}main(){WriteStr("t1.dat","start");WriteStr("t1.dat","end");}程序运行后,文件t1.dat中的内容是______。A)start B)end C)startend D)endrt二、填空题(每空2分,共40分)请将每空的正确答案写在【1】至【20】序号的横线上,答在试卷上不得分。(1)某二叉树中度为2的结点有18个,则该二叉树中有【1】个叶子结点。n(2)在面向对象方法中,类的实例称为【2】。(3)诊断和改正程序中错误的工作通常称为【3】。(4)在关系数据库中,把数据表示成二维表,每一个二维表称为【4】。(5)问题处理方案的正确而完整的描述称为【5】。(6)以下程序运行时,若从键盘输入:102030<回车>,输出的结果是【6】。#includemain(){inti=0,j=0,k=0;scanf("%d%*d%d",&i,&j,&k);printf("%d%d%dn",i,j,k);}(7)以下程序运行后的输出结果是【7】。#defineS(x)4*x*x+1main(){inti=6,j=8;printf("%dn",S(i+j));}(8)以下程序运行后的输出结果是【8】。main(){inta=3,b=4,c=5,t=99;if(bif(aprintf("%d%d%dn",a,b,c);}(9)以下程序运行后的输出结果是【9】。main(){inta,b,c;a=10;b=20;c=(a%b<1)||(a/b>1);printf("%d%d%dn",a,b,c);}(10)以下程序运行后的输出结果是【10】。main()n{charc1,c2;for(c1='0',c2='9';c1printf("n");}(11)已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是【11】。#includemain(){chara,b;a=getchar();scanf("%d",&b);a=a-'A'+'0';b=b*2;printf("%c%cn",a,b);}(12)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;fun(3,4,a,b);for(i=0;i<3;i++)printf("%4d",b[i]);printf("n");}voidfun(intm,intn,intar[][4],int*br){inti,j,x;for(i=0;i{x=ar[i][0];for(j=0;j【12】=x;}}(13)以下程序运行后的输出结果是【13】。voidswap(intx,inty){intt;t=x;x=y;y=t;printf("%d%d",x,y);}main(){inta=3,b=4;swap(a,b);printf("%d%d",a,b);}n(14)以下程序运行后的输出结果是【14】。#includevoidfun(char*s,intp,intk){inti;for(i=p;i}main(){chars[]="abcdefg";fun(s,3,strlen(s));puts(s);}(15)以下程序运行后的输出结果是【15】。#includemain(){charch[]="abc",x[3][4];inti;for(i=0;i<3;i++)strcpy(x[i],ch);for(i=0;i<3;i++)printf("%s",&x[i][i]);printf("n");}(16)以下程序运行后的输出结果是【16】。fun(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}main(){inti,a=5;for(i=0;i<3;i++)printf("%d%d",i,fun(a));printf("n");}(17)以下程序运行后的输出结果是【17】。structNODE{intk;structNODE*link;};nmain(){structNODEm[5],*p=m,*q=m+4;inti=0;while(p!=q){p->k=++i;p++;q->k=i++;q--;}q->k=i;for(i=0;i<5;i++)printf("%d",m[i].k);printf("n");}(18)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。#includechar*huiwen(char*str){char*p1,*p2;inti,t=0;p1=str;p2=【18】;for(i=0;i<=strlen(str)/2;i++)if(*p1++!=*p2--){t=1;break;}if(【19】)return("yes!");elsereturn("no!");}main(){charstr[50];printf("Input:");scanf("%s",str);printf("%sn",【20】);                  2005年4月笔试试卷参考答案一、选择题1-5  DBDCA6-10 CBDDC11-15BACDB16-20CABAB21-25DABCBn26-30ACDDC31-35CBBAD36-40CDCDC41-45BADBA46-50ADCDB二、填空题(1) 【1】19(2) 【2】对象(3) 【3】程序调试(4) 【4】关系(5) 【5】算法(6) 【6】10300(7) 【7】81(8) 【8】4599(9) 【9】10200(10)【10】0918273645(11)【11】1B(12)【12】br[i](13)【13】4334(14)【14】abcfg(15)【15】abcbcc(16)【16】010111212(17)【17】13431(18)【18】str+strlen(str)-1【19】t==0或!t【20】huiwen(str)n2005年9月全国计算机等级考试二级C语言笔试试题(含参考答案)    一、选择题((1)—(10)每题2分,(11)—(50)每题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上答在试    卷上不得分。(1)下列叙述中正确的是A)程序设计就是编制程序          B)程序的测试必须由程序员自己去完成C)程序经调试改错后还应进行再测试 D)程序经调试改错后不必进行再测试(2)下列数据结构中,能用二分法进行查找的是A)顺序存储的有序线性表 B)线性链表C)二叉链表            D)有序线性链表(3)下列关于栈的描述正确的是A)在栈中只能插入元素而不能删除元素B)在栈中只能删除元素而不能插入元素C)栈是特殊的线性表,只能在一端插入或删除元素D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素(4)下列叙述中正确的是A)一个逻辑数据结构只能有一种存储结构B)数据的逻辑结构属于线性结构,存储结构属于非线性结构C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(5)下列描述中正确的是A)软件工程只是解决软件项目的管理问题B)软件工程主要解决软件产品的生产率问题C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D)软件工程只是解决软件开发中的技术问题(6)在软件设计中,不属于过程设计工具的是A)PDL(过程设计语言) B)PAD图 C)N-S图 D)DFD图(7)下列叙述中正确的是A)软件交付使用后还需要进行维护nB)软件一旦交付使用就不需要再进行维护C)软件交付使用后其生命周期就结束D)软件维护是指修复程序中被破坏的指令(8)数据库设计的根本目标是要解决A)数据共享问题     B)数据安全问题C)大量数据存储问题 D)简化数据维护(9)设有如下关系表:RSTABCABCABC112313112223223313则下列操作中正确的是A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S(10)数据库系统的核心是A)数据模型 B)数据库管理系统 C)数据库 D)数据库管理员(11)以下叙述中错误的是A)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符必须以字母或下划线开头D)用户定义的标识符中,大、小写字母代表不同标识(12)以下叙述中错误的是A)C语句必须以分号结束B)复合语句在语法上被看作一条语句C)空语句出现在任何位置都不会影响程序运行D)赋值表达式末尾加分号就构成赋值语句(13)以下叙述中正确的是A)调用printf函数时,必须要有输出项B)使用putchar函数时,必须在之前包含头文件stdio.hC)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码n(14)以下关于函数的叙述中正确的是A)每个函数都可以被其它函数调用(包括main函数)B)每个函数都可以被单独编译C)每个函数都可以单独运行D)在一个函数内部可以定义另一个函数(15)若有语句:char*line[5];,以下叙述中正确的是A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C)定义line是一个指针数组,语句中的*号称为间址运算符D)定义line是一个指向字符型函数的指针(16)有以下程序段typedefstructNODE{intnum;structNODE*next;}OLD; 以下叙述中正确的是A)以上的说明形式非法  B)NODE是一个结构体类型C)OLD是一个结构体类型 D)OLD是一个结构体变量(17)以下叙述中错误的是A)C语言中对二进制文件的访问速度比文本文件快B)C语言中,随机文件以二进制代码形式存储数据C)语句FILEfp;定义了一个名为fp的文件指针D)C语言中的文本文件以ASCII码形式存储数据(18)当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是A)k%2 B)k%2==1 C)(k%2)!=0 D)!k%2==1(19)以下不能正确计算代数式值的C语言表达式是A)1/3*sin(1/2)*sin(1/2) B)sin(0.5)*sin(0.5)/3C)pow(sin(0.5),2)/3     D)1/3.0*pow(sin(1.0/2),2)(20)以下能正确定义且赋初值的语句是A)intn1=n2=10;  B)charc=32;C)floatf=f+1.1; D)doublex=12.3E2.5;n(21)以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。main()/*Beginning*/{intr;floats;scanf("%d",&r);s=*p*r*r;printf("s=%fn",s);}出错的原因是A)注释语句书写位置错误     B)存放圆半径的变量r不应该定义为整型C)输出语句中格式描述符非法 D)计算圆面积的赋值语句中使用了非法变量(22)设有定义:intk=1,m=2;floatf=7;,则以下选项中错误的表达式是A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m(23)设有定义:inta=2,b=3,c=4;,则以下选项中值为0的表达式是A)(!a==1)&&(!b==0) B)(a C)a&&b D)a||(b+b)&&(c-a)(24)有以下程序段intk=0,a=1,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(aif(c==d)y=0;elsey=1; 该语句所表示的含义是A) B)C) D)(26)有以下程序段intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是A)任意正奇数 B)任意负偶数 C)任意正偶数 D)任意负奇数n(27)设变量已正确定义,则以下能正确计算f=n!的程序段是A)f=0;B)f=1;for(i=1;i<=n;i++)f*=i;for(i=1;iC)f=1;D)f=1;for(i=n;i>1;i++)f*=i;for(i=n;i>=2;i--)f*=i;(28)设有定义:intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是A)*p=*q; B)p=q; C)*p=&n1; D)p=*q;(29)若有定义:intx=0,*p=&x;,则语句printf("%dn",*p);的输出结果是A)随机值 B)0 C)x的地址 D)p的地址(30)设函数fun的定义形式为voidfun(charch,floatx){…}则以下对函数fun的调用语句中,正确的是A)fun("abc",3.0); B)t=fun('D',16.5);C)fun('65',2.8);  D)fun(32,32);(31)有以下程序main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf("%dn",*p+*q);}程序运行后的输出结果是A)16 B)10 C)8 D)6(32)有以下程序main(){charp[]={'a','b','c'},q[]="abc";printf("%d%dn",sizeof(p),sizeof(q));};程序运行后的输出结果是A)44 B)33 C)34 D)43(33)有以下程序#definef(x)(x*x)main()n{inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%dn",i1,i2);}程序运行后的输出结果是A)64,28B)4,4C)4,3D)64,64(34)有以下程序main(){chara1='M',a2='m';printf("%cn",(a1,a2));}以下叙述中正确的是A)程序输出大写字母M        B)程序输出小写字母mC)格式说明符不足,编译出错  D)程序运行时产生出错信息(35)有以下程序#includemain(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是A)变量c1被赋予字符a,c2被赋予回车符B)程序将等待用户输入第2个字符C)变量c1被赋予字符a,c2中仍是原有字符2D)变量c1被赋予字符a,c2中将无确定值(36)有以下程序main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}nk--;}printf("%dn",n);}程序运行后的输出结果是A)0 B)4 C)6 D)7(37)有以下程序main(){inta[]={2,4,6,8,10},y=0,x,*p;p=&a[1];for(x=1;x<3;x++)y+=p[x];printf("%dn",y);}程序运行后的输出结果是A)10 B)11 C)14 D)15(38)有以下程序voidsort(inta[],intn){inti,j,t;for(i=0;ifor(j=i+1;jif(a[i]}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa+2,5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("n");}程序运行后的输出结果是A)1,2,3,4,5,6,7,8,9,10, B)1,2,7,6,3,4,5,8,9,10,C)1,2,7,6,5,4,3,8,9,10, D)1,2,9,8,7,6,5,4,3,10,(39)有以下程序voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);nprintf("%dn",a[2]);}程序运行后的输出结果是A)6 B)7 C)5 D)8(40)有以下程序voidswap1(intc0[],intc1[]){intt;t=c0[0];c0[0]=c1[0];c1[0]=t;}voidswap2(int*c0,int*c1){intt;t=*c0;*c0=*c1;*c1=t;}main(){inta[2]={3,5},b[2]={3,5};swap1(a,a+1);swap2(&b[0],&b[1]);printf("%d%d%d%dn",a[0],a[1],b[0],b[1]);}程序运行后的输出结果是A)3553 B)5335 C)3535 D)5353(41)有以下程序#includemain(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%dn",strlen(p),strlen(q));}以下叙述中正确的是A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3D)由于p和q数组中都没有字符串结束符,故长度都不能确定(42)有以下程序,其中函数f的功能是将多个字符串按字典顺序排序#includevoidf(char*p[],intn)n{char*t;inti,j;for(i=0;ifor(j=i+1;jif(strcmp(p[i],p[j])>0){t=p[i];p[i]=p[j];p[j]=t;}}main(){char*p[5]={"abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%dn",strlen(p[1]));}程序运行后的输出结果是A)2 B)3 C)6 D)4(43)有以下程序#includevoidf(char*s,char*t){chark;k=*s;*s=*t;*t=k;s++;t--;if(*s)f(s,t);}main(){charstr[10]="abcdefg",*p;p=str+strlen(str)/2+1;f(p,p-2);printf("%sn",str);}程序运行后的输出结果是A)abcdefg B)gfedcba C)gbcdefa D)abedcfg(44)有以下程序floatf1(floatn){returnn*n;}floatf2(floatn){return2*n;}main(){float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;p1=f1;p2=f2;y1=p2(p1(2.0));nt=p1;p1=p2;p2=t;y2=p2(p1(2.0));printf("%3.0f,%3.0fn",y1,y2);}程序运行后的输出结果是A)8,16 B)8,8 C)16,16 D)4,8(45)有以下程序inta=2;intf(intn){staticinta=3;intt=0;if(n%2){staticinta=4;t+=a++;}else{staticinta=5;t+=a++;}returnt+a++;}main(){ints=a,i;for(i=0;i<3;i++)s+=f(i);printf("%dn",s);}程序运行后的输出结果是A)26 B)28 C)29 D)24(46)有以下程序#includestructSTU{intnum;floatTotalScore;};voidf(structSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;}main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.0fn",s[0].num,s[0].TotalScore);n}程序运行后的输出结果是A)20045537 B)20044550 C)20042580 D)20041703(47)有以下程序#includestructSTU{charname[10];intnum;};voidf(char*name,intnum){structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};num=s[0].num;strcpy(name,s[0].name);}main(){structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;p=&s[1];f(p->name,p->num);printf("%s%dn",p->name,p->num);}程序运行后的输出结果是A)SunDan20042  B)SunDan20044C)LiSiGuo20042 D)YangSan20041(48)有以下程序structSTU{charname[10];intnum;floatTotalScore;};voidf(structSTU*p){structSTUs[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;++p;++q;*p=*q;}main(){structSTUs[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};f(s);printf("%s%d%3.0fn",s[1].name,s[1].num,s[1].TotalScore);}程序运行后的输出结果是A)SunDan20044550  B)Penghua20045537nC)LiSiGuo20042580 D)SunDan20041703(49)以下程序的功能是进行位运算main(){unsignedchara,b;a=7^3;b=~4&3;printf("%d%dn",a,b);}程序运行后的输出结果是A)43 B)73 C)70 D)40(50)有以下程序#includemain(){FILE*fp;inti,k,n;fp=fopen("data.dat","w+");for(i=1;i<6;i++){fprintf(fp,"%d",i);if(i%3==0)fprintf(fp,"n");}rewind(fp);fscanf(fp,"%d%d",&k,&n);printf("%d%dn",k,n);fclose(fp);}程序运行后的输出结果是A)00 B)12345 C)14 D)12二、填空题(每空2分,共40分)请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。(1)数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是【1】。(2)算法复杂度主要包括时间复杂度和【2】复杂度。(3)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中【3】       的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。n(4)一棵二叉树第六层(根结点为第一层)的结点数最多为【4】个。(5)数据结构分为逻辑结构和存储结构,循环队列属于【5】结构。(6)以下程序运行后的输出结果是【6】。main(){intx=0210;printf("%Xn",x);}(7)以下程序运行后的输出结果是【7】。main(){inta=1,b=2,c=3;if(c=a)printf("%dn",c);elseprintf("%dn",b);}(8)已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元【8】。(9)以下程序运行后的输出结果是【9】。main(){charc;intn=100;floatf=10;doublex;x=f*=n/=(c=50);printf("%d%fn",n,x);}(10)以下程序的功能是计算:s=1+12+123+1234+12345。请填空。main(){intt=0,s=0,i;for(i=1;i<=5;i++){t=i+【10】;s=s+t;}printf("s=%dn",s);}(11)已知字母A的ASCII码为65。以下程序运行后的输出结果是【11】。main(){chara,b;na='A'+'5'-'3';b=a+'6'-'2';printf("%d%cn",a,b);}(12)有以下程序intsub(intn){return(n/10+n%10);}main(){intx,y;scanf("%d",&x);y=sub(sub(sub(x)));printf("%dn",y);} 若运行时输入:1234<回车>,程序的输出结果是【12】。(13)以下函数sstrcat()的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字     符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。#includevoidsstrcat(char*s,char*t){intn;n=strlen(s);while(*(s+n)=【13】){s++;t++;}}(14)以下程序运行后的输出结果是【14】。#includechar*ss(char*s){char*p,t;p=s+1;t=*s;while(*p){*(p-1)=*p;p++;}*(p-1)=t;returns;}main(){char*p,str[10]="abcdefgh";p=ss(str);printf("%sn",p);}n(15)以下程序运行后的输出结果是【15】。intf(inta[],intn){if(n>=1)returnf(a,n-1)+a[n-1];elsereturn0;}main(){intaa[5]={1,2,3,4,5},s;s=f(aa,5);printf("%dn",s);}(16)以下程序运行后的输出结果是【16】。structNODE{intnum;structNODE*next;};main(){structNODEs[3]={{1,''},{2,''},{3,''}},*p,*q,*r;intsum=0;s[0].next=s+1;s[1].next=s+2;s[2].next=s;p=s;q=p->next;r=q->next;sum+=q->next->num;sum+=r->next->next->num;printf("%dn",sum);}(17)以下程序的功能是输出如下形式的方阵:13141516910111256781234请填空。main(){inti,j,x;for(j=4;j【17】;j--){for(i=1;i<=4;i++){x=(j-1)*4+【18】;printf("%4d",x);}nprintf("n");}}(18)以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二     维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。#defineN4voidrotate(inta[][N],intb[][N]){inti,j;for(i=0;i{b[i][N-1]=【19】;【20】=a[N-1][i];}}             2005年9月C语言笔试参考答案一、题答案(1)—(10)CACDC DAABB(11)—(20)ACBBA CCDAB(21)—(30)DCABC DDABD(31)—(40)BCCAA DCCAA(41)—(50)BCBAC DABAD二、填空题(1)数据库系统(2)空间(3)驱动模块(4)32(5)存储结构(6)88(7)1(8)p=(double*)malloc(sizeof(double))(9)220(10)t*10(11)67G(12)10n(13)*t(14)bcdefgha(15)15(16)5(17)>0(18)6(19)a[0][i](20)b[i][0]n2006年4月全国计算机等级考试二级C语言笔试试题(含参考答案)    一选择题((1)-(10)每题2分,(11)-(50)每题1分,共60分)    下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。    1)下列选项中不属于结构化程序设计方法的是      A)自顶向下 B)逐步求精  C)模块化  D)可复用    2)两个或两个以上模块之间关联的紧密程度称为      A)耦合度  B)内聚度  C)复杂度  D)数据传输特性    3)下列叙述中正确的是      A)软件测试应该由程序开发者来完成      B)程序经调试后一般不需要再测试      C)软件维护只包括对程序代码的维护      D)以上三种说法都不对    4)按照“后进先出”原则组织数据的数据结构是      A)队列  B)栈  C)双向链表  D)二叉树    5)下列叙述中正确的是      A)线性链表是线性表的链式存储结构      B)栈与队列是非线性结构      C)双向链表是非线性结构      D)只有根结点的二叉树是线性结构    6)对如下二叉树             进行后序遍历的结果为n      A)ABCDEF B)DBEAFC C)ABDECF D)DEBFCA    7)在深度为7的满二叉树中,叶子结点的个数为      A)32 B)31 C)64 D)63    8)“商品”与“顾客”两个实体集之间的联系一般是      A)一对一  B)一对多  C)多对一  D)多对多    9)在E-R图中,用来表示实体的图形是      A)矩形  B)椭圆形  C)菱形  D)三角形    10)数据库DB,数据库系统DBS,数据库管理系统DBMS之间的关系是      A)DB包含DBS和DBMS      B)DBMS包含DB和DBS      C)DBS包含DB和DBMS      D)没有任何关系    11)以下不合法的用户标识符是      A)j2_KEY B)Double C)4d D)_8_    12)以下不合法的数值常量是      A)011 B)lel C)8.0E0.5 D)0xabcd    13)以下不合法的字符常量是      A)'18'  B)'”'  C)'\'  D)‘xcc'    14)表达式3.6-5/2+1.2+5%2的值是      A)4.3 B)4.8 C)3.3 D)3.8    15)以下能正确定义字符串的语句是      A)charstr[]={‘64'};      B)charstr=”x43”;      C)charstr=”;      D)charstr[]=””;    16)以下数组定义中错误的是      A)intx[][3]={0};      B)intx[2][3]={{1,2},{3,4},{5,6}};      C)ntx[][3]={{1,2,3},{4,5,6}};n      D)intx[2][3]={1,2,3,4,5,6};    17)若要求从键盘读入含有空格字符的字符串,应使用函数      A)getc() B)gets() C)getchar() D)scanf()    18)下四个程序中,完全正确的是      A)#includeB)#include      main();main()      {/*programming*/{/*/programming/*/      printf(“programming!n”);}printf(“programming!n”);}      C)#includeD)include      main()main()      {/*/*programming*/*/{/*programming*/      printf(“programming!n”);}printf(“programming!n”);}    19)若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是      A)switch(x)B)switch((int)x);      {case1.0:printf(“*n”);{case1:printf(“*n”);      Case2.0:printf(“**n”);}case2:printf(“**n”);}      C)switch(a+b)D)switch(a+b)      {case1:printf(“*n”);{case1:printf(*n”);      case2+1:printf(“**n”);}casec:printf(“**n”);}    20)若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是      A)main()B)floatfun(inta,intb){……}      {……x=fun(2,10);……}main()      floatfun(inta,intb){……}{……x=fun(i,j);……}      C)floatfun(int,int);D)main()      main(){floatfun(inti,intj);      {……x=fun(2,10);……}……x=fun(i,j);……}      floatfun(inta,intb){……}floatfun(inta,intb){……}    21)在以下给出的表达式中,与while(E)中的(E)不等价的表达式是      A)(!E=0)B)(E>0||E<0)C)(E==0)D)(E!=0)    22)要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是n      A)while((ch=getchar())!='N')printf(“%c”,ch);      B)while(ch=getchar()!='N')printf(“%c”,ch);      C)while(ch=getchar()==N')printf(“%c”,ch);      D)while((ch=getchar())=='N')printf(“%c”,ch);    23)已定义以下函数      intfun(int*p)      {return*p;}      fun函数返回值是      A)不确定的值B)一个整数C)形参p中存放的值D)形参p的地址值    24)若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是      A)*p=&a;scanf(“%lf”,p);B)*p=&a;scanf(“%f”,p);      C)p=&a;scanf(“%lf”,*p);D)p=&a;scanf(“%lf”,p);    25)现有以下结构体说明和变量定义,如图所示,指针p,q,r分别指向一个链表中连续的三个结点。            structnode      {      chardata;      structnode*next;      }*p,*q,*r;      现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是      A)q->next=r->next;p->next=r;r->next=q;      B)p->next=r;q->next=r->next;r-.next=q;      C)q->next=r->next;r->next=q;p->next=r;      D)r->next=q;p-next=r;q-next=r->next;    26)有以下程序段      structst      {intx;int*y;}*pt:      inta[]={1,2},b[]={3,4};      structstc[2]={10,a,20,b};      pt=c;      以下选项中表达式的值为11的是n      A)*pt->y B)pt->x C)++pt->x D)(pt++)->x    27)设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为      A)EOF B)非0值  C)0 D)NULL    28)设有以下语句      inta=1,b=2,c;      c=a^(b<<2);      执行后,c的值为      A)6 B)7 C)8 D)9    29)有以下程序      #include      main()      {      charc1,c2,c3,c4,c5,c6;      scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4);      c5=getchar();c6=getchar();      putchar(c1);putchar(c2);      printf(“%c%cn”,c5,c6);      }      程序运行后,若从键盘输入(从第1列开始)      123<回车>      45678<回车>      则输出结果是      A)1267 B)1256 C)1278 D)1245    30)若有以下程序      main()      {inty=10;      while(y--);printf(“y=%dn”y);      }      程序运行后的输出结果是      A)y=0B)y=-1C)y=1D)while构成无限循环    31)有以下程序      main()      {n      inta=0,b=0,c=0,d=0;      if(a=1)b=1;c=2;      elsed=3;      printf(“%d,%d,%d,%dn”,a,b,c,d);      }      程序输出      A)0,1,2,0 B)0,0,0,3 C)1,1,2,0 D)编译有错    32)有以下程序      main()      {      inti,j,x=0;      for(i=0;i<2;i++)      V{x++;      for(j=0;j<=3;j++)      {      if(j%2)continue;      x++;      }      x++;      }      printf(“x=%dn”,x);      }      程序执行后的输出结果是      A)x=4 B)x=8 C)x=6 D)x=12    33)有以下程序      intfun1(doublea){returna*=a;}      intfun2(doublex,doubley)      {      doublea=0,b=0;      a=fun1(x);b=fun1(y);return(int)(a+b);      }      main()      {doublew;w=fun2(1.1,2.0);……}      程序执行后变量w中的值是      A)5.21 B)5 C)5.0 D)0.0n    34)有以下程序      main()      {      inti,t[][3]={9,8,7,6,5,4,3,2,1};      for(i=0;i<3;i++)printf(“%d”,t[2-i][i]);      }      程序的执行后的输出结果是      A)753 B)357 C)369 D)751    35)有以下程序      fun(charp[][10])      {intn=0,i;      for(i=0;i<7;i++)      if(p[i][0]=='T')n++;      returnn;      }      main()      {      charstr[][10]={“Mon”,“Tue”,“Wed”,“Thu”,”Fri”,”Sat”,”Sun”};      printf(“%dn”,fun(str));      }      程序执行后的输出结果是      A)1N B)2 C)3 D)0    36)有以下程序      main()      {      inti,s=0,t[]={1,2,3,4,5,6,7,8,9};      for(i=0;i<9;i+=2)s+=*(t+i);      printf(“%dn”,s);      }      程序执行后的输出结果是      A)45 B)20 C)25 D)36    37)有以下程序      voidfun1(char*p)      {      char*q;n      q=p;      while(*q!='')      {(*q)++;q++;}      }      main()      {chara[]={“Program”},*p;      p=&a[3];fun1(p);printf(“%sn”,a);      }      程序执行后的输出结果是      A)Prohsbn B)Prphsbn  C)Progsbn D)Program    38)有以下程序      voidswap(char*x,char*y)      {      chart;      t=*x;*x=*y;*y=t;      }      main()      {      char*s1=”abc”,*s2=”123”;      swap(s1,s2);printf(“%s,%sn”,s1,s2);      }      程序执行后的输出结果是      A)123,abc  B)abc,123  C)1bc,a23 D)321,cba    39)有以下程序      intfun(intn)      {      if(n==1)return1;      else      return(n+fun(n-1));      }      main()      {intx;      scanf(“%d”,&x);x=fun(x);printf(“%dn”,x);      }      程序执行时,给变量x输入10,程序的输出结果是n      A)55 B)54 C)65 D)45    40)有以下程序      intfun(intx[],intn)      {staticintsum=0,i;      for(i=0;isum+=x[i];      returnsum;      }      main()      {inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;      s=fun(a,5)+fun(b,4);printf(“%dn”,s);      }      程序执行后的输出结果是      A)45 B)50 C)60 D)55    41)有以下程序      main()      {      union{      charch[2];      intd;      }s;      s.d=0x4321;      printf(“%x,%xn”,s.ch[0],s.ch[1]);      }      在16位编译系统上,程序执行后的输出结果是      A)21,43 B)43,21 C)43,00 D)21,00    42)有以下程序      main()      {      char*p[]={“3697”,”2584”};      inti,j;longnum=0;      for(i=0;i<2;i++)      {j=0;      while(p[i][j]!='')      {if((p[i][j]-‘0')%2)num=10*num+p[i][j]-‘0';n      j+=2;      }}      printf(“%dn”num);      }      程序执行后的输出结果是      A)35 B)37 C)39 D)3975    43)执行以下程序后,test.txt文件的内容是(若文件能正常打开)      #include      main()      {FILE*fp;      char*s1=”Fortran”,*s2=”Basic”;      if((fp=fopen(“test.txt”,”wb”))==NULL)      {printf(“Can'topentest.txtfilen”);exit(1);}      fwrite(s1,7,1,fp);/*把从地址s1开始的7个字符写到fp所指文件中*/      fseek(fp,0L,SEEK_SET);/*文件位置指针移到文件开头*/      fwrite(s2,5,1,fp);      fclose(fp);      }      A)BasicanB)BasicFortranC)BasicD)FortranBasic    44)以下叙述中错误的是      A)C语言源程序经编译后生成后缀为.obj的目标程序      B)C语言经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件      C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中      D)C语言的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令    45)以下叙述中错误的是      A)算法正确的程序最终一定会结束      B)算法正确的程序可以有零个输出      C)算法正确的程序可以有零个输入      D)算法正确的程序对于相同的输入一定有相同的结果    46)以下叙述中错误的是      A)C程序必须由一个或一个以上的函数组成      B)函数调用可以作为一个独立的语句存在      C)若函数有返回值,必须通过return语句返回n      D)函数形参的值也可以传回对应的实参    47)设有以下定义和语句      charstr[20]=”Program”,*p;      p=str;      则以下叙述中正确的是      A)*p与str[0]中的值相等      B)str与p的类型完全相同      C)str数组长度和p所指向的字符串长度相等      D)数组str中存放的内容和指针变量p中存放的内容相同    48)以下叙述中错误的是      A)C程序中的#include和#define行均不是C语句      B)除逗号运算符外,赋值运算符的优先级最低      C)C程序中,j++;是赋值语句      D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算    49)以下叙述中正确的是      A)预处理命令行必须位于C源程序的起始位置      B)在C语言中,预处理命令行都以“#”开头      C)每个C程序必须在开头包括预处理命令行:#include      D)C语言的预处理不能实现宏定义和条件编译的功能    50)以下叙述中错误的是      A)可以通过typedef增加新的类型      B)可以用typedef将已存在的类型用一个新的名字来代表      C)用typedef定义新的类型名后,原有类型名仍有效      D)用typedef可以为各种类型起别名,但不能为变量起别名二:填空题(每空2分,共40分)    请将每一个空的正确答案写在答题卡[1]至[20]序号的横线上,答在试卷上不得分    1)对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为_______[1]________。    2)在面向对象方法中,_____[2]______描述的是具有相似属性与操作的一组对象。    3)在关系模型中,把数据看成是二维表,每一个二维表称为一个___[3]_____。n    4)程序测试分为静态分析和动态测试,其中__[4]______是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。    5)数据独立性分为逻辑独立性与物理独立性,当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为_[5]______。    6)若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的输出语句__[6]____。    7)以下程序用于判断a,b,c能否构成三角形,若能输出YES,若不能输出NO。当a,b,c输入三角形三条边长时,确定a,b,c能构成三角形的条件是需要同时满足三条件:a+b>c,a+c>b,b+c>a。请填空。      main()      {      floata,b,c;      scanf(“%f%f%f”,&a,&b,&c);      if(__[7]__)printf(“YESn”);/*a,b,c能构成三角形*/      elseprintf(“NOn”);/*a,b,c不能构成三角形*/      }    8)以下程序的输出结果是__[8]_____      main()      {inta[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;      for(i=0;i<3;i++)s+=a[i][i]+a[i][3-i-1];      printf(“%dn”,s);      }    9)当运行以下程序时,输入abcd,程序的输出结果是:_[9]____。      insert(charstr[])      {inti;      i=strlen(str);      while(i>0)      {str[2*i]=str[i];str[2*i-1]='*';i--;}      printf(“%sn”,str);      }      main()      {charstr[40];      scanf(“%s”,str);insert(str);      }n    10)以下程序的运行结果是:__[10]____      fun(intt[],intn)      {inti,m;      if(n==1)returnt[0];      else      if(n>=2){m=fun(t,n-1);returnm;}      }      main()      {      inta[]={11,4,6,3,8,2,3,5,9,2};      printf(“%dn”,fun(a,10));      }    11)现有两个C程序文件T18.c和myfun.c同时在TC系统目录(文件夹)下,其中T18.c文件如下:      #include      #include”myfun.c”      main()      {fun();printf(“n”);}      myfun.c文件如下:      voidfun()      {chars[80],c;intn=0;      while((c=getchar())!='n')s[n++]=c;      n--;      while(n>=0)printf(“%c”,s[n--]);      }      当编译连接通过后,运行程序T18时,输入Thank!则输出的结果是:___[11]。    12)以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为Hello!,c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。      char*fun(char*str,charc)      {intn=0;char*p=str;      if(p!=NULL)      while(p[n]!=c&&p[n]!='')n++;      if(p[n]==''returnNULL;      return(_[12]_);      }n    13)以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。      main()      {inti,j;      for(i=0;__[13]__;i++)      {j=i*10+6;      if(_[14]____)continue;      printf(“%d”,j);      }}    14)以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0,请填空      intisprime(inta)      {inti;      for(i=2;i<=a/2;i++)      if(a%i==0)__[15]___;      __[16]___;      }    15)以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形,例如,输入整数5时(注意:n不得大于10),程序运行结果如下:      ABCDE      FGHI      JKL      MN      O      请填空完成该程序。      main()      {inti,j,n;charch='A';      scanf(“%d”,&n);      if(n<11)      {      for(i=1;i<=n;i++)      {for(j=1;j<=n-i+1;j++)      {printf(“%2c”,ch);      ___[17]____;      }      【18】n      }      }      elseprintf(“nistoolarge!n”);      printf(“n”);      }    16)以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。      #include      typedefstructnode/*链表结点结构*/      {charsub[3];      Structnode*next;      }Node;      Nodefun(chars)/*建立链表*/      {……}      voiddisp(Node*h)      {      Node*p;      p=h->next;      While(【19】)      {      printf(“%sn”,p->sub);p=【20】;}      }      main()      {      Node*hd;      hd=fun();disp(hd);printf(“n”);}                2006年4月全国计算机等级考试二级C语言笔试试题参考答案    一、选择题      1-10:DADBADCDAC11-20:CCADDBBBCA21-30:CABDDCDDDB31-40:DBCBBCACAC41-50:ACADBDCDBA    二、填空题      1、452、类3、关系4、静态分析5、物理独立性6、printf("a=%d,b=%d",a,b)n      7、a+b>c&&a+c>b&&b+c>a8、309、a*b*c*d*10、1111、ahT      12、p+n或str+n13、i<=9或i<1014、j%3!=015、return0      16、return117、ch=ch+118、printf("n")19、p!=NULL20、p->nextn2006年9月二级C语言笔试试题(考试时间120分钟,满分100分)  一、选择题((1)~(10)每题2分,(11)~(50)每题1分,共60分)  下列各题 A)、B)、 C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列选项中不符合良好程序设计风格的是________。 A)源程序要文档化 B)数据说明的次序要规范化 C)避免滥用goto语句 D)模块设计要保证高耦合、高内聚(2)从工程管理角度,软件设计一般分为两步完成,它们是________。 A)概要设计与详细设计 B)数据设计与接口设计 C)软件结构设计与数据设计 D)过程设计与数据设计(3)下列选项中不属于软件生命周期开发阶段任务的是________。 A)软件测试 B)概要设计 C)软件维护 D)详细设计(4)在数据库系统中,用户所见的数据模式为________。 A)概念模式 B)外模式 C)内模式 D)物理模式(5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和________。 A)编码设计 B)测试阶段 C)运行阶段 D)物理设计(7)下列叙述中正确的是________。 A)一个算法的空间复杂度大,则其时间复杂度也必定大 B)一个算法的空间复杂度大,则其时间复杂度必定小 C)一个算法的时间复杂度大,则其空间复杂度必定小 D)上述三种说法都不对(8)在长度为64的有序线性表中进行顺序查找,最环境情况下需要比较的次数为________。 A)63 B)64 C)6 D)7(9)数据库技术的根本目标是要解决数据的________。 A)存储问题 B)共享问题 C)安全问题 D)保护问题n(11)下列叙述中错误的是________。 A)一个C语言程序只能实现一种算法 B)C程序可以由多个程序文件组成 C)C程序可以由一个或多个函数组成 D)一个C函数可以单独作为一个C程序文件存在(12)下列叙述中正确的是________。 A)每个C程序文件中都必须有一个main()函数 B)在C程序中main()函数的位置是固定的 C)C程序可以由一个或多个函数组成 D)在C程序的函数中不能定义另一个函数(13)下列定义变量的语句中错误的是________。 A)int_int; B)doubleint_; C)charFor; D)floatUSS(14)若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是________。 A)++x,y=x-- B)x+1=y C)x=x+10=x+y D)double(x)/10(15)以下关于逻辑运算符两侧运算对象的叙述中正确的是________。 A)只能是整数0或1 B)只能是整数0或非0的整数 C)可以是结构体类型的数据 D)可是任意合法的表达式(16)若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是________。 A)(x-y>0) B)(x-y<0) C)(x-y<║x-y>0) D)(x-y==0)(17)有以下程序 main() {intx,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%dn",x,y,z);n } 程序运行后的输出结果是________。 A)2,3,3 B)2,3,2 C)2,3,1 D)2,2,1(18)设有定义:inta;floatb;执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876543.0<回车>,a和b的值分别是________。 A)876和543.000000 B)87和6.000000 C)87和543.000000 D)76和543.000000(19)有以下程序 main() {inta=0,b=0; a=10;/*给a赋值 b=20;给b赋值*/ printf("a+b=%dn",a+b);/*输出计算结果*/ } 程序运行后输出结果是________。 A)a+b=0 B)a+b=30 C)30 D)出错(20)在嵌套使用if语句时,C语言规定else总是________。 A)和之前与其具有相同缩进位置的if配对 B)和之前与其最近的if配对 C)和之前与其最近的且不带else的if配对 D)和之前的第一个if配对(21)下列叙述中正确的是________。 A)break语句只能用于switch语句 B)在switch语句中必须使用default C)break语句必须与switch语句中的case配对使用 D)在switch语句中,不一定使用break语句(22)有以下程序 mian0 {intk=5; while(-k)printf("%d",k-=3); printf("n") } 执行后的输出结果是________。 A)1 B)2 C)4 D)死循环(23)有以下程序 main()n {inti; for(I=1;I<=40;I++) {if(I++%5=0) if(++I%8=0)printf("%d",i) } printf("n") } 执行后的输出结果是________。 A)5 B)24 C)32 D)40(24)以下选项中,值为1的表达式________。 A)1-"0" B)1-"" C)"1"-0 D)""-"0"(25)有以下程序 fun(intx,inty){return(x+y);} main() {inta=1,b=2,c=3,sum; sum=fun((a++,b++b,a+b),c++); printf("%dn",sum); } 执行后的输出结果是________。 A)6 B)7 C)8 D)9(26)有以下程序 main() {chars[]="abcde"; s+=2; printf("%dn",s[0]); } 执行后的结果是________。 A)输出字符a的ASCII码 B)输出字符c的ASCII码 C)输出字符c D)程序出错(27)有以下程序 fun(intx,inty)  {staticintm=0,I=2;  I+=m+1;m=I+x+y;returnm;n } main() {intj=1,m=I,k; k=fun(j,m);printf("%d",k); k=fun(j,m);printf("%dn",k) } 执行后的输出结果是________。  A)5,5 B)5,11 C)11,11 D)11,5(28)有以下程序 fun(intx) {intp; if(x==0║x==1)return(3); p=x-fun(x=2); retump; }main() {prinf("%dn",fun(7));} 执行后的输出结果是________。  A)7 B)3 C)3 D)0(29)在16位编译系统上,右有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是________。  A)p向高地址移了一个字节 B)p抽高地址移了一个存储单元  C)p向高地址移了两个字节 D)p与a+1等价(30)有以下程序 main() {inta=1,b=3,c=5; int*p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); printf("%dn",c); } 执行后的输出结果是  A)1 B)2 C)3 D)4(31)若有定义:intw[3][5];,则以下不能正确表示该数组元素的表达式是________。  A)*(*w+3) B)*(w+1)[4] C)*(*(w+1)) D)*(&w[0][0]+1)n(32)若有以下函数首部 intfun(doublex[10],int*n) 则下面针对此函数声母语句中正确的是________。  A)intfun(doublex,int*n); B)intfun(double,int);  C)intfun(double*x,intn); D)intfun(double*,int*);(33)若有定义语句:intk[2][3],*pk[3];,则以下语句中正确的是________。  A)pk=k; B)pk[0]=&k[1][2]; C)pk=k[0]; D)pk[1]=k;(34)有以下程序 voidchange(intk[]){k[0]=k[5];} main() {intx[10]={1,2,3,4,5,6,7,8,9,10},n=0 while(n<=4){change(&x[n]);n++;} for(n=0;n<5;n++)printf("%d",x[n]); printf("n"); } 程序运行后输出的结果是________。  A)678910 B)13579 C)12345 D)62345(35)若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是  A)#defineN10Inta[N] B)#definen5Inta[2*n]  C)inta[5+5] D)intn=10,a[n](36)有以下程序 main() {intx[3][2]={0},I; for(I=0;I<3;I++)scanf("%d",x[i]); printf("%3d%3d%3dn",x[0][0],x[0][1],x[1][0]); } 若运行时输入:246<回车>,则输出结果为________。  A)200 B)204 C)240 D)246(37)有以下程序 main() {chars[]={"aeiou"},*ps;n ps=s;printf("%cn",*ps+4); } 程序运行后的输出结果是________。  A)a B)e C)u D)元素s[4]的地址(38)以下语句中存在语法错误的是________。  A)charss[6][20];ss[1]="right?";  B)charss[][20]={"right?"};  C)char*ss[6];ss[1]="right?";  D)char*ss[]={"right?"};(39)若有定义:char*x=“abcdefghi”;,以下选项中正确运用了strepy函数的是________。  A)chary[10];strcpy(y,x[4]);  B)chary[10];strcpy(++y,&x[1]);  C)chary[10],*s;strcpy(s=y+5,x);  D)chary[10],*s;strcpy(s=y+1,x+1);(40)有以下程序 intadd(inta,intb){return+b};} main() {intk,(*f)(),a=5,b=10; f=add; … } 则以下函数调用语句错误的是________。  A)k=(*f)(a,b); B)k=add(a,b);  C)k=*f(a,b); D)k=f(a,b);(41)有以下程序 #include main(intargc,char*argv[]) {inti=1,n=0; while(i #defineN5 #defineMN+1 #definef(x)(x*M) main() {inti1,i2; i1=f(2); i2=f(1+1); printf(“%d%dn”,i1,i2); } 程序的运行结果是________。  A)1212 B)117 C)1111 D)127(44)设有以下语句 typedefstructTT {charc;inta[4];}CIN; 则下面叙述中正确的是________。  A)可以用TT定义结构体变量 B)TT是struct类型的变量  C)可以用CIN定义结构体变量 D)CIN是structTT类型的变量n(45)有以下结构体说明、变量定义和赋值语句 structSTD {charname[10]; intage; charsex; }s[5],*ps; ps=&s[0]; 则以下scanf函数调用语句中错误引用结构体变量成员的是________。  A)scanf(“%s”,s[0].name); B)scanf(“%d”,&s[0].age);  C)scanf(“%c”,&(ps>sex)); D)scanf(“%d”,ps>age);(46)若有以下定义和语句 uniondata {inti;charc;floatf;}x; inty; 则以下语句正确的是________。  A)x=10.5; B)x.c=101; C)y=x; D)printf(“%dn”,x);(47)程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。 datanext a b  cNULL  若有以下程序段  q=s;s=s>next;p=s;  while(p->next)p=p->next;  p->next=q;q->next=NULL;  该程序段实现的功能是________。  A)首结点成为尾结点 B)尾结点成为首结点  C)删除首结点 D)删除尾结点(48)若变量已正确定义,则以下语句的输出结果是________。  s=32;s^=32;printf(“%d”,s);n  A)-1 B)0 C)1 D)32(49)以下叙述中正确的是________。  A)C语言中的文件是流式文件,因此只能顺序存取数据  B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖  C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据  D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失(50)有以下程序 #include main() {FILE*fp;inti; charch[]=”abcd”,t; fp=fopen(“abc.dat”,”wb+”); for(i=0;i<4;i++)fwriter&ch[],1,1fp; fseek(fp,-2L,SEEK_END); fread(&t,1,1,fp); fclose(fp); printf(“%cn”,t); } 程序执行后的输出结果是________。  A)d B)c C)b D)a参考答案:06年9月二级c答案 一、选择题: 01—05 DACBD         06—10   CDBBA 11—15 ADDAD         16—20   CCBBC 21—25 DACBC         26—30   ABCDC 31—35 ADBAD         36—40   BBADC 41—45 CBBCD         46—50   BABDC 二、填空题: 1、3 n2、调试 3、元组 4、栈 5、线性6、12346.07、10 11 8、1 9、  7  4 10、n=n/10 11、(x+8) 12、sin(x) 13、0 14、i%2==0 15、s-- 16、*s++ 17、18 18、16 11 19、->data 20、”rb”n2007年4月全国计算机等级考试二级C语言笔试试卷(含参考答案)    一、选择题((1)—(10)每小题2分,(11)—(50)每题1分,共60分)    下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上    答在试卷上不得分。    (1)下列叙述中正确的是(B)      A)算法的效率只与问题的规模有关,而与数据的存储结构无关      B)算法的时间复杂度是指执行算法所需要的计算工作量      C)数据的逻辑结构与存储结构是一一对应的      D)算法的时间复杂度与空间复杂度一定相关    (2)在结构化程序设计中,模块划分的原则是(D)      A)各模块应包括尽量多的功能      B)各模块的规模应尽量大      C)各模块之间的联系应尽量紧密      D)模块内具有高内聚度、模块间具有低耦合度    (3)下列叙述中正确的是(A)      A)软件测试的主要目的是发现程序中的错误      B)软件测试的主要目的是确定程序中错误的位置      C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作      D)软件测试是证明软件没有错误    (4)下面选项中不属于面向对象程序设计特征的是(C)      A)继承性 B)多态性 C)类比性 D)封装性    (5)下列对队列的叙述正确的是(D)      A)队列属于非线性表      B)队列按“先进后出”原则组织数据      C)队列在队尾删除数据      D)队列按“先进先出”原则组织数据    (6)对下列二叉树      An      BC      DEFX      YZ      进行前序遍历的结果为(C)      A)DYBEAFCZX  B)YDEBFZXCA      C)ABDYECFXZ  D)ABCDEFXYZ    (7)某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为(A)      A)n+1 B)n-1 C)2n D)n/2    (8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是(B)      A)并 B)交 C)投影 D)笛卡儿乘积    (9)在E-R图中,用来表示实体之间联系的图形是(C)      A)矩形 B)椭圆形 C)菱形 D)平行四边形    (10)下列叙述中错误的是(A)      A)在数据库系统中,数据的物理结构必须与逻辑结构一致      B)数据库技术的根本目标是要解决数据的共享问题      C)数据库设计是指在已有数据库管理系统的基础上建立数据库      D)数据库系统需要操作系统的支持    (11)算法中,对需要执行的每一步操作,必须给出清楚、严格的规定,这属于算法的(C)      A)正当性 B)可行性 C)确定性 D)有穷性    (12)下列叙述中错误的是(D)      A)计算机不能直接执行用C语言编写的源程序      B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件      C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件      D)后缀为.obj和.exe的二进制文件都可以直接运行    (13)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(B)      A)大写字母 B)连接符 C)数字字符 D)下划线    (14)以下叙述中错误的是(C)n      A)C语言是一种结构化程序设计语言      B)结构化程序有顺序、分支、循环三种基本结构组成      C)使用三种基本结构构成的程序只能解决简单问题      D)结构化程序设计提倡模块化的设计方法    (15)对于一个正常运行的C程序,以下叙述中正确的是(A)      A)程序的执行总是从main函数开始,在main函数结束      B)程序的执行总是从程序的第一个函数开始,在main函数结束      C)程序的执行总是从main函数开始,在程序的最后一个函数中结束      D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束    (16)设变量均已正确定义,若要通过scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)(D)      A)10□X□20□Y〈回车〉   B)10□X20□Y〈回车〉      C)10□X〈回车〉          D)10X〈回车〉         20□Y〈回车〉             20Y〈回车〉    (17)若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是(C)      A)sqrt(abs(n^x+e^x))           B)sqrt(fabs(pow(n,x)+pow(x,e)))      C)sqrt(fabs(pow(n,x)+exp(x)))  D)sqrt(fabs(pow(x,n)+exp(x)))    (18)设有定义:intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(A)      A)k++ B)k+=1 C)++k D)k+1    (19)有以下程序,其中%u表示按无符号整数输出(B)      main()      {unsignedintx=0xFFFF;/*x的初值为十六进制数*/      printf(“%un”,x);      }程序运行后的输出结果是      A)-1 B)65535 C)32767 D)0xFFFF    (20)设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是(C)      A)if(x++);       B)if(x>y&&y!=0);      C)if(x>y)x--   D)if(y<0){;}        elsey++;        elsex++;n    (21)以下选项中,当x为大于1的奇数时,值为0的表达式(D)      A)x%2==1 B)x/2 C)x%2!=0 D)x%2==0    (22)以下叙述中正确的是(C)      A)break语句只能用于switch语句体中      B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环      C)break语句只能用在循环体内和switch语句体内      D)在循环体内使用break语句和continue语句的作用相同    (23)有以下程序(A)      main()      {intk=5,n=0;      do      {switch(k)      {case1:case3:n+=1;break;      default;n=0;k--;      case2:case4:n+=2;k--;break;      }      printf(“%d”,n);      }while(k>0&&n<5);      }      程序运行后的输出结果是      A)235 B)0235 C)02356 D)2356    (24)有以下程序      mian()      {inti,j;      for(i=1;i<4;i++)      {for(j=i;j<4;j++)printf(“%d*%d=%d“,i,j,i*j);      printf(“n”);      }      }      程序运行后的输出结果是(B)      A)1*1=11*2=21*3=3     B)1*1=11*2=21*3=3         2*1=22*2=4              2*2=42*3=6         3*1=33*3=9n      C)1*1=1                 D)1*1=1         1*2=22*2=4              2*1=22*2=4         1*3=32*3=63*3=9        3*1=33*2=63*3=9    (25)以下合法的字符型常量是(A)      A)”x13”B)”18”C)”65”D)”n”    (26)在C语言中,函数返回值的类型最终取决于(A)      A)函数定义时在函数首部所说明的函数类型      B)return语句中表达式值的类型      C)调用函数时主函数所传递的实参类型      D)函数定义时形参的类型    (27)已知大写字母A的ASCII码是65,小写字母aASCII码是97,以下不能将变量c中大写字母转换为对应小写字母的语句是(D)      A)c=(c-A)%26+’a’  B)c=c+32      C)c=c-‘A’+’a’   D)c=(‘A’+c)%26-‘a’    (28)有以下函数      intfun(char*s)      {char*t=s;      while(*t++);      return(t-s);      }      该函数的功能是(B)      A)比较两个字符的大小    B)计算s所指字符串占用内存字节的个数      C)计算s所指字符串的长度 D)将s所指字符串复制到字符串t中    (29)设已有定义:floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是(D)      A)float*p=1024;   B)int*p=(floatx);      C)floatp=&x;      D)float*P=&x;    (30)有以下程序      #include      main()      {intn,*p=NULL;      *p=&n;n      printf(“Inputn:”);scanf(“%d”,&p);printf(“outputn:”);printf(“%dn”,p);      }      该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是(A)      A)intn,*p=NULL; B)*p=&n; C)scanf(“%d”,&p) D)printf(“%dn”,p);    (31)以下程序中函数f的功能是:当flag为1时,进行有由小到大排序;当flag为0时,进行由大到小排序。      voidf(intb[],intn,intflag)      {inti,j,t;      for(i=0;ib[j]:b[i]a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/      for(i=0;i<4;i++)printf(“%d,”,a[i][j]);      }      程序运行后的输出结果是(A)      A)1,6,5,7, B)8,7,3,1, C)4,7,5,2, D)1,6,2,1,    (35)有以下程序      main()      {inta[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,k,t;      for(i=0;i<3;i++)      for(k=i+i;k<4;k++)if(a[i][i]      main()      {charp[20]={‘a’,’b’,’c’,’d’},q[]=”abc”,r[]=”abcde”;      strcpy(p+strlen(q),r);strcat(p,q);      printf(“%d%dn”,sizeof(p),strlen(p));      }      程序运行后的输出结果是(C)      A)209 B)99 C)2011 D)1111    (38)有以下程序      #include      main()      {charp[20]={‘a’,’b’,’c’,’d’},q[]=”abc”,r[]=”abcde”      strcat(p,r);Strcpy(p+strlen(q),q);      Printf(“%dn”,sizeof(p));      }      程序运行后的输出结果是(B)      A)9 B)6 C)11 D)7    (39)有以下程序      #include      main()n      voidf(charp[][10],intn)/*字符串从小到大排序*/      {chart[10];inti,j;      for(i=0;i0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[i],t);}      }      main()      {charp[5][10]={“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”};      f(p,5);      printf(“%dn”,strlen(p[0]));      }      程序运行后的输出结果是(C)      A)2 B)4 C)6 D)3    (40)有以下程序      voidf(intn,int*r)      {intr1=0;      if(n%3==0)r1=n/3;      elseif(n%5==0)r1=n/5;      elsef(--n,&r1);      *r=r1;      }      main()      {intm=7,r;      f(m,&r);printf(“%dn,r”);      }      程序运行后的输出结果是(A)      A)2 B)1 C) 3 D)0    (41)有以下程序      main(intargc,char*argv[])      {intn=0,i;      for(i=1;in-1;i++)      for(j=i+1;jn;j++)      if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=p->a[j];p->a[j]=t;}      }      main()      {inti;structSs={10,{2,3,1,6,8,7,5,4,10,9}};      f(&s);      for(i=0;i      main()      {FILE*fp;intk,n,a[6]={1,2,3,4,5,6};      fp=fopen(“d2.dat”,”w”);      fprintf(fp,”%d%dn”,a[0],a[1],a[2]);fprintf(fp,“%d%d%dn”,a[3],a[4],a[5]);      fclose(fp);      fp=fopen(“d2.dat”,”r”);      fscanf(fp,“%d%d”,&k,&n);printf(“%d%dn”,k,n);      fclose(fp);      }      程序运行后的输出结果是(D)      A)12 B)14 C)1234 D)123456    (50)有以下程序      #include      main()      {FILE*fp;inti,a[6]={1,2,3,4,5,6k};      fp=fopen(“d3.dat”,”w+b”);      fwrite(a,sizeof(int),6,fp);      fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/      fread(a,sizeof(int),3,fp);fclose(fp);n      for(i=0;i<6;i++)printf(“%d,”,a[i]);      }      程序运行后的输出结果是(A)      A)4,5,6,4,5,6, B)1,2,3,4,5,6, C)4,5,6,1,2,3, D)6,5,4,3,2,1,二.填空题(每空2分,共40分)    请将每一个空的正确答案写在答题卡[1]至[20]序号的横线上,答在试卷上不得分。    注意:以命令关键字填空的必须写完整    (1)在深度为7的满二叉树中,度为2的结点个数为___63____。    (2)软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于__黑箱(或黑盒)测试。    (3)在数据库系统中,实现各种数据管理功能的核心软件称为__数据库管理系统__。    (4)软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于开发_____阶段。    (5)在结构化分析使用的数据流图(DFD)中,利用数据字典对其中的图形元素进行确切解释。    (6)执行以下程序后的输出结果是a=14。      main()      {inta=10;      a=(3*5,a+4);printf(“a=%dn”,a);      }    (7)当执行以下程序时,输入1234567890<回车>,则其中while循环体将执行      0次。      #include      main()      {charch;      While((ch=getchar())==’0’)printf(“#”);      }    (8)以下程序的运行结果是m=4k=4i=5k=5。n      intk=0;      voidfun(intm)      {m+=k;k+=m;printf(“m=%dnk=%d”,m,k++);}      main()      {inti=4;      fun(i++);printf(“i=%dk=%dn”,i,k);      }    (9)以下程序的运行结果是#&。      main()      {inta=2,b=7,c=5;      switch(a>0)      {case1:switch(b<0)      {case1:switch(“@”);break;      Case2:printf(“!”);break;      }      case0:switch(c==5)      {case0:printf(“*”);break;      case1:printf(“#”);break;      case2:printf(“$”);break;      }      default:printf(“&”);      }      printf(“n”);      }    (10)以下程序的输出结果是9      #include      main()      {printf(“%dn”,strlen(“IBMn0121\”));      }    (11)已定义charch=”$”;inti=1,j;执行j=!ch&&i++以后,i的值为1    (12)以下程序的输出结果是54      #include      main()n      {chara[]={‘1’,’2’,’3’,’4’,’’};      printf(“%d%dn”,sizeof(a),srelen(a));      }    (13)设有定义语句:inta[][3]={{0},{1},{2}};,则数组元素a[1][2]的值为0    (14)以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。      main()      {intx[10],a[9],I;      for(i=0;i<10;i++)      scanf(“%d”,&x[i]);      for(i=1;i<10;i++)      a[i-1]=x[i]+x[i-1];      for(i=0;i<9;i++)      printf(“%d”,a[i]);      printf(“n”);    (15)以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上,请填空:      main()      {intx,y,z,max,*px,*py,*pz,*pmax;      scanf(“%d%d%d”,&x,&y,&z);      px=&x;      py=&y;      pz=&z;      pmax=&max;      *pmax=*px(或*pmax=x);      if(*pmax<*py)*pmax=*py;      if(*pmax<*pz)*pmax=*pz;      printf(“max=%dn”,max);      }    (16)以下程序的输出结果是10      intfun(int*x,intn)      {if(n==0)      returnx[0]elsereturnx[0]+fun(x+1,n-1);n      }      main()      {inta[]={1,2,3,4,5,6,7};      printf(“%dn”,fun(a,3));      }    (17)以下程序的输出结果是35      #include      main()      {char*s1,*s2,m;      s1=s2=(char*)malloc(sizeof(char));      *s1=15;      *s2=20;      m=*s1+*s2;      printf(“%dn”,m);      }    (18)设有说明      structDATE{intyear;intmonth;intday;};      请写出一条定义语句,该语句定义d为上述结构体变量,并同时为其成员year、month、day依次赋初值2006、10、1:structDATAd={2006,10,1};    (19)设有定义:FILE*fw;,请将以下打开文件的语句补充完整,以便可以向文本文件readme.txt的最后续写内容。      fw=fopen(“readme.txt”,"a")                                    参考答案    一、选择题:      1-5  24134      6-10 31321      11-1534231      16-2043113      21-2543421n      26-3014241      31-3522412      36-4023232      41-4542411      46-5013241    二、填空题:      1. 63      2, 墨盒      3.  DBNS      4,  开发      5, 数据字典      6, a-14      7, 0      8, 无答案      9, #与号      10,9      11,1      12, 5_4      13, 130      14, i=1      15, X[i-1]      16, 无答案      17,10      18,40      19,无答案      20, 20annnnnnnnnn2008年4月全国计算机等级考试二级笔试试卷C语言程序设计如果您还需要更多的资料,欢迎到混在校园论坛来做客!(考试时间90分钟,满分100分)一、选择题(共70分)下列各题A),B),C),D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)程序流程图中指有箭头的线段表示的是A)图元关系B)数据流C)控制流D)调用关系(2)结构化程序设计的基本原则不包括A)多态性B)自顶向下C)模块化D)逐步求精(3)软件设计中模块划分应遵循的准则是A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(4)在软件开发中,需求分析阶段产生的主要文档是A)可行性分析报告B)软件需求规格说明书C)概要设计说明书D)集成测试计划(5)算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)下列关于栈的叙述正确的是A)栈按“先进先出”组织数据B)栈按“先进后出”组织数据C)只能在栈底插入数据D)不能删除数据(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于[C]A)需求分析阶段B)概念设计阶段C)逻辑设计阶段D)物理设计阶段(9)有三个关系R、S和T如下:TBCDa0k1RSnBCDa0k1b1n1BCDf3h2a0k1n2x1有关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩(11)以下叙述中正确的是A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中(12)以下选项中不合法的标识符是A)printB)FORC)&aD)_00(13)以下选项中不属于字符常量的是A)'C'B)"C"C)'xCC0'D)'72'(14)设变量已正确定义并赋值,以下正确的表达式是A)x=y*5=x+zB)int(15.8%5)C)x=y+z+5,++yD)x=25%5.0(15)以下定义语句中正确的是A)inta=b=0;B)charA=65+1,b='b';C)floata=1,*b=&a,*c=&b;D)doublea=0.0,b=1.1;(16)有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%dn",k);已知字符a的ASCll十进制代码为97,则执行上述程序段后输出结果是nA)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是A)kk>='A'&&kk<='Z'B)!(kk>='A'‖kk<='Z')C)(kk+32)>='a'&&(kk+32)<='z'D)isalpha(kk)&&(kk<91)(18)当变量c的值不为2、4、6时,值也为“真”的表达式是A)(c==2)‖(c==4)‖(c==6)B)(c>=2&&c<=6)‖(c!=3)‖(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=1)(19)若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf("%d,%d,%dn",a,b,c);其输出结果是A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7(20)有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“a=%d,b=%dn”,a,b);}程序的运行结果是A)a=1,b=0B)a=2,b=2C)a=1,b=1D)a=2,b=1(21)有以下程序#includenmain(){intx=8;for(;x>0;x--){if(x%3){printf(“%d,”,x--);continue;}printf(“%d,”,--x);}}程序的运行结果是A)7,4,2B)8,7,5,2C)9,7,6,4D)8,5,4,2(22)以下不构成无限循环的语句或者语句组是A)n=0;B)n=0;do{++n;}while(n<=0);while(1){n++;}C)n=10;D)for(n=0,i=1;;i++)n+=i;while(n);{n--;}(23)有以下程序#includemain(){inta[]={1,2,3,4},y,*p=&a[3];--p;y=*p;printf(“y=%dn”,y);}程序的运行结果是A)y=0B)y=1C)y=2D)y=3(24)以下错误的定义语句是A)intx[][3]={{0},{1},{1,2,3}};B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};D)intx[][3]={1,2,3,4};(25)设有如下程序段chars[20]=“Bejing”,*p;p=s;则执行p=s;语句后,以下叙述正确的是A)可以用*p表示s[0]B)s数组中元素的个数和p所指字符串长度相等C)s和p都是指针变量D)数组s中的内容和指针变量p中的内容相等(26)若有定义:inta[2][3];,以下选项中对a数组元素正确引用的是nA)a[2][!1]B)a[2][3]C)a[0][3]D)a[1>2][!1](27)有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[0]);B)scanf(“%s”,s+1);C)gets(s);D)scanf(“%s”,s[1]);(28)以下叙述中错误的是A)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#defineMAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)以下结构体类型说明和变量定义中正确的是A)typedefstructB)structREC;{intn;charc;}REC;{intn;charc;};RECt1,t2;RECt1,t2;C)typedefstructREC;D)struct{intn=0;charc=’A’;}t1,t2;{intn;charc;}RECt1,t2;(30)以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件(31)有以下程序#includemain(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf(“%d”,c[i]);printf(“n”);}程序的运行结果是A)1234B)2344C)4332D)1123(32)有以下程序#includevoidfun(int*s,intnl,intn2){inti,j,t;i=nl;j=n2;while(i#includevoidfun(char*s[],intn){char*t;inti,j;for(i=0;istrlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={“bcc”,”bbcc”,”xy”,”aaaacc”,”aabcc”};fun(ss,5);printf(“%s,%sn”,ss[0],ss[4]);}程序的运行结果是A)xy,aaaaccB)aaaacc,xyC)bcc,aabccD)aabcc,bcc(34)有以下程序#includeintf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf(“%dn”,z);}程序的运行结果是A)0B)9C)6D)8n(35)有以下程序#includevoidfun(char*a,char*b){while(*a==’*’)a++;while(*b=*a){b++;a++;}}main(){char*s=”****a*b****”,t[80];fun(s,t);puts(t);}程序的运行结果是A)*****a*bB)a*bC)a*b****D)ab(36)有以程序#include#includetypedefstruct{charname[9];charsex;floatscore[2];}STU;voidf(STUa){STUb={“Zhao”,’m’,85.0,90.0};inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];}main(){STUc={“Qian”,’p’,95.0,92.0};f(c);printf(“%s,%c,%2.0f,%2.0fn”,c.name,c.sex,c.score[0],c.score[1]);}程序的运行结果是A)Qian,f,95,92B)Qian,m,85,90C)Zhao,f,95,92D)Zhao,m,85,90(37)有以下程序#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“dl.dat”,”w”);for(i=0;i<3;i++)fprintf(fp,”%d”,a[i]);fprintf(fp,”n”);nfclose(fp);fp=fopen(“dl.dat”,”r”);fscanf(fp,”%d”,&n);fclose(fp);printf(“%dn”,n);}程序的运行结果是A)12300B)123C)1D)321(38)变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是A)a^bB)a|bC)a&bD)a<<4(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是A)auto和registerB)extern和registerC)auto和staticD)static和register(40)设有定义语句int(*f)(int);,则以下叙述正确的是A)f是基类型为int的指针变量B)f是指向函数的指针变量,该函数具有一个int类型的形参C)f是指向int类型一维数组的指针变量D)f是函数名,该函数的返回值是基类型为int类型的地址二、填空题(每空2分,共30分)请将每一个空的正确答案些在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)测试用例包括输入值集和【1】值集。(2)深度为5的满二叉树有【2】个叶子结点。(3)设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有【3】个元素。(4)在关系数据库中,用来表示实体之间联系的是【4】。(5)在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,【5】负责数据的模式定义与数据的物理存取构建。(6)已有定义:charc=’‘;inta=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为【6】。(7)设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【7】。(8)若有定义:intk;,以下程序段的输出结果是【8】。for(k=2;k<6;k++,k++)printf(“##%d”,k);(9)以下程序段的定义语句中,x[1]的初值是【9】,程序运行后输出的内容是【10】。#includemain(){intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;for(i=0;i<4;i++)n{p[i]=&x[2*i+1];printf(“%d”,p[i][0]);}printf(“n”);}(10)以下程序的输出结果是【11】。#includevoidswap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){inti=3,j=5,*p=&i,*q=&j;swap(p,q);printf(“%d%dn”,*p,*q);}(11)以下程序的输出结果是【12】。#includemain(){inta[5]={2,4,6,8,10},*p;p=a;p++;printf(“%d”,*p);}(12)以下程序的输出结果是【13】。#includevoidfun(intx){if(x/2>0)fun(x/2);printf(“%d”,x);}main(){fun(3);printf(“n”);}(13)以下程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并做为函数值返回。请填空:#include#defineN3typedefstruct{intnum;charnam[10];charsex;}SS;intfun(SSperson[])n{inti,n=0;for(i=0;imain(){FILE*fp;charch;fp=fopen(【15】);ch=fgetc(fp);whlie(!feof(fp)){putchar(ch);ch=fgetc(fp);}putchar(‘n’);fclose(fp);}参考答案:一、选择题1-10:CABBADBCDC11-20:CCBCBDBBBD21-30:DADCADDDAB31-40:CCACCABAAB二、填空题:1、输出2、163、244、关系5、数据定义语言6、07、38、##2##49、210、2468n11、3512、413、1314、person[i].sex15、“filea.dat”,”r”n2008年9月全国计算机等级考试二级C笔试试卷一、选择题1、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后在依次出栈,则元素出栈的顺序是A)12345ABCDEB)EDCBA54321C)ABCDE12345D)54321EDCBA2、下列叙述正确的是A)循环队列有队头和队尾两个指针,因此,循环队列是非线形结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定3、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是A)O(n)B)O(n2)C)O(log2n)D)O(log2n)4、下列叙述中正确的是A)顺序结构存储的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间5、数据流图中带有箭头的线段表示的是A)控制流B)事件驱动C)模块调用D)数据流6、在软件开发中,需求分析阶段可以使用的工具是A)N—S图B)DFD图C)PAD图D)程序流程图7、在面向对象的方法中,不属于〞对象〞基本特点的是A)一致性B)分类性C)多态性D)标识唯一性8、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是A)一对一B)一对多C)多对一D)多对多9、在数据管理技术发展的三个阶段中,数据共享最好的是A)人工管理阶段B)文件系统阶段C)数据库系统阶段D)三个阶段相同10、有三个关系R、S和T如下:RSTABm1n2BC13n35ABCm13由关系R和S通过运算得到关系T,则所使用的运算为A)笛卡尔积B)交C)并D)自然连接11、以下叙述中正确的是A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内写完12、计算机能直接执行的程序是A)源程序B)目标程序C)汇编程序D)可执行程序13、以下选项中不能作为C语言合法常量的是A)´cd´B)0.1c+6C)〞a〞D)´11´14、以下选项中正确的定义语句是A)doublea;b;B)doublea=b=7C)doublea=7,b=7;D)double,a,b;15、以下不能正确表示代数式2ab/cd的C语言表达式是A)2*a*b/c/dB)a*b/c/d*2C)a/c/d*b*2D)2*a*b/c*d16、C源程序中不能表示的数制是A)二进制B)八进制C)十进制D)十六进制17、若有表达式(w)?(-x):(++y),则其中与w等价的表达式是A)w==1B)w==0C)w!=1D)w!=018、执行以下程序段后,w的值为intw=´A´,x=14,y=15;W=((x||y)&&(w<´a´));A)-1B)NULLC)1D)019、若变量已正确定义为int型,要通过语句scanf(〞%d,%d,%d〞,&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(u代表一个空格符)A)uuu1,2,3<回车>B)1u2u3<回车>C)1,uuu2,uuu3<回车>D)1,2,3<回车>20、有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c,c=a;printf(〞a=%db=%dc=%dn〞,a,b,c);n程序的输出结果是A)a=10b=50c=10B)a=10b=50c=30C)a=10b=30c=10D)a=50b=30c=5021、若有以下定义语句:intm[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是A)m[-i]B)m[2*2]C)m[m[0]]D)m[m[i]]22、下面的函数调用语句中func函数的实参个数是func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));A)3B)4C)5D)823、若有定义语句:doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是A)*pB)x[5]C)*(p+1)D)*x24、若有定义语句:chars[10]=〞1234567〞;,则strlen(s)的值是A)7B)8C)9D)1025、以下叙述中错误的是A)用户自定义的函数中可以没有return语句B)用户自定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C)用户自定义的函数中若没有return语句,则应当定义函数为void类型D)函数的return语句中可以没有表达式26、以下关于宏的叙述中正确的是A)宏名必须用大写字母表示B)宏定义必须位于源程序中所有语句之前C)宏替换没有数据类型限制D)宏调用比函数调用耗费时间27、有以下程序#includemain(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf(〞%d〞,i+j);pintf(〞n〞);}}程序运行的结果是A)234B)432C)23D)453455433434452328、有以下程序#includenmain(){intx=1,y=2,z=3;if(x>y)if(y>z)printf(〞%d〞,++z);elseprintf(〞%d〞,++y);printf(〞%dn〞,x++);}程序运行的结果是A)331B)41C)2D)129、有以下程序#includemain(){inti=5;do{if(i%3==1)if(i%5==2){printf(〞%d〞,i);break;}i++;}while(i!=0);printf(〞n〞);}程序运行的结果是A)*7B)*3*5C)*5D)*2*630、有以下程序#includeintfun(inta,intb){if(b==0)returna;elsereturn(fun(-a,-b));}main(){printf(〞%dn〞,fun(4,2));}程序运行的结果是A)1B)2C)3D)431、有以下程序#include#include{int*p;p=(int*)malloc(sizeof(int));n*p=n;return*p;}main(){inta;a=fun(10);printf(〞%dn〞,a+fun(10));}程序运行的结果是A)0B)10C)20D)出错32、有以下程序#include(stdio.h)voidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf(〞%d,〞,c[i]);printf(〞n〞);}程序运行的结果是A)1,2,3,4,5,6,7,8,9,0B)2,1,4,3,6,5,8,7,0,9C)0,9,8,7,6,5,4,3,2,1D)0,1,2,3,4,5,6,7,8,933、有以下程序#includestructst{intx,y;}data[2]={1,10,2,20};main(){structst*p=data;printf(〞%d,〞,p->y);printf(〞%dn〞,(++p)->x);}程序运行的结果是A)10,1B)20,1C)10,2D)20,234、有以下程序#includevoidfun(inta[],intn){inti,t;for(i=1;i#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;iintfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;im)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf(〞%dn〞,fun(a,4,0));}程序运行的结果是A)4B)34C)31D)3237、有以下程序#includenmain(){structSTU{charname[9];charsex;doublescore[2];};structSTUa={〞Zhao〞,´m´,85.0,90.0},b={〞Qian〞,´f´,95.0,92.0};b=a;printf(〞%s,%c,%2.0f,%2.0fn〞,b.name,b.sex,b.score[0],b.score[1]);}程序运行的结果是A)Qian,f,95,92B)Qian,m,85,90C)Zhao,f,95,92D)Zhao,m,85,9038、假定已建立以下链表结构,且指针p和q已指向如图所示的结点:则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是A)(*p).next=(*q).next;free(p);B)p=q->next;free(q);C)p=q;free(q);D)p->next=q->next;free(q);39、有以下程序#includemain(){chara=4;printf(〞%dn,a=a<<1〞);}程序的运行结果是A)40B)16C)8D)440、有以下程序#includemain(){FILE*pf;char*s1=〞China〞,*s2=〞Beijing〞;pf=fopen(〞abc.dat〞,〞wb+〞);fwrite(s2,7,1,pf);rewind(pf);fwrite(s1,5,1,pf);fclose(pf);}以下程序执行后abc.dat文件的内容是A)ChinaB)ChinangnC)ChinaBeijingD)BeijingChina二、填空题1、对下列二叉树进行中序遍历的结果是().2、按照软件测试的一般步骤,集成测试应在()测试之后进行。3、软件工程三要素包括方法、工具和过程,其中,()支持软件开发的各个环节的控制和管理。4、数据库设计、()和物理设计。5、在二维表中,元组的()不能再分成更小的数据项。6、设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式()。7、若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7b=9请完成输出语句〞printf(〞___________________〞,a,b);8、以下程序的输出结果是()#includemain(){inti,j,sum;for(i=3;i>=1;i--){sum=0;for(j=1;j<=i;j++)sum+=i*j;}printf(〞%dn〞,sum);}9、以下程序的输出结果是()#includemain(){intj,a[]={1,3,5,7,9,11,13,15},*p=a+5;for(j=3;j;j--){switch(j){case1:case2:printf(〞%d〞,*p++);break;case3:printf(〞%d〞,*(--p));}}}n10、以下程序的输出结果是()#include#defineN5intfun(int*s,inta,intn){intj;*s=a;j=n;while(a!=s[j])j--;returnj;}main(){ints[N+1];intk;for(k=1;k<=N;k++)s[k]=k+1;printf(〞%dn〞,fun(s,4,N));}(11)以下程序的输出结果是_________。#includeintfun(intx){staticintt=0;return(t+=x);}main(){ints,i;for(i=1;i<=5;i++)s=fun(i);printf(〃%dn〃,s);}(12)以下程序按下面指定的数据给x数组的下三角置数,并按如下形式输出,请填空。43726915810#includemain(){intx[4][4],n=0,i,j;for(j=0;j<4,j++)for(i=3;i>=j;___________){n++;x[i][j]=____________;}for(i=0;i<4;i++)n{for(j=0;j<=i;j++)printf(〃%3d〃,x[i][j]);print(〃n〃);}}(13)以下程序的功能是:通过函数func输入字符并统计字符的个数。输入时用字符@作为输入结束标志。请填空。#includelong_______________;/*函数说明语句*/main(){longn;n=func();printf(〃n=%ldn〃,n);}longfunc(){longm;for(m=0;getchar()!=′@′;___________________);returnm;}参考答案一、选择题1-5: BDCAD6-10:BABCD11-15:CDACD16-20:ADCBA21-25:CABAB26-30:CDDAB31-35:CACDB36-40:CDDCB二、填空题(按空填)1、DBXEAYFZC2、单元3、过程4、逻辑设计5、分量6、a=-b7、a=%dnb=%dnn8、19、991110、311、1512、i--13、n14、func()15、m++本文来自阿里考题网--,原文地址:http://www.alikaoti.cnnnnnnnnnnnnn2009年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(1)下列数据结构中,属于非线性结构的是A)循环队列B)带链队列C)二叉树D)带链栈(2)下列数据结果中,能够按照“先进后出”原则存取数据的是A)循环队列B)栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A)可封装D)自顶向下C)模块化D)逐步求精(7)软件详细设计产生的图如下:n该图是A)N-S图B)PAD图C)程序流程图D)E-R图(8)数据库管理系统是A)操作系统的一部分B)在操作系统支持下的系统软件C)一种编译系统D)一种操作系统(9)在E-R图中,用来表示实体联系的图形是A)椭圆图B)矩形C)菱形D)三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A)选择B) 投影C)交D)并(11)以下叙述中正确的是 A)程序设计的任务就是编写程序代码并上机调试 B)程序设计的任务就是确定所用数据结构n C)程序设计的任务就是确定所用算法 D)以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A)voidB)8_8C)_0_D)unsigned(13)阅读以下程序 #include main() {intcase;floatprintF;  printf(“请输入2个数:”);  scanf(“%d%f”,&case,&pjrintF);  printf(“%d%fn”,case,printF); } 该程序编译时产生错误,其出错原因是 A)定义语句出错,case是关键字,不能用作用户自定义标识符 B)定义语句出错,printF不能用作用户自定义标识符 C)定义语句无错,scanf不能作为输入函数使用 D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是 A)0 B)3 C)4 D)515)若有定义语句:intx=10;,则表达式x-=x+x的值为 A)-20 B)-10 C)0 D)10(16)有以下程序 #include main() {inta=1,b=0;  printf(“%d,”,b=a+b);  printf(“%dn”,a=2*b); }n 程序运行后的输出结果是 A)0,0 B)1,0 C)3,2 D)1,217)设有定义:inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是 A)if(a>b)c=a,a=b,b=c; B)if(a>b){c=a,a=b,b=c;} C)if(a>b)c=a;a=b;b=c; D)if(a>b){c=a;a=b;b=c;}(18)有以下程序 #include main() {intc=0,k;  for(k=1;k<3;k++)  switch(k)  {default:c+=k case2:c++;break; case4:c+=2;break;  }  printf(“%dn”,c); } 程序运行后的输出结果是 A)3 B)5 C)7 D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是 A)if((a>b)&&(b>c))k=1;elsek=0; B)if((a>b)||(b>c)k=1;elsek=0; C)if(a<=b)k=0;elseif(b<=c)k=1; D)if(a>b)k=1;elseif(b>c)k=1; elsek=0;n20)有以下程序 #include main() {chars[]={“012xy”};inti,n=0; for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’)n++; printf(“%dn”,n); } 程序运行后的输出结果是 A)0 B)2 C)3 D)5(21)有以下程序 #include main() {intn=2,k=0;  while(k++&&n++>2);  printf(“%d%dn”,k,n); } 程序运行后的输出结果是 A)02 B)13 C)57 D)12(22)有以下定义语句,编译时会出现编译错误的是 A)chara=’a’; B)chara=’n’; C)chara=’aa’; D)chara=’x2d’;(23)有以下程序#includemain(){charc1,c2; c1=’A’+’8’-‘4’; c2=’A’+’8’-‘5’; printf(“%c,%dn”,c1,c2);n}已知字母A的ASCII码为65,程序运行后的输出结果是 A)E,68 B)D,69 C)E,D D)输出无定值(24)有以下程序 #include voidfun(intp) {intd=2;  p=d++;printf(“%d”,p);} main() {inta=1; fun(a);printf(“%dn”,a);} 程序运行后的输出结果是 A)32 B)12 C)21 D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#defineMIN-2147483647 intfindmax(intx[],intn) {inti,max;  for(i=0;i  {max=MIN; if(max  returnmax; } 造成错误的原因是 A)定义语句inti,max;中max未赋初值 B)赋值语句max=MIN;中,不应给max赋MIN值 C)语句if(max D)赋值语句max=MIN;放错了位置(26)有以下程序 #include main()n {intm=1,n=2,*p=&m,*q=&n,*r;  r=p;p=q;q=r;  printf(“%d,%d,%d,%dn”,m,n,*p,*q); } 程序运行后的输出结果是 A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2(27)若有定义语句:inta[4][10],*p,*q[4];且0≤i<4,则错误的赋值是 A)p=a B)q[i]=a[i] C)p=a[i] D)p=&a[2][1](28)有以下程序 #include #include main() {charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];  printf(“%d,”,strlen(p));printf(“%sn”,p); } 程序运行后的输出结果是 A)9,One*World B)9,One*Dream C)10,One*Dream D)10,One*World(29)有以下程序 #include main() {inta[]={2,3,5,4},i;  for(i=0;i<4;i++)  switch(i%2)  {case0:switch(a[i]%2) {case0:a[i]++;break;  case1:a[i]--; }break; case1:a[i[=0;n}for(i=0;i<4;i++)printf(“%d”,a[i]);printf(“n”);} A)3344 B)2050 C)3040 D)0304(30)有以下程序 #include#include main(){chara[10]=”abcd”; printf(“%d,%dn”,strlen(a),sizeof(a));}程序运行后的输出结果是 A)7,4 B)4,10 C)8,8 D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是 A)不可以用赋值语句给字符数组名赋字符串 B)可以用输入语句把字符串整体输入给字符数组 C)字符数组中的内容不一定是字符串 D)字符数组只能存放字符串(32)下列函数的功能是 fun(char*a,char*b) {while((*b=*a)!=’’){a++,b++;}} A)将a所指字符串赋给b所指空间 B)使指针b指向a所指字符串 C)将a所指字符串和b所指字符串进行比较 D)检查a和b所指字符串中是否有’’(33)设有以下函数  voidfun(intn,char*s){……} 则下面对函数指针的定义和赋值均是正确的是 A)void(*pf)();pf=fun; B)viod*pf();pf=fun; C)void*pf();*pf=fun;n D)void(*pf)(int,char);pf=&fun;(34)有以下程序 #include intf(intn); main() {inta=3,s;  s=f(a);s=s+f(a);printf(“%dn”,s); } intf(intn) {staticinta=1;  n+=a++;  returnn; } 程序运行以后的输出结果是 A)7 B)8 C)9 D)10(35)有以下程序 #include #definef(x)x*x*x main() {inta=3,s,t;  s=f(a+1);t=f((a+1));  printf(“%d,%dn’,s,t); } 程序运行后的输出结果是 A)10,64 B)10,10 C)64,10 D)64,64(36)下面结构体的定义语句中,错误的是 A)structord{intx;inty;intz;};structorda; B)structord{intx;inty;intz;}structorda; C)structord{intx;inty;intz;}a; D)struct{intx;inty;intz;}a;(37)设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是nA)charstr[]=”string”;c=str;B)scanf(“%s”,c);C)c=getchar();D)*c=”string”;(38)有以下程序#include#includestructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1fn”,a.a,a.b,a.c);}structAf(structAt)(t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;returnt;)程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段intr=8;printf(“%dn”,r>>1);输出结果是A)16B)8C)4D)2(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。n(2)程序流程图中的菱形框表示的是【2】。(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中【3】阶段产生“软件需求规格说明书。(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为【4】。(5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的是【5】。(6)若有定义语句:inta=5;,则表达式:a++的值是【6】。(7)若有语句doublex=17;inty;,当执行y=(int)(x/5)%2;之后y的值为【7】。(8)以下程序运行后的输出结果是【8】。#includemain(){intx=20; printf(“%d”,0 printf(“%dn”,0(9)以下程序运行后的输出结果是【9】。#includemain(){inta=1,b=7; do{ b=b/2;a+=b; }while(b>1); printf(“%dn”,a);}(10)有以下程序#includemain(){intf,f1,f2,i; f1=0;f2=1; printf(“%d%d”,f1,f2); for(i=3;i<=5;i++) {f=f1+f2;printf(“%d”,f);f1=f2;f2=f; } printf(“n”);}程序运行后的输出结果是【10】。(11)有以下程序n#includeinta=5;voidfun(intb){inta=10; a+=b;printf(“%d”,a);}main(){intc=20; fun(c);a+=c;printf(“%dn”,a);}程序运行后的输出结果是【11】。(12)设有定义:structperson{intID;charname[12];}p;请将scanf(“%d”,【12】);语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。(13)有以下程序#includemain(){chara[20]=”Howareyou?”,b[20]; scanf(“%s”,b);printf(“%s%sn”,a,b);}程序运行时从键盘输入:Howareyou?<回车>则输出结果为【13】。 (14)有以下程序#includetypedefstruct{intnum;doubles}REC;voidfun1(RECx){x.num=23;x.s=88.5;}main(){RECa={16,90.0}; fun1(a); printf(“%dn”,a.num);}程序运行后的输出结果是【14】。 n(15)有以下程序#includefun(intx){if(x/2>0)run(x/2); printf(“%d”,x);}main(){fun(6);printf(“n”);}程序运行后的输出结果是【15】。2009年9月全国计算机等级考试二级C语言笔试参考答案一、选择题(1)C(2)B(3)D(4)A(5)B(6)A(7)C(8)B(9)C(10)D(11)D(12)C(13)A(14)B(15)B(16)D(17)C(18)A(19)A(20)B(21)D(22)C(23)A(24)C(25)D(26)B(27)A(28)C(29)C(30)B(31)D(32)A(33)A(34)C(35)A(36)B(37)A(38)D(39)C(40)C(10)01123(9)5(8)10(7)1(6)5(5)身份证号(4)多对多(3)需求分析(2)逻辑条件(1)14二、填空题n2010年3月二级c语言笔试真题及答案试题:一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分。共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡上,答在试卷上不得分。(1)下列叙述中正确的是AA)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2)算法的时间复杂度是指DA)算法的执行时间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是BA)编辑软件B)操作系统C)教务管理系统D)浏览器(4)软件(程序)调试的任务是AA)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质(5)数据流程图(DFD图)是CA)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具D)面向对象方法的需求分析工具(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于BA)定义阶段B)开发阶段C)维护阶段D)上述三个阶段(7)数据库管理系统中负责数据模式定义的语言是AA)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是DA)文件B)数据库C)字段D)记录(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的BnA)需求分析阶段B)逻辑设计阶段C)概念设计阶段D)物理设计阶段(10)有两个关系R和T如下:RTABCa12b22c32ABCc32d32则由关系R得到关系T的操作是A选择B)投影C)交D)并(11)以下叙述正确的是BA)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如:fun(fun(x))C)C语言函数不可以单独编译D)C语言中除了main函数,其他函数不可以作为单独文件形式存在(12)以下关于C语言的叙述中正确的是BA)C语言中的注释不可以夹在变量名或关键字的中间B)C语言中的变量可以再使用之前的任何位置进行定义C)在C语言算术的书写中,运算符两侧的运算数类型必须一致D)C语言的数值常量中夹带空格不影响常量值的正确表示(13)以下C语言用户标示符中,不合法的是DA)_1B)AaBcC)a_bD)a--b(14)若有定义:doublea=22;inti=0,k=18;则不符合C语言规定的赋值语句是CA)a=a++,i++B)i=(a+k)<=(i+k)C)i=a%11D)i=!a(15)#includeVoidmain()n{chara,b,c,d;scanf(”%c%c”,&a,&b);c=getchar();d=getchar();printf(”%c%c%c%cn”,a,b,c,d);}当执行程序时,按下列方式输入数据(从第一列开始,代表回车,注意:回车是一个字符)1234则输出结果是:CA、1234B、12C、12D、1233416、以下关于C语言数据类型使用的叙述中错误的是:DA、若要准确无误的表示自然数,应使用整数类型。B、若要保存带有多位小数的数据,应使用双精度类型。C、若要处理如”人员信息”等含有不同类型的相关数据,应自定义结构体类型。D、若只处理”真”和”假”两种逻辑值,应使用逻辑类型。17、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是:AA、1B、0C、2D、不知道a的值,不能确定18、以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是:BA、switch(a)B、switch(a==1){case1:a=b;break;{case0:a=b;break;default:a++;case1:a++;}}C、switch(a)D、switch(a==1){default:a++;break;{case1:a=b;break;case1:a=b;case0:a++;}}19、有如下嵌套的if语句if(amain(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf(”m=%dn”,m)}程序运行后的输出结果是C(A)m=6(B)m=2(C)m=4(D)m=5(21)有以下程序#includesmain(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf(”%d,%dn”,a,b);}程序运行后的输出结果是D(A)9,18(B)8,11(C)7,11(D)10,14(22)有以下程序,其中k的初值为八进制数#includemain()n{intk=011;printf(”%dn”,k++);}程序运行后的输出结果是D(A)12(B)11(C)10(D)9(23)下列语句中,正确的是AA)char*s;s=”Olympic”;B)chars[7];s=”Olympic”;C)char*s;s={”Olympic”};D)chars[7];s={”Olympic”};(24)以下关于return语句的叙述中正确的是DA)一个自定义函数中必须有一条return语句B)一个自定义函数中可以根据不同情况设置多条return语句C)定义成viod类型的函数中可以有带返回值的return语句D)没有return语句的自定义函数在执行结束时不能返回到调用处(25)下列选项中,能够正确定义数组的语句是DA)intnum[0..2008];B)intnum[];C)intN=2008;D)#defineN2008intnum[N];intnum[N](26)有以下程序#includevoidfun(char*c,intd){*c=*c+1;d=d+1;printf(”%c,%c,”,*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);printf(”%c,%cn”,b,a);}程序运行后的输出结果是AA)b,B,b,AB)b,B,B,AC)a,B,B,aD)a,B,a,B(27)若有定义int(*pt)[3];,则下列说法正确的是DA)定义了基类型为int的三个指针变量B)定义了基类型为int的具有三个元素的指针数组pt。nC)定义了一个名为*pt、具有三个元素的整型数组D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组(28)设有定义doublea[10],*s=a;,一下能够代表数组元素a[3]的是BA)(*s)[3]B)*(s+3)C)*s[3]D)*s+3(29)有以下程序#includemain(){inta[5]={1,2,3,4,5},b[5]={0,2,1,3,0},is=0for(i=0;i<5;i++)s=s+a[b[i]];printf("%dn",s);}程序运行后的输出结果是CA)6B)10C)11D)1530)有以下程序#includemain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)For(j=i;j<=i;j++)t+=b[i][b[j][i]];Printf("%dn",t);}程序运行后的输出结果是CA)1B)3C)4D)9(31)若有以下定义和语句Acharsl[10]="abcd!",*s2="n123\";printf("%d%dn",strlen(s1),strlen(s2));则输出结果是A)55B)105C)107D)58(32)有以下程序#include#defineN8voidfun(int*x,inti)n{*x=*(x+i);}main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;iintf(intt[],intn);main(){inta[4]={1,2,3,4},s;s=f{a,4};printf(”%dn”,s);}intf(intt[],intn){if(n>0)returnt[n-1]+f(t,n-1);elsereturn0;}程序运行后的输出结果是BA)4B)10C)14D)6(34)有以下程序#includeintfun(){staticintx=1;x*=2;returnx;}main(){intI,s=1;for(i=1;i<=2;i++)s=fun();printf(”%dn”,s);}程序运行后的输出结果是CnA)0B)1C)4D)8(35)以下程序#include#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf(”%dn”,d);}程序运行后的结果是CA)0B)-12C)-20D)10(36)没有定义structcomplex{intreal,unreal;}datal={1,8},data2;则以下赋值语句中的错误的是BA)data2=data1;B)data2=(2,6);C)data2.real1=data1.real;D)data2.real=data1.unreal;(37)有以下程序#include#includestructA{inta;charb[10];doublec;};voidf(structAt);main(){structAa={1001,”ZhangDa”,1098.0};f(a);pringt(”%d,%s,%6.1fn”,a.a,a.b,a.c);}voidf(structAt){t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;}程序运行后的输出结果是AA)1001,ZhangDa,1098.0B)1002,ChangRong,1202.0C)1001,ChangRong,1098.0D)1002,ZhangDa,1202.0(38)有以下定义和语句nstructworkers{intnum;charname[20];charc;srruct{intday;intmonth;intyear;}s;};structworkersw,*pw;pw=&w能给w中year成员赋1980的语句是DA)*pw.year=1980;B)w.year=1980;C)pw->year=1980;D)w.s.year=1980;(39)有以下程序#includemain(){inta=2,b=2,c=2;printf(”%dn”,a/b&c);}程序运行后的结果是CA)0B)1C)2D)3(40)以下程序#includemain(){FILE*fp;charstr[10];fp=fopen(”myfile.dat”,”w”);fputs(”abc”,fp);fclose(fp);fp=fopen(”myfile.dat”,”a+”);rewind(fp,”gd”,28);rewind(fp);fscanf(fp,”gs”,str);puts(str);fclose(fp);}程序运行后的输出结果是CA)abcB)28cC)abc28D)因类型不一致而出错二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。n(1)一个队列的初始状态为空,先将元素A,CB,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为_ABCDEF__54321__。(2)设某循环列队的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有___15__个元素。(3)设二叉数如下:对该二叉树进行后序遍历的结果为EDBGHFCA(4)软件是程序、数据和文档的集合。(5)有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学好和课号,则关系模式选课可以定义为:选课(学号,课号,成绩)。(6)设x为int型变量,请写出一个关系表达式:x%3==0&&x%7==0,用以判断x同时为3和7的倍数时,关系表达式的值为真。(7)有以下程序#includemain(){inta=1,b=2,c=3,d=0;if(a==1)if(b!=2)if(c!=3)d=1;elsed=2;elseif(c!=3)d=3;elsed=4;elsed=5;printf(”%dn”,d);}程序运行后的输出结果是:4。(8)有以下程序#includemain(){intm,n;scanf(”%d%d”,&m,&n);while(m!=n)n{while(m>n)m=m-n;while(m时,输出结果是7(9)有以下程序#includemain(){intI,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=1;i<3;i++)for(j=I;j<3;j++)printtf(”%d”,a[i][j]);printf(”n”);}程序运行后的输出结果是123569(10)有以下程序#includemain(){int[]={1,2,3,4,5,6},*k[3],i=0;while(i<3){k[i]=&a[2*i];printf(”%d”,*k[i]);i++;}}程序运行后的输出结果是____135______(11)有以下程序#includemain(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};intb[3]={0},i;for(i=0;i<3;i++)b[i]=a[i][2]+a[2][i];for(i=0;i<3;i++)printf(”%d”,b[i]);printf(”n”);n}程序运行后的结果是____101418________(12)有以下程序#include#includevoidfun(char*str){chartemp;intn,i;n=strlen(str);temp=str[n-1];for(i=n-1;i>0;i--)str[i]=str[i-1];str[0]=temp;}main(){chars[50];scanf(”%s”,s);fun(s);printf(”%sn”,s);}程序运行后输入:abcdef<回车>,则输出结果是____________13、以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。#includemain(){intx=256;printf(”%d-%d-%dn”,X%10,x/10%10,x/100);}14、以下程序用以删除字符串中的所有的空格,请填空。#includemain(){chars[100]={”our.tercherteachclanguage!”};inti,j;for(i=j=0;s[i]!=‘’;i++)if(s[i]!=‘’’){s[j]=s[i];j++;}s[j]=;nprintf(”%sn”,s);}(15)以下程序功能是:借助指针变量找出数组元素中的最大值及其元素的下标值。请填空。#includemain(){inta[10],*p,*s;for(p=a;p-a<10;p++)scanf(”%d”,p);for(p=a,s=a;p-a<10;p++)if(*p>*s)s=_______p________;printf(”index=%dn”,s-a);答案:1——————10:A,D,B,A,C,B,A,D,B,A11-----------20:B,B,D,C,C,D,A,B,C,C21-----------30:D,D,A,D,D,A,D,B,C,C31----------40:A,C,B,C,C,B,A,D,C,C填空题:1:ABCDEF543212:153:EDBGHFCA4:程序5:课号6:x%3==0&&x%7==07:48:79:12356910:13511:10141812:fabcde13:X%1014:‘’15:pn2010年9月二级C语言笔试真题及答案((1)—(10)每小题2分,(11)—(50)每题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)栈是“先进先出”的线性表B)队列是“先进先出”的线性表C)循环队列是非线性结构D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是A)栈B)树C)队列D)二叉树(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A)10B)8C)6D)4(4)下列排序方法中,最坏情况下比较次数最少的是A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是A)编译软件B)操作系统C)教务管理系统D)汇编程序(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是A)数据库设计nB)数据库系统设计C)数据库维护D)数据库管理员培训(9)有两个关系R,S如下:RABCa32b01c21SABa3b0c2由关系R通过运算得到关系S,则所使用的运算为A)选择B)投影C)插入D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域(11)以下选项中合法的标识符是A)1-1B)1—1C)-11D)1--(12)若函数中有定义语句:intk;,则A)系统将自动给k赋初值0B)这时k中值无定义C)系统将自动给k赋初值-1D)这时k中无任何值(13)以下选项中,能用作数据常量的是A)o115B)0118C)1.5e1.5D)115L(14)设有定义:intx=2;,以下表达式中,值不为6的是nA)x*=x+1B)x++,2*xC)x*=(1+x)D)2*x,x+=2(15)程序段:intx=12;doubley=3.141593;printf(“%d%8.6f”,x,y);的输出结果是A)123.141593B)123.141593C)12,3.141593D)123.141593(16)若有定义语句:doublex,y,*px,*py,执行了px=&x,py=&y;之后,正确的输入语句是A)scanf(“%f%f”,x,y);B)scanf(“%f%f”,&x,&y);C)scanf(“%lf%le”,px,py);D)scanf(“%lf%lf”,x,y);(17)以下是if语句的基本形式:if(表达式)语句其中“表达式”A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式(18)有以下程序#includemain(){intx;scanf(“%d”,&x);if(x<=3);elseif(x!=10)printf(“%dn”,x);}程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数B)大于3且不等于10的整数C)n大于3或等于10的整数D)小于3的整数(19)有以下程序#includeMain(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2||c--!=3)printf(“%d,%d,%dn”,a,b,c);elseprintf(“%d,%d,%dn”,a,b,c);elseprintf(“%d,%d,%dn”,a,b,c);}程序运行后的输出结果是A)1,2,3B)1,3,2C)1,3,3D)3,2,1(20)以下程序中的变量已正确定义for(i=0;i<4;i++,i++for(k=1;k<3;k++);printf(*”);程序段的输出结果是A)********B)****C)**D)*(21)有以下程序#includemain(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII码值为65。程序运行后的输出结果是nA)5670B)656667C)567D)ABC(22)设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A)n=0;while((ch=getchar())!=’n’)n++;B)n=0;while(getchar()!=’n’)n++;C)for(n=0;getchar()!=’n’;n++);D)n=0;for(ch=getchar();ch!=’n’;n++);(23)有以下程序#includemain(){inta1,a2;charc1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);printf(“%d,%c,%d,%c”,&1,c1,a2,c2);}若想通过键盘输入,使得a1的值为12,a2的是为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b,则正确的输入格式是(以下代表空格,代表回车)A)12a34bB)12a34bC)12,a,34,bD)12a34b(24)有以下程序#includeintf(intx,inty){return()y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%dn”,d);}n程序运行后的输出结果是A)10B)9C)8D)7(25)有以下程序#includevoidfun(char*s){while(*s){if(*s%2==0)printf(“%c”,*s);s++;}}main(){chara[]={“good”};fun(a);printf(“n”);}注意:字母a的ASCⅡ码值为97,程序运行后的输出结果是A)dB)goC)godD)good(26)有以下程序#includevoidfun(int*a,int*b){int*c;c=a;a=b;b=c;}main(){intx=3,y-5,*P=&x,*q=&y;nfun(p,q);printf(“%d,%d,”,*p,*q);fun(&x,&y);printf(“%d,%dn”,*p,*q);}程序运行后的输出结果是A)3,5,5,3B)3,5,3,5C)5,3,3,5D)5,3,5,3(27)有以下程序#includeviodf(int*p,int*q);main(){intm=1,n=2,*r=&m;f(r,&n);printf(“%d,%d”,m,n);}voidf(int*p,int*q){p=p+1;*q=*q+1;}程序运行后输出的结果是A)1,3B)2,3C)1,4D)1,2(28)以下函数按每行8个输出数组中的数据voidfun(int*w,intn){inti;for(i=0;imain(){char*a[]={“abcd”,”ef”,”gh”,”ijk”};intI;for(i=0;i<4;i++)printf(“%c”,*a);}程序运行后输出的结果是A)aegiB)dfhkC)abcdD)abcdefghijk(32)以下选项中正确的语句组是A)chars[];s=”BOOK!”;B)char*s;s={”BOOK!”};nC)chars[10];s=”BOOK!”;D)char*s;s=”BOOK!”;(33)有以下程序#includeintfun{intx,inty}{if(x==y)return(x);elsereturen((x+y)/2)}main(){inta=4,b=5,c=6;printf(“%dn”,fun(2*a,fun(b,c)))}程序运行后的输出结果是A)3B)6C)8D)12(34)设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是A)autoB)registerC)staticD)auto或register(35)有以下程序#includeintb=2;intfun(int*k){b=*k+b;return(b);}main(){inta[10]={1,2,3,4,5,6,7,8},I;for(i=2;i<4;i++){b=fun(&a)+b;printf(“%d”,b);}printf(“n”);}程序运行后输出的结果是nA)1012B)810C)1028D)1016(36)有以下程序#include#definePT3.5;#defineS(x)PT*x*x;mian(){inta=1,b=2;printf(“%4.1fn”,S(a+b));}程序运行后输出的结果是A)14.0B)31.5C)7.5D)程序有错无输出结果(37)有以下程序#includestructord{intx,y;}dt[2]={1,2,3,4};main(){structord*p=dt;printf(“%d,”,++p->x);printf(“%dn”,++p->y);}程序的运行结果是A)1,2B)2,3C)3,4D)4,1(38)设有宏定义:#includeIsDIV(k,n)((k%n==1)?1:0且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是nA)判断m是否能被5或者7整除B)判断m是否能被5和7整除C)判断m被5或者7整除是否余1D)判断m被5和7整除是否余1(39)有以下程序#includemain(){inta=5,b=1,t;t=(a<<2|b);printf(“%dn”,t)}程序运行后的输出结果是A)21B)11C)6D)1(40)有以下程序#includemain(){EILE*f;f=fopen(“filea.txt”,”w”);fprintf(f,”abc”);fclose(f);}若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt中的内容为A)helloabcB)abcloC)abcD)abchello二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)假设一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有【1】个元素。n(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于【2】测试。(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和【3】。(4)数据库系统的核心是【4】(5)在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是【5】框。(6)表达式(int)((double)(5/2)+2.5)的值是【6】(7)若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(【7】,x/y);补充完整,使其输出的计算结果形式为:x/y=11(8)有以下程序#includemain(){charc1,c2;scanf(“&c”,&c1);while(c1<65||c1>90)scanf(“&c”,&c1);c2=c1+32;printf(“&c,&cn”,c1,c2);}程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)【8】。(9)以下程序运行后的输出结果是【9】#includemain(){intk=1,s=0;do{if{((k&2)!=0)continue;s+=k;k++;}while(k)10);printf(“s=&d/n”,s);}n(10)下列程序运行时,若输入labced12df<回车>输出结果为【10】#includemain(){chara=0,ch;while((ch=getchar())!=’n’){if(a&2!=0&&(ch>’a’&&ch<=’z’))ch=ch-‘a’+’A’;a++;putchar(ch);}printf(“n”);}(11)有以下程序,程序执行后,输出结果是【11】#includevoidfun(int*a){a[0=a[1];]}main(){inta[10]={10,9,8,7,6,5,4,3,2,1},i;for(i=2;i>=0;i--)fun{&a};for(i=0;i<10;i++)printf(“&d”,a);printf(“n”);}(12)请将以下程序中的函数声明语句补充完整#includeint【12】;main(){intx,y,(*p)();p=max;printf(“&dn”,&x,&y);}Intmax(inta,intb){return(a>b/a:b);}(13)以下程序用来判断指定文件是否能正常打开,请填空#includemain()n{FILE*fp;if(((fp=fopen(“test.txt”,”r”))==【13】))printf(“未能打开文件!n”);elseprintf(“文件打开成功!n”);(14)下列程序的运行结果为【14】#include#includestructA{inta;charb[10];doublec;};voidf(structA*t);main(){structAa=(1001,”ZhangDa”,1098,0);f(&a);printf(“&d,&s,&6,ifn”,a.a,a.b,a.c);}voidf(structA*t){strcpy(t->b,”ChangRong”);}(15)以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空#includestructnode{intdata;structnode*next;};typedefstructnodeNODETYPE;main(){NODETYPEa,b,c,*h,*p;a.data=10;b.data=20;c.data=30;h=&a;b.next=&b;b.next=&c;c.next=’’;p=h;nwhile(p){printf(“&d”,p->data);【15】;}}答案:选择题:1~10:DACDCABABC11~20:CBDDACDBCB21~30:CDABABACBC31~40:ADBCCCBDAC填空题:(1)19(2)白盒(3)顺序结构(4)数据库管理系统(DBMS)(5)菱形(6)4(7)"x/y=%d"(8)能(9)s=0(10)1AbCeDf2dF(11)7777654321(12)max(inta,intb)(13)NULL(14)1001,ChangRong,1098.0(15)p=p—>next
查看更多

相关文章

您可能关注的文档