C程序设计基础-期中考试试题详解_第1页
C程序设计基础-期中考试试题详解_第2页
C程序设计基础-期中考试试题详解_第3页
C程序设计基础-期中考试试题详解_第4页
C程序设计基础-期中考试试题详解_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

?C程序设计根底及实验?期中考试试卷,2023年11月23日PAGE1/10?C程序设计根底及实验?课程期中考试试卷参考答案试题一、单项选择题〔每题2分,共20分〕以下正确的字符常量是______。A.’\412’B.255C.’\08’D.’\’【解答】八进制412超出了8位二进制所能表示的范围03ff;255是一个合法的整数,可以表示一个字节的值;8不是一个合法的八进制数字;\是转义字符,\’表示单个单引号字符本身,所以。字符常量缺少右单引号。假设有定义: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.6以下语句中,_____将输出%d。A.printf(“%d〞);B.printf(“%%d〞);C.printf(“\%d〞);D.printf(“%%%d〞)【解答】A.%d表示输出十进制整型量,但缺少相应的输出表达式,故输出结果是随机值;B.%%表示输出一个%符号本身,d是普通字符,原样输出,所以输出%d;C.\%表示符号%,%d表示输出十进制整型值,故输出结果是随机值;D.%%表示输出符号%本身,%d表示输出十进制整型值。以下程序段输出结果为_____。intx=1,y=012; printf(“%d〞,y*x++);A.12B.10 C.20D.24【解答】x++表达式的值是1,y*x++y*1y01210以下程序段输出结果为_____。inta=1,b=2,c=2,t;while(a<b<c){ t=a;a=b;b=t;c--; }printf(“%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表达式a<b<c1<2<21<21条件成立,那么执行循环体,结果为:a=2,b=1,c=1表达式a<b<c2<1<10<11条件成立,那么执行循环体,结果为:a=1,b=2,c=0表达式a<b<c1<2<01<00条件不成立,循环结束。在以下图中,阴影局部区域可用表达式_______来表示。 //// //// //// ////X a b cA.(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)以下程序段输出结果为_____。intx=-3,y=2;if(x>y);x=-x;if(x<y)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(x>y);对于循环while(!e)语句,!e等价于_____。A.e==0B.e!=0C.e==1;D.e!=1【解答】!ee==0e!=0e==1e!=1e为011001e为非00010/10/1循环for(i=0,j=5;++i!=--j;)printf(“%d%d〞,i,j);将执行_____。A.6次B.3次C.0次D.无限次【解答】i=0,j=5:++i1,--j4,i=1,j=4,1!=4成立;打印;i=1,j=4;i=1,j=4:++I2,--j3,i=2,j=3,2!=3成立;打印;i=2,j=3;i=2,j=3:++I3,--j2,I=3,j=2,3!=2成立;打印;i=3,j=2;……以下程序段执行后s值为_____。 inti=5,s=0; doif(i%2)continue;elses+=i;while(--i);A.15B.9C.6D.以上均不是【解答】I=5,s=0:i%25%21成立:continue;--i4,i=4;I=4,s=0:i%24%20不成立:s=0+4=4;--i3,i=3I=3,s=4:i%23%21成立:continue;--i2,i=2I=2,s=4:i%22%20不成立:s=4+2=6;--i1,i=1I=1,s=6:i%21%21成立:continue;--i0试题二、填空题〔每题2分,共20分〕表达式1+4/5+15<7+4%5+(8,10)的值为_____。【解答】1+(4/5)+15<7+4%5+(8,10)1+0+15<7+4%5+(8,10)1+15<7+4%5+(8,10)16<7+4%5+(8,10)16<7+4+(8,10)16<11+(8,10)16<11+1016<211表达式!!5的值为_____。【解答】!!5!(!5)!01表达式~(10<<1)&4的值为______。【解答】10:0000101010<<1:00010100~(10<<1):111010114:00000100&00000000即0假设有定义:intx=10;那么表达式0<=x<=9的值为_____。【解答】0<=x<=9(0<=x)<=9(0<=10)<=91<=91以下for循环语句将输出:012012012.for(i=1;i<=9;i++)printf("%2d",_______);【解答】(i-1)%3对于定义: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)-16对于charc;假设其值为小写字母,那么将其转换为相应大写字母的表达式为_____。【解答】c-‘a’+’A’以下语句的输出结果为_____。printf("%d#%x#",027,27);【解答】23#1b#字符’a’的ASCII码为97,那么以下语句的输出结果为_____。printf("%c#%d#",98,’c’);【解答】b#99#以下程序段将输出_____。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分〕以下程序将输出_____。#include<stdio.h>voidswap(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#注:尽管在函数swap()里,形参x和y的值发生了交换,但根据函数参数的传递原那么——“实参向形参单向传值〔即x向a赋值,y向b赋值〕,形参的改变不影响实参〞,实参变量a和b的值未发生交换!以下程序将输出_____。#include<stdio.h>ints;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调用结束后,其内存单元和值仍然保存。假设输入:1273<回车>,以下程序的输出结果是_______。#include<stdio.h>voidmain(void){ intn,m;scanf(“%d〞,&n);m=0;while(n>0){m=m*10+n%10;n/=10;}printf(“%d〞,m);return;}【解答】输出结果是:3721假设输入-6+15*3/5=<回车>,以下程序的输出结果是_______。#include<stdio.h>voidmain(){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值。假设输入:howareyou?<回车>,以下程序的输出结果是_______。#include<stdio.h>voidmain(void){intword; charch;word=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分〕输入正整数n,计算s=1/1!+1/2!+1/3!+……+1/n!的值。#include<stdio.h>voidmain(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*j s=s+1.0/f;}printf("sum=%f\n",(5));sreturn;}输入一个整数,统计该数的位数。如:输入12534,输出5;输入-99,输出2;输入0,输出1。#include<stdio.h>voidmain(void){ intcount=0,number; scanf(“%d〞,(6));&number if(number<0)number=(7);-numberdo{ number=(8);number/10 count++;}while((9));n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论