2001-2002学年秋季学期“程序设计基础-C”试题卷第1页(共6页)浙江大学“程序设计基础-C”试题卷2001-2002学年秋季学期考试时间:2002年1月20日上午8:30-10:30注意:答题内容必须写在答题卷上,写在本试题卷上无效一.单项选择题(每题2分,共30分)1.C语言源程序文件经过编译连接之后生成一个后缀为___C___的文件。A.”.c”B.“.obj”C.“.exe”D.“.bas”2.以下选项中不正确的整型常量是___C__。A.12LB.-10C.1,900D.123U3.表达式___C___的值是0。A.3%5B.3/5.0C.3/5D.354.表达式!(x0||y0)等价于___D__。A.!x0||!y0B.!(x0)||!(y0)C.!x0&&!y0D.!(x0)&&!(y0)5.若变量已正确定义并赋值,表达式___D___不符合C语言语法。A.4&&3B.+aC.a=b=5D.int(3.14)6.若变量已正确定义,执行语句scanf(%d%d%d,&k1,&k2,&k3);时,___B___是正确的输入。A.203040B.203040C.20,3040D.20,30,407.执行语句printf(___D___,2);将得到出错信息。A.%dB.%oC.%xD.%f8.设变量定义为chars[]=hello\nworld\n;,则数组s中有___B__个元素。A.12B.13C.14D.159.若x是整型变量,表达式(x=10.0/4.0)的值是__D___。A.2.5B.2.0C.3D.210.若变量已正确定义并赋值,表达式-k++等价于__A____。A.-(k++)B.(-k)++C.-(k+1)D.-(++k)11.在C语言程序中,在函数内部定义的变量称为___C___。A.全局变量B.外部变量C.局部变量D.内部变量12.设变量定义为inta[2]={1,3},*p=&a[0]+1;,则*p的值是___B__。A.2B.3C.4D.&a[0]+113.对于以下的变量定义,表达式__A____是正确的。structnode{chars[10];intk;}p[4];A.p-k=2B.p[0].s=“abc”C.p[0]-k=2D.p-s=‘a’14.下列运算符中,优先级从高到低依次排列为__A___。A.!,&&,||B.||,&&,!C.&&,||,!D.&&,!,||2001-2002学年秋季学期“程序设计基础-C”试题卷第2页(共6页)15.下列程序段的输出结果是__B___。int*p,*q,k=1,j=10;p=&j;q=&k;p=q;(*p)++;printf(%d,*q);A.1B.2C.10D.11二、填空题(每题2分,共20分)1.设ch是字符型变量,判断ch为英文字母的表达式是__ch='a'&&ch='z'||ch='A'&&ch='Z'__。2.计算下列分段函数的if语句是__if(x0)y=1;if(x==0)y=0;if(x0)_y=0;___。1x0y=0x=0-1x03.表达式!!5的值是__1____。4.下列程序段的输出结果是____12__。printf(%x\n,(0x191)&0x17);5.下列程序段的输出结果是__k=4s=6___。intk,s;for(k=0,s=0;k10;k++)if(sk)break;elses+=k;printf(k=%ds=%d,k,s);6.下列程序段的输出结果是__100___。#defineMIN(x,y)(x)(y)?(x):(y)printf(%d,10*MIN(10,15));7.下列程序在运行时可能会出错,原因是__指针没有赋值____。#includestdio.hvoidmain(){char*s;gets(s);puts(s);}8.下列程序的输出结果是__156___。#includestdio.hintf(intm){staticintk=0;ints=0;for(;k=m;k++)s++;returns;}2001-2002学年秋季学期“程序设计基础-C”试题卷第3页(共6页)voidmain(){ints=1;s=f(5);printf(%d%d\n,s,f(3));}9.下列程序段的输出结果是__fgn___。char*st[]={abcd,efgh,ijkl,mnop};printf(%s,*(st+1)+1);10.用typedef定义一个10个元素的整型数组类型ARR,再用ARR定义一个10个元素的整型数组a。typedefintARR[10];ARRa;三、程序阅读题(每题5分,共15分)1.输入123+234=357Yes?回车后,下列程序的输出结果是__6123111_____。#includestdio.hvoidmain(){intk,n1,n3[10];charc;n1=0;for(k=0;k10;k++)n3[k]=0;while((c=getchar())!='\n'){switch(c){case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':n3[c-'0']++;break;default:n1++;break;}}if(n1)printf(%d,n1);for(k=0;k10;k++)if(n3[k])printf(%d,n3[k]);}2.输入3回车后,下列程序的输出结果是__612#745#840_____。#includestdio.h2001-2002学年秋季学期“程序设计基础-C”试题卷第4页(共6页)voidmain(){intj,k,n,temp,a[6][6];scanf(%d,&n);for(k=0;kn;k++)for(j=0;jn;j++)a[k][j]=j+k*n;for(k=0;kn;k++)for(j=0;jn/2;j++){temp=a[n-j-1][k];a[n-j-1][k]=a[k][j];a[k][j]=temp;}for(k=0;kn;k++){for(j=0;jn;j++)printf(%d,a[k][j]);printf(#);}}3.下列程序的输出结果是_______。#includestdio.h#defineLENsizeof(structline)structline{intnum;structline*next;};voidmain(){intk;structline*p,*head,*tail;voidf(structline*p);head=tail=NULL;for(k=1;k6;k++){p=(structline*)malloc(LEN);p-num=k;p-next=NULL;if(head==NULL)head=p;elsetail-next=p;tail=p;}f(head);2001-2002学年秋季学期“程序设计基础-C”试题卷第5页(共6页)}2001-2002学年秋季学期“程序设计基础-C”试题卷第6页(共6页)voidf(structline*p){if(p!=NULL){f(p-next);if(p!=NULL)printf(%d,p-num);}}四、程序(段)填空题(每空2分,共20分)1.输入1个正整数n,计算并输出s的前n项的和。S=1-1/2+1/3-1/4+1/5-1/6+……#includestdio.hvoidmain(){intk,flag,n;floats;flag=1;s=0;scanf(%d,&n);for(k=1;k=n;k++){s=s+(1);(2);}printf(sum=%f\n,s);}2.输入以-1结束的一批整数,输出其中的最大值。例如:输入-3-8-10-1后,输出:max=-3。#includestdio.hvoidmain(){intmax,x;scanf(%d,&x);if(x!=-1){(3);while((4)){if(maxx)max=x;(5);}printf(max=%d\n,max);}}2001-2002学年秋季学期“程序设计基础-C”试题卷第7页(共6页)3.设变量x,y,z已正确定义和赋值,请仔细阅读程序段A,然后在程序段B中填入正确的内容,使程序段A和程序段B的输出结果一样(每空只能写一个赋值表达式)。程序段A程序段Bx=x+y;y=x-y;x=x-y;z=x+y;printf(%d,%d,%d,x,y,z);(6);(7);y=z;z=x+y;printf(%d,%d,%d,x,y,z);4.请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。char*f1(chars[],chart[]){intk;for(k=0;t[k]!='\0';k++)s[k]=t[k];s[k]='\0';returns;}char*f2(char*s,char*t){(8);while(((9)=*t++)!='\0');return(10);}五、编程题(共15分,竺可桢学院混合班学生做第3、4题,其他学生做第1、2题)1.设a是一个整型数组,n和x都是整数,数组a中各元素的值互异。请编写函数find(a,n,x),在数组a的前n个元素中查找x,如果找到,返回x在数组a中的位置;如果没有找到,返回0。例如:数组a中有元素{1,4,3,2,5},调用find(a,5,2)后返回4,因为在a的前5个元素中找到了2,它在a中的位置是4;而调用find(a,5,10)后返回0,因为在a的前5个元素中没有找到10。2.文本文件input.txt中存放着一批互异的整数(数量不多于100)。请编写一个程序,当运行该程序时,首先从键盘输入一个整数x,如果文本文件input.txt中包含了x,则输出x在文件中的位置,否则,输出”Notfound”(必须调用第1题定义的函数find查找x)。例如:如果文件input.txt中存放了1,4,3,2,5,运行程序,并输入2后,输出4。3.设a是一个整型数组,n和x都是整数,数组a中各元素的值互异,并按升序排列。请编写函数find(a,n,x),采用二分法在数组a的前n个元素中查找x,如果找到,返回x在数组a中的位置;如果没有找到,返回0。例如:数组a中有元素{1,3,5,7,8},调用find(a,5,3)后返回2,因为在a的前5个元素中找到了3,它在a中的位置是2;而调用find(a,5,10)后返回0,因为在a的前5个元素中没有找到10。4.文本文件filename中存放着一批已按升序排列的互异的整数(数量不多于100)。请编写一个带命令行参数的程序prog.c,当运行progfilenamenumber时,如果文本文件filename中包含了数number,输出该数在文件中的位置,否则,输出”Notfound”,其它的运行方式显示出错信息。(程序中可以调用函数atoi,必须调用第3题定义的函数find查找number)。