您好,欢迎访问三七文档
《程序设计基础及实验》课程期末考试试卷,2010年1月27日1/8浙江大学2009–2010学年秋冬学期《程序设计基础及实验》课程期末考试试卷课程号:21186020__,开课学院:_计算机学院__考试试卷:√A卷、B卷(请在选定项上打√)考试形式:√闭、开卷(请在选定项上打√),允许带____∕__入场考试日期:2010年01月27日,考试时间:120分钟诚信考试,沉着应考,杜绝违纪。考生姓名:学号:所属院系:_(注意:答题内容必须写在答题卷上,写在本试题卷上无效)试题一、单选题(每小题2分,共20分)1.在C语言中,longint型数据在内存中的存储形式是。A.补码B.反码C.原码D.ASCII码2.假设有定义:intk;下面程序段编译运行的情况是_____。for(k=1;k;k++)printf(%d,k);A.编译错误B.能运行,是死循环C.能运行,正常结束D.以上说法都不对3.循环语句while(!x&&!y)中的循环条件表达式等价于______。A.x=0&&y=0B.!(x||y)C.!(x==0||y==0)D.!(x==0&&y==0)4.对于intx,y;语句if(x0)y=-1;elseif(!x)y=0;elsey=1;等价于_____。A.if(x=0)y=0;if(x)y=1;elsey=-1;B.y=0;if(x=0)if(x)y=1;elsey=-1;C.if(x!=0)if(x0)y=1;elsey=-1;D.y=0;if(x!=0)if(x0)y=1;elsey=-1;5.语句if(4/53/4)a=1;elsea=0;运行后,a的值是_____。A.1B.0C.编译出错D.与编译器相关6.下列描述不正确的是_______。A.外部变量定义在函数外部B.局部变量定义在函数内部C.自动变量定义在函数内部D.静态变量定义在函数外部7.假设sizeof(int)的值为4,对数组定义:inta[3][6];则sizeof(a[0])的值为______。A.12B.4C.24D.18《程序设计基础及实验》课程期末考试试卷,2010年1月27日2/88.有如下定义:intx[]={1,2,3},*p=x,y;则y=*p++;相当于_____。A.y=x[0],p++B.y=1,x++C.y=*(++p)y=2,p=x+19.根据声明intp[5],*a[5];下列表达式正确的是______。A.p=aB.p[0]=aC.*(a+1)=pD.a[0]=210.有如下定义,下列赋值正确的是________。structnode{chars[10];intk;structnode*next;}p[5],*q=p;A.q.k=2B.p[0]-k=2C.(p-s)[0]=‘a’D.q-s=“a”试题二、填空题(每小题2分,共30分)1.表示“当x的取值在[-10,0]或[10,15]的范围内为真,否则为假”的C语言表达式是_____。2.若inta=6,b=0,c=3,则表达式a&&b||b-c的结果是_____。3.表达式!!”2010-01-27”的值为_______。4.假设字符变量ch中存放有大写英文字母,将其转换为相应的小写英文字母的表达式是______。5.执行下面程序代码后,s值为_____。inti,s;for(i=5,s=0;is;i--){if(i==0)break;if(i%2)continue;s+=--i;}6.执行下面程序代码的输出结果是_____。char*s1=abcd,*s2=abbb;while(*s1++==*s2++);printf(%d#,*s1-*s2);7.执行下面程序代码后,s值为_____。inta=1,b=2,s=0;switch(ab){default:switch(s){case0:s+=1;default:s+=2;break;}case1:s+=3;break;}8.已知字符0和a的ASCII分别为48和97,当输入12e回车时,下列程序输出是_____。charc;ints=0;《程序设计基础及实验》课程期末考试试卷,2010年1月27日3/8while((c=getchar())!='\n')if('0'=c='9')s=s*10+c-'0';printf(%d\n,s);9.下列命令行参数程序生成的执行程序为command.exe,执行commandabc111222回车,输出结果是_______。#includestdio.hmain(intargc,char*argv[]){argc--;while(--argc)printf(%s#,argv[argc]);}10.下列程序段的输出是_______。#defineDF(a,b)(a+2*b)ints=5;intk=DF(s+1,s-3);printf(%d,k);11.下列程序段输出_______。intfun(intx){return(x3?1:(fun(x-1)+2*fun(x-2)));}intmain(){printf(%d,fun(4)+fun(5));}12.下列程序段输出_______。inta=1;intb=2;voidchange(int*p){int*temp=&b;p=temp;*p=3;}intmain(){int*p=&a;change(p);printf(%d,*p);《程序设计基础及实验》课程期末考试试卷,2010年1月27日4/8}13.用typedef写出类型定义,使得NEWSTR表示含有20个元素的字符数组类型。14.有定义:inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*q[4],k;则下列程序段的输出是_______。for(k=0;k4;k++)q[k]=&a[k*3];printf(%d#,q[3][0]);15.下列程序段执行后,z的值是_______。staticstruct{intx,y[3];}a[3]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=&a[-1];intz;z=*((int*)(++p+1)-1);试题三、程序阅读题(每小题5分,共30分)1.下列程序的输出是_______。#includestdio.hintx,y,z,w;voidp(int*y,intx){staticintw;*y++;x++;w=x+*--y;printf(%d#%d#%d#%d#,x,*y,z,w);}intmain(void){intx,y,z,w;x=y=z=w=1;do{staticintx;p(&x,y);printf(%d#%d#%d#%d#,x,y,z,w);}while(0);return0;}2.下列程序的输出是_______。#includestdio.h#includestring.hintmain(){chara[20]=cehiknqtw;char*s=fbla,*p;《程序设计基础及实验》课程期末考试试卷,2010年1月27日5/8inti,j;for(p=s;*p;p++){j=0;while(*p=a[j]&&a[j]!='\0')j++;for(i=strlen(a);i=j;i--)a[i+1]=a[i];a[j]=*p;}puts(a);return0;}3.有一单向链表h如下图所示,表示整数序列(1,1,2,4,4,3,5,5,5,4)。h有关变量定义:structnode{intinfo;structnode*next;}*h,*p,*q;现执行以下程序段,则输出的结果是:_______。q=h;if(h&&h-next!=NULL)p=h-next;elsereturn0;while(p!=NULL){if(q-info!=p-info){q=p;p=p-next;}else{p=p-next;free(q-next);q-next=p;}}p=h;while(p!=NULL){printf(%d,p-info);p=p-next;}4.当输入:3123456789时,下列程序的输出是_______。#includestdio.h#defineN10voidmt(int*a,intn){inti,j,t;41125《程序设计基础及实验》课程期末考试试卷,2010年1月27日6/8for(i=0;in;i++)for(j=i+1;jn;j++){t=*(a+i*N+j);*(a+i*N+j)=*(a+j*N+i);*(a+N*j+i)=t;}return;}intmain(){inta[N][N],n,i,j;scanf(%d,&n);for(i=0;in;i++)for(j=0;jn;j++)scanf(%d,&a[i][j]);mt(&a[0][0],n);for(i=0;in;i++){for(j=0;jn;j++)printf(%d#,a[i][j]);}return0;}5.当输入:532658回车时,下列程序的输出为_______。#includestdio.h#includestdlib.hvoidmain(){int*p,flag,i,n,s;scanf(%d,&n);p=(int*)malloc(n*sizeof(int));for(i=0;in;i++)scanf(%d,p+i);s=*p;flag=1;while(flag){for(i=1;in;i++)if(s%*(p+i)!=0){s+=*p;break;}if(i==n)flag=0;}printf(%d,s);free(p);《程序设计基础及实验》课程期末考试试卷,2010年1月27日7/8}6.当输入:1005125181216回车时,下列程序的输出为_______。#includestdio.hchar*p=0123456789ABCDEFGHIJKM;voidfun(intn,intm);voidmain(){intn,m,i;for(i=0;i3;i++){scanf(%d%d,&n,&m);fun(n,m);printf(#);}}voidfun(intn,intm){if(n/m)fun(n/m,m);printf(%c,*(p+n%m));}试题四、程序(段)填空题(每空2分,共20分)1.已知一个单向链表h。函数KthBackNode(h,k)查找链表h中倒数第k(k0)个位置上的结点。若查找成功,返回该结点的data域值,否则返回-1。该程序思路:指针p、q初始均指向第一个结点,p指针先沿链表移动,当与q指针相差k个结点时,p、q指针同步移动。structnode{intdata;structnode*next;};intKthBackNode(structnode*h,intk)/*h为表头指针*/{___(1)____;intcount=0;p=q=h;while(p!=NULL&&countk){p=p-next;___(2)____;}while(p!=NULL){___(3)____;q=q-next;}《程序设计基础及实验》课程期末考试试卷,2010年1月27日8/8if(countk)return-1;return___(4)____;}2.下列程序通过命令行参数方式(progfile1file2)将两个文本文件中的两个从小到大的整数序列合并为一个从小到大的序列。注:fscanf()函数返回值为读入的整数个数;end1和end2分别用于标记两个文件的整数是否读完(值1代表读完)。例如:如果file1和file2文件中的内容分别为:123和0256,则输出为:0122356。#includestdio.hintmain(intargc,char*argv[]){___(5)____;intn,m
本文标题:C09A试卷-中文
链接地址:https://www.777doc.com/doc-1506052 .html