您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 综合/其它 > 浙江大学C语言2006试卷
1浙江大学2005-2006学年春夏学期期终考试试卷考试时间2006年6月28日一.单项选择题(每题1分,共10分)1.在C语言中,下面描述正确的是:______。A、函数的定义可以嵌套,但函数的调用不可以嵌套B、函数的定义不可以嵌套,但函数的调用不可以嵌套C、函数的定义可以嵌套,函数的调用也可以嵌套D、函数的定义不可以嵌套,但函数的调用可以嵌套2.在C语言中,_____存储类型的变量,只在使用时才分配空间。A、static和autoB、register和externC、register和staticD、auto和register3.下列运算符中,优先级最低的是:_____A、*B、+C、==D、=4.有程序段如下:intk=10;while(k=0)k=k-1;以下选项中描述正确的是_____。A.语句“k=k-1;”被执行10次。B.语句“k=k-1;”被执行1次。C.语句“k=k-1;”被执行无限多次。D.语句“k=k-1;”一次也不执行。5.若以下定义:chars[20],*ps=s;则,以下赋值语句正确的是:A、s=ps+s;B、ps=ps+20;C、s[5]=*ps[9];D、ps=s[0];6.有程序段如下:inta=1,b=2,c=3;if(ab)c=a;a=b;b=c;执行该程序段后,变量a,b,c的值是_____。A.a=1,b=2,c=3B.a=2,b=3,c=3C.a=2,b=3,c=1D.a=3,b=2,c=17.假设所有变量均为int类型,则表达式(a=2,b=5,b+1,a+b)的值为______。A.7B.8C.6D.28.以下叙述正确的是______。A.在C程序中,main()函数必须位于程序的最前面。B.C程序的每一行中只能写一条语句。C.在对C程序进行编译的过程中,可发现注释中的拼写错误。D.C语言本身没有输入、输出语句。9.设有语句structst{intn;int*t;}*p;staticstructsts[3]={5,'\0',7,'\0',9,'\0'};p=s;则printf(“%d\n”,______)的值是6。A.p++-nB.p-n++C.(*p).n++D.++p-n210.设有语句:inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则以下______不是对a数组元素的正确引用,其中0≤i10。A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))二、填空题(每题2分,共20分)1.设ch为字符变量,写出判断ch为数字字符的C语言表达式______。2.inta=3,则a+=a-=a*a的值是_____。3.表达式352的值是_____。4.表达式~(42)的值是______。5.下列程序段的输出结果是_____。#defineA1(a,b)a*b#defineA2(a,b)(a*b)printf(%d\n,2*A2(A1(2,-1),A2(2,-1)));6.执行下面的程序段后,a和b的值分别是_____。inta=3,b=5,c;c=(a--b)?a++:b--;7.下列程序段执行后s的值是:_____。inti=1,s=0;while(i++)if(!(i%3))break;elses+=i;printf(“s=%d\n”,s);8.下列程序段的输出结果是_____。char*s[]={one,two,three},*p;p=s[1];printf(%c,%s\n,*(p+1),s[0]);9.下列程序的输出结果是_____。#includestdio.hintf(intn){staticintk=1;k=k*n;returnk;}voidmain(){inti,sum=0;for(i=1;i=5;i++)sum=sum+f(i);printf(sum=%d\n,sum);}10.用typedef定义一个整型数组类型PT,它由100个整型元素组成。三、程序阅读题(共30分)1.下列程序的输出结果是_______。(4分)#includestdio.h3voidmain(){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=%d\n”,a,b);}2.下列程序的输出结果是_______。(4分)#includestdio.hvoidmain(){inti,j,x=0;for(i=0;i2;i++){x++;for(j=0;j3;j++){if(j%2)continue;x++;}x++;}printf(“x=%d\n”,x);}3.下面程序输出的值是_______。(4分)#includestdio.hinti=3;voidmain(){inti=1;voidfun1(intn);intfun2(intn);printf(%d,i);fun1(i);i=fun2(i);fun1(i=fun2(i));}voidfun1(intn)4{printf(%d,i+n);}intfun2(intn){inti=2;printf(%d,i+n);returni;}4.下面程序输出结果是_____。(4分)#includestdio.hvoidf(char*st,inti){st[i]='\0';printf(%s\n,st);if(i1)f(st,i-1);}voidmain(){charst[]=abcde;f(st,5);}5.下列程序执行后的输出结果是:_______。(4分)#includestdio.h#includestring.hvoidmain(){chararr[2][4];strcpy(arr[0],you);strcpy(arr[1],me);arr[0][3]='&';printf(%s\n,arr);}6.下列程序输出是_______。(4分)#includestdio.hvoidmain(){char*s=ab5ca2cd34ef,*p;inti,j,a[]={0,0,0,0,0};for(p=s;*p!='\0';p++){j=*p-'a';if(j=0&&j=5)a[j]++;5}for(i=0;i5;i++)printf(%d,a[i]);printf(\n);}7.下列程序输出是_______。(3分)#includestring.h#includestdio.hmain(){staticchara[]=abc123abc45abc678;charb[]=abc,c[80];inti=0,j,k,n=0,m;k=strlen(b);while(a[i]!='\0'){j=0;if(a[i]!=b[j])c[n++]=a[i++];else{m=i;while(b[j]==a[i]&&a[i]!='\0'&&b[j]!='\0'){i++;j++;}if(j!=k)while(mi)c[n++]=a[m++];elseprintf(%d,m);}}puts(c);}8.下列程序输出是_______。(3分)/*file.txt数据*//*A1B2C3*/#includestdio.h#includestdlib.hvoidmain(){FILE*fp;intn,s=0;charch;if((fp=fopen(file.txt,r))==NULL){printf(%s不能打开!\n,file.txt);exit(1);}fscanf(fp,%c%d,&ch,&n);6while(ch!=EOF){s+=ch+n;fscanf(fp,%c%d,&ch,&n);}fclose(fp);printf(%d\n,s);}四、程序(段)填空题(每空2分,共40分)1.以下程序不用第三个变量,也不用位运算符,实现将两个数进行对调的操作。#includestdio.hvoidmain(){inta,b;scanf(%d%d,&a,&b);printf(a=%d,b=%d\n,a,b);a=(1);b=(2);a=(3);printf(a=%d,b=%d\n,a,b);}2.输入一个十进制整数,将它对应的二进制数的各位反序,形成新的十进制数输出。如:13----如:10---#includestdio.hvoidmain(){intx,y,t;printf(“请输入一个十进制整数:”);scanf(“%d”,&x);y=0;while((4)){t=x%2;(5);x=x/2;}printf(“新的十进制整数为%d\n”,y);}3.a是一个6×6的矩阵,本程序输出以下结果:123456112345121234133123714641215101051#includestdio.hvoidmain(){inta[6][6],i,j;for(i=0;i6;i++){for(j=0;j6;j++){if((6))a[i][j]=1;elseif(ij)a[i][j]=(7);/*取上三角元素*/elsea[i][j]=(8);/*取下三角元素*/printf(“%4d”,a[i][j]);}printf(\n);}}4.以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并在c数组中。#includestdio.hvoidmain(){inta[10]={1,2,5,8,9,10},an=5;intb[10]={0,3,4,6,7,12},bn=5;inti,j,k,c[20],max=9999;a[an+1]=b[bn+1]=max;i=j=k=0;while((a[i]!=max)||(b[j]!=max))if(a[i]b[j]){c[k]=(9);k++;(10);}else{c[k]=(11);k++;(12);}for(i=0;ik;i++)printf(“%4d”,c[i]);printf(“\n”);}5.完成以下程序,截取字符串s中从第m个位置开始的n个字符,返回所截字符串的首地址。staticcharsub[20];voidmain(){staticchars[]=”goodmorning”;char*cut(char*ss,intm,intn),*p;p=cut(s,3,4);printf(“%s\n”,p);}char*cut(char*ss,intm,intn){inti;8for(i=0;in;i++)sub[i]=(13);sub[i]=’\0’;return(14);}6.下面程序是用来从键盘输入十个整数,然后求出其中的最小值。#includestdio.hvoidlookup(int*t,int*a,intn){intk;*a=t[0];for(k=1;kn;k++)if((15))*a=t[k];}voidmain(){inttable[10];intk,min,*p=&min;for(k=0;k10;k++)scanf(“%d”,&table[k]);lookup((16),(17),10);printf(“min=%d\n”,min);}7.下面程序的功能是统计文件“file.txt”中的字符数。#includestdio.hvoidmain(){FILE*fp;intcount=0;if((fp=fopen(“file.txt”,”r”))==NULL){printf(“thisfilecannotopen\n”);exit(0);}while((18)){fgetc(fp);(19);}printf(“total=%d\n”,count);(20);}92006B试卷答案(2005-200
本文标题:浙江大学C语言2006试卷
链接地址:https://www.777doc.com/doc-4717538 .html