2010年C语言试题及答案[1]

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

文档介绍

2010年C语言试题及答案[1]

2010年C语言试题及答案一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分))(1)下列选项中不属于软件生命周期开发阶段任务的是A)详细设计B)概要设计C)软件维护D)软件测试(2)树是结点的集合,它的根结点数目是A)有且只有1B)1或多于1C)0或1D)至少2(3)在面向对象方法中,实现信息隐蔽是依靠A)对象的继承B)对象的多态C)对象的封装D)对象的分类(4)程序设计语言的基本成分是数据成分、运算成分、控制成分和A)语句成分B)变量成分C)对象成分D)传输成分(5)冒泡排序在最坏情况下的比较次数是A)n/2B)nlog2nC)n(n-1)/2D)n(n+1)/2(6)下列叙述中,不属于软件需求规格说明书的作用的是A)作为确认测试和验收的依据B)反映出用户问题的结构,可以作为软件开发工作的基础和依据C)便于用户、开发人员进行理解和交流D)便于开发人员进行需求分析(7)下列叙述中错误的是A)一个C语言程序只能实现一种算法B)C程序可以由多个程序文件组成C)C程序可以由一个或多个函数组成D)一个函数可单独作为一个C程序文件存在(8)下列不属于软件工程的3个要素的是A)方法B)过程C)工具D)环境(9)下列叙述中正确的是A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库技术的根本目标是要解决数据的共享问题C)数据库管理系统就是数据库系统D)以上三种说法都不对(10)下列叙述中正确的是A)每个C程序文件中都必须有一个main()函数B)在C程序的函数中不能定义另一个函数C)C程序可以由一个或多个函数组成D)在C程序中main()函数的位置是固定的(11)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键D)域(12)下列定义变量的语句中错误的是A)doubleint_;B)int_int;C)charForD)floatUSS(13)下列叙述中正确的是A)C语言编译时不检查语法B)C语言的子程序有过程和函数两种C)C语言的函数可以嵌套定义D)C语言的函数可以嵌套调用(14)以下选项中,合法的一组C语言数值常量是A)0x8AB)12C).177D)028(15)以下叙述中正确的是A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其他函数之前D)所有被调用的函数一定要在调用之前进行定义(16)若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是A)scanf("%d",&p);B)scanf("%d%d%d",a,b,c);C)scanf("%d",p);D)scanf("%d",a,b,c);(17)有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%dn",x,y,z);}程序运行后的输出结果是A)2,2,3B)2,2,2C)2,3,1D)2,1,1(18)若已定义:inta=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%dn",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是A)***a=25,b=13,c=19B)***a=26,b=14,c=19C)###a=25,b=13,c=19D)###a=26,b=14,c=19(19)下列程序段的输出结果是inta=1234;floatb=123.456;doublec=12345.54321;printf("-,%2.1f,%2.1f",a,b,c);A)无输出B)12,123.5,12345.5C)1234,123.5,12345.5D)1234,123.4,1234.5(20)有以下程序main(){inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf("a+b=%dn",a+b);/*输出计算结果*/}程序运行后输出结果是A)30B)a+b=30C)a+b=0D)出错(21)若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是#includemain(){charc;intv0=1,v1=0,v2=0;do{switch(c=getchar()){case′a′:case′A′:case′e′:case′E′:case′i′:case′I′:case′o′:case′O′:case′u′:case′U′:v1+=1;default:v0+=1;v2+=1;}}while(c!=′\n′);printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}A)v0=11,v1=4,v2=11B)v0=8,v1=4,v2=8C)v0=7,v1=4,v2=7D)v0=13,v1=4,v2=12(22)有以下程序#includemain(){inty=9;for(y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是A)732B)433C)852D)874(23)设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则A)运行程序段后输出0nB)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次(24)有以下程序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)5B)7C)8D)3(25)执行下面的程序段后,变量k中的值为intk=3,s[2];s[0]=k;k=s[1]*10;A)不定值B)35C)31D)20(26)以下叙述中错误的是A)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL(27)以下程序段的描述,正确的是x=-1;do{x=x*x;}while(!x);A)是死循环B)循环执行两次C)循环执行一次D)有语法错误(28)有以下程序fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=I,k;k=fun(j,m);printf("%d",k);k=fun(j,m);printf("%dn",k)}执行后的输出结果是A)5,5B)5,11C)11,11D)11,5(29)有以下程序fun(intx){intp;if(x==0║x==1)return(3);p=x-fun(x=2);retump;}main(){prinf("%dn",fun(7));}执行后的输出结果是A)7B)3C)3D)0(30)在16位编译系统上,右有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是A)p向高地址移了一个字节B)p抽高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价(31)有以下程序main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%dn",c);}执行后的输出结果是A)1B)2C)3D)4(32)下列程序执行后的输出结果是voidfunc1(inti);voidfunc2(inti);charst[]="hello,friend!";voidfunc1(inti){printf("%c",st[i]);if(i<3){i+=2;func2(i);}}voidfunc2(inti){printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){inti=0;func1(i);printf("\n");}A)helloB)helC)hloD)hlm(33)在下述程序中,判断i>j共执行的次数是main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}A)4B)7C)5D)6(34)以下函数返回a所指数组中最大值所在的下标值fun(int*a,intn){inti,j=0,p;p=j;for(i=j;iif(a[i]>a[p]);return(p);}在下划线处应填入的内容是A)i=pB)a[p]=a[i]C)p=jD)p=i(35)下列程序执行后的输出结果是main(){inta[3][3],*p,i;p=&a[0][0];for(i=1;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}A)3B)6C)9D)随机数(36)有以下程序#includevoidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;ifor(j=i+1;jif(a}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c);printf("n");}程序运行的结果是A)1,2,3,4,5,6,7,8,9,0,B)0,9,8,7,6,5,1,2,3,4,C)0,9,8,7,6,5,4,3,2,1,D)1,2,3,4,9,8,7,6,5,0,(37)以下程序的输出结果是#includevoidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}A)11,42,3112,22,41B)11,41,2012,42,20C)11,21,4011,21,21D)11,41,2112,42,22(38)有以下程序:#includevoidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charnss[10]=”acc”,aa[10]=”bbxxyy”;fun(ss,aa);printf(“%s,%sn”,ss,aa);}程序运行结果是A)accxyy,bbxxyyB)acc,bbxxyyC)accxxyy,bbxxyyD)accbbxxyy,bbxxyy(39)有以下程序#includemain(){FILE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后的输出结果是A)2030B)2050C)3050D)3020(40)有以下程序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)200B)204C)240D)246(41)有以下程序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)有以下程序#includemain(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)1212B)117C)1111D)127(44)设有以下语句typedefstructTT{charc;inta[4];}CIN;则下面叙述中正确的是A)可以用TT定义结构体变量B)TT是struct类型的变量C)可以用CIN定义结构体变量D)CIN是structTT类型的变量(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=32;s^=32;printf(“%d”,s);A)-1B)0C)1D)32(48)若程序中有宏定义行:#defineN100则以下叙述中正确的是A)宏定义行中定义了标识符N的值为整数100B)在编译程序对C源程序进行预处理时用100替换标识符NC)对C源程序进行编译时用100替换标识符ND)在运行时用100替换标识符N(49)以下叙述中正确的是A)C语言中的文件是流式文件,因此只能顺序存取数据B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失(50)有以下程序#includemain(){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)dB)cC)bD)a二、填空题(每空2分,共40分)(1)在面向对象方法中,类之间共享属性和操作的机制称为【1】。(2)一个关系表的行称为【2】。(3)耦合和内聚是评价模块独立性的两个主要标准,其中【3】反映了模块内各成分之间的联系。(4)线性表的存储结构主要分为顺序存储结构和链式存储结构.队列是一种特殊的线性表,循环队列是队列的【4】存储结构.(5)【5】的任务是诊断和改正程序中的错误。(6)以下程序的输出结果是【6】.#includemain(){intn=12345,d;while(n!=0){d=n%10;printf("%d",d);nn/=10;}}(7)以下程序运行后的输出结果是【7】。main(){intm=011,n=11;printf("%d%dn",++m,n++);}(8)有以下程序,若运行时从键盘输入:18,11<回车>,则程序输出结果是【8】。main(){inta,b;printf("Entera,b:");scanf("%d,%d",&a,&b);while(a!=b){while(a>b)a-=b;while(b>a)b-=a;}printf("%3d%3dn",a,b);}(9)有以下程序段,且变量已正确定义和赋值for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf("s=%fnn",s);请填空,使下面程序段的功能为完全相同s=1.0;k=1;while(_【9】_______){s=s+1.0/(k*(k+1));_【10】_______;}printf("s=%fnn",s);(10)执行以下程序的输出结果是【11】______.#includemain(){inti,n[4]={1};for(i=1;i<=3;i++){n=n[i-1]*2+1;printf("%d",n);}}(11)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.请填空.#includeviodf(intx[],intn){intp0,p1,i,j,t,m;i=j=x[0];p0=p1=0;for(m=0;m{if(x[m]>i){i=x[m];p0=m;}elseif(x[m]}t=x[p0];x[p0]=x[n-1];x[n-1]=t;t=x[p1];x[p1]=_【12】_______;【13】______=t;}main(){inta[10],u;for(u=0;u<10;u++)scanf("%d",&a);f(a,10);for(u=0;u<10;u++)printf("%d",a);printf("n");}(12)下列程序中的函数strcpy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新的字符串。例如,若t所指字符串为efgh,调用strcpy2后,s所指字符串为efghefgh。请填空。#include#includevoidstrcpy2(char*s,char*t){char*p=t;while(*s++=*t++);s=【14】;while(【15】=*p++);}main(){charstr1[100]="abcd",str2[]="efgh";strcpy2(str1,str2);printf("%sn",str1);}(13)以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推.用#号结束输入,请填空.#include#includemain(){intnum[26]={0},i;charc;while((_【16】_______)!='#')if(isupper(c))num[c-‘A’]+=【17】_______;for(i=0;i<26;i++)Printf("%c:%dn",i+'A',num);}(14)以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:y1=(x+8)2-2(x+8)+6y2=sin2(x)-2sin(x)+6请填空。#include"math.h"doublefun(doublex){return(x*x-2*x+6);}main(){doublex,y1,y2;printf("Enterx:");scanf("%lf",&x);y1=fun(【18】);y2=fun(【19】);printf("y1=%lf,y2=%lfn",y1,y2);}(15)以下程序的输出结果是_【20】______.#include#defineM5#defineNM+Mmain(){intk;k=N*N*5;printf("%dn",k);}一、选择题答案:1-10:CACDCDADBA11-20:BDDBACCCCB21-30:DCBCACCBCA31-40:CCDABDCDAB41-50:CABCDBBBDB二、填空题答案:1.继承2.元组3.内聚4.顺序5.程序调试6.543217.10118.19.k<=nk++10.37511.x[0]x[0]12.s--,*s++13.c=getchar()14.(x+8),sin(x)15.55
查看更多

相关文章

您可能关注的文档