您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > C程序设计基础-期中考试试题详解
《C程序设计基础及实验》期中考试试卷,2012年11月23日1/10《C程序设计基础及实验》课程期中考试试卷参考答案试题一、单选题(每小题2分,共20分)1.以下正确的字符常量是______。A.’\412’B.255C.’\08’D.’\’【解答】A.八进制412超出了8位二进制所能表示的范围03ff;B.255是一个合法的整数,可以表示一个字节的值;C.8不是一个合法的八进制数字;D.\是转义字符,\’表示单个单引号字符本身,所以。字符常量缺少右单引号。2.假设有定义:floatx=16/5/2.0,y=16/5.0/2;则x和y的值分别为______。A.1.51.6B.1.61.6C.1.51.5D.1.61.5【解答】16/5/2.0(16/5)/2.03/2.01.516/5.0/2(16/5.0)/23.2/21.63.下列语句中,_____将输出%d。A.printf(“%d”);B.printf(“%%d”);C.printf(“\%d”);D.printf(“%%%d”)【解答】A.%d表示输出十进制整型量,但缺少相应的输出表达式,故输出结果是随机值;B.%%表示输出一个%符号本身,d是普通字符,原样输出,所以输出%d;C.\%表示符号%,%d表示输出十进制整型值,故输出结果是随机值;D.%%表示输出符号%本身,%d表示输出十进制整型值。4.下列程序段输出结果为_____。intx=1,y=012;printf(“%d”,y*x++);A.12B.10C.20D.24【解答】x++表达式的值是1,y*x++y*1y012105.下列程序段输出结果为_____。inta=1,b=2,c=2,t;while(abc){t=a;a=b;b=t;c--;}《C程序设计基础及实验》期中考试试卷,2012年11月23日2/10printf(“%d,%d,%d”,a,b,c);A.1,2,0B.2,1,0C.1,2,1D.2,1,1【解答】a=1,b=2,c=2(1)表达式abc122121条件成立,则执行循环体,结果为:a=2,b=1,c=1(2)表达式abc211011条件成立,则执行循环体,结果为:a=1,b=2,c=0(3)表达式abc120100条件不成立,循环结束。6.在下图中,阴影部分区域可用表达式_______来表示。////////////////XabcA.(x=a)&&(x=b)&&(x=c)B.(x=a)||(b=x=c)C.(x=a)||(x=b)&&(x=c)D.(x=a)&&(b=x=c)【解答】(x=a)||((x=b)&&(x=c))(x=a)||(x=b)&&(x=c)7.下列程序段输出结果为_____。intx=-3,y=2;if(xy);x=-x;if(xy)y=-y;printf(x=%d,y=%d\n,x,y);A.x=3,y=-2B.x=3,y=2C.x=-3,y=2D.x=-3,y=-2【解答】x=3,y=2;请注意:if(xy);8.对于循环while(!e)语句,!e等价于_____。A.e==0B.e!=0C.e==1;D.e!=1【解答】!ee==0e!=0e==1e!=1e为011001e为非00010/10/19.循环for(i=0,j=5;++i!=--j;)printf(“%d%d”,i,j);将执行_____。《C程序设计基础及实验》期中考试试卷,2012年11月23日3/10A.6次B.3次C.0次D.无限次【解答】(1)i=0,j=5:++i1,--j4,i=1,j=4,1!=4成立;打印;i=1,j=4;(2)i=1,j=4:++I2,--j3,i=2,j=3,2!=3成立;打印;i=2,j=3;(3)i=2,j=3:++I3,--j2,I=3,j=2,3!=2成立;打印;i=3,j=2;(4)……10.下列程序段执行后s值为_____。inti=5,s=0;doif(i%2)continue;elses+=i;while(--i);A.15B.9C.6D.以上均不是【解答】(1)I=5,s=0:i%25%21成立:continue;--i4,i=4;(2)I=4,s=0:i%24%20不成立:s=0+4=4;--i3,i=3(3)I=3,s=4:i%23%21成立:continue;--i2,i=2(4)I=2,s=4:i%22%20不成立:s=4+2=6;--i1,i=1(5)I=1,s=6:i%21%21成立:continue;--i0试题二、填空题(每小题2分,共20分)1.表达式1+4/5+157+4%5+(8,10)的值为_____。【解答】1+(4/5)+157+4%5+(8,10)1+0+157+4%5+(8,10)1+157+4%5+(8,10)167+4%5+(8,10)167+4+(8,10)1611+(8,10)1611+10162112.表达式!!5的值为_____。【解答】!!5!(!5)!013.表达式~(101)&4的值为______。《C程序设计基础及实验》期中考试试卷,2012年11月23日4/10【解答】10:00001010101:00010100~(101):111010114:00000100&----------------------------------00000000即04.假设有定义:intx=10;则表达式0=x=9的值为_____。【解答】0=x=9(0=x)=9(0=10)=91=915.下列for循环语句将输出:012012012.for(i=1;i=9;i++)printf(%2d,_______);【解答】(i-1)%36.对于定义:intm=5,y=2;当计算表达式y+=y-=m*=y后,y的值为_____。【解答】y+=y-=m*=yy+=(y-=(m*=y))先计算m*=y:由于m=5,y=2,所以:m=m*y=5*210再计算y-=10:由于y=2,所以:y=y-10=2-10-8最后计算y+=-8:由于y=-8,所以:y=y+(-8)=(-8)+(-8)-167.对于charc;若已知其值为小写字母,则将其转换为相应大写字母的表达式为_____。【解答】c-‘a’+’A’8.下列语句的输出结果为_____。printf(%d#%x#,027,27);【解答】23#1b#9.已知字符’a’的ASCII码为97,则下列语句的输出结果为_____。printf(%c#%d#,98,’c’);《C程序设计基础及实验》期中考试试卷,2012年11月23日5/10【解答】b#99#10.下列程序段将输出_____。unsignedcharx=255,y=’\1’;switch(!!x){case0:printf(*0*#);break;case1:switch(y){case0:printf(*1*#);break;case1:printf(*2*#);break;}default:printf(*3*#);}【解答】*2*#*3*#试题三、程序阅读题(每小题6分,共30分)1.下列程序将输出_____。#includestdio.hvoidswap(intx,inty){intt;t=x;x=y;y=t;return;}voidmain(void){inta=3,b=2;swap(a,b);printf(%d#%d#,a,b);return;}【解答】3#2#《C程序设计基础及实验》期中考试试卷,2012年11月23日6/10注:尽管在函数swap()里,形参x和y的值发生了交换,但根据函数参数的传递原则——“实参向形参单向传值(即x向a赋值,y向b赋值),形参的改变不影响实参”,实参变量a和b的值未发生交换!2.下列程序将输出_____。#includestdio.hints;intf(intm){staticintk=0;for(;k=m;k++)s++;returns;}voidmain(void){ints=1;s=f(2)+f(2);printf(%d#%d#,s,f(20));return;}【解答】输出结果为:6#21#注:(1)全局变量s的初始值为0;(2)在f函数中,s是全局变量有效,而在main函数中,s是局部变量有效;(3)在f函数中,k是静态变量,每次函数f调用结束后,其内存单元和值仍然保留。3.若输入:1273回车,以下程序的输出结果是_______。#includestdio.hvoidmain(void){intn,m;scanf(“%d”,&n);m=0;while(n0){m=m*10+n%10;n/=10;}《C程序设计基础及实验》期中考试试卷,2012年11月23日7/10printf(“%d”,m);return;}【解答】输出结果是:37214.若输入-6+15*3/5=回车,以下程序的输出结果是_______。#includestdio.hvoidmain(){intm=0,sum=0;charc,oldc='+';do{c=getchar();if(c='9'&&c='0')m=10*m+c-'0';else{if(oldc=='+')sum+=m;elsesum-=m;m=0;oldc=c;printf(%d#,sum);}}while(c!='=');return;}【解答】0#-6#9#6#1#程序的意思:对输入的字符串扫描,若碰到数字字符序列,求出相应的整数值m;若碰到其它字符——若字符是+号,则将m值加入到sum中去;若字符不是+号,则将从sum中减去m值。5.若输入:howareyou?回车,以下程序的输出结果是_______。#includestdio.hvoidmain(void){intword;charch;《C程序设计基础及实验》期中考试试卷,2012年11月23日8/10word=0;while((ch=getchar())!='?'){if(ch=='')word=0;elseif(word==0){word=1;if(ch='z'&&ch='a')ch=ch-'a'+'A';}putchar(ch);}return;}【解答】HowAreYou该程序思路:碰到一个新单词,则将该单词首字母从小写改为大写,其它字符原样输出。提示:可借鉴统计单词个数程序的算法。试题四、程序填空题(每空2分,共30分)1.输入正整数n,计算s=1/1!+1/2!+1/3!+……+1/n!的值。#includestdio.hvoidmain(void){intj,k,n;doublef,s;scanf(%d,&n);(1);s=0.0for(k=1;k=n;k++){(2);f=1.0for(j=1;(3);j++)j=k(4);f=f*js=s+1.0/f;}printf(sum=%f\n,(5));sreturn;}2.输入一个整数,统计该数的位数。如:输入12534,输出5;输入-99,输出2;输入0,输出1。#includestdio.hvoidmain(void)《C程序设计基础及实验》期中考试试卷,2012年11月23日9/10{intcount=0,number;scanf(“%d”,(6));&numberif(number0)number=(7);-numberdo{number=(8);number/10count++;}while((9));number!=0printf(“%d\n”,count);return;}3.下面程序验证“哥德巴赫猜想”:寻找3到1000间满足“偶数=素数1+素数2”(如
本文标题:C程序设计基础-期中考试试题详解
链接地址:https://www.777doc.com/doc-3136749 .html