• 116.00 KB
  • 2022-04-22 11:47:19 发布

C语言考试复习专用三套题附答案.doc

  • 14页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《C语言程序设计》习题集习题一一、    语言基础(共20分,每题2分)(一)设x为一数字字符,则其所对应的十进制数值为。A)xB)x-‘0’C)*xD)&x(二)说明语句chars=‘t’,使s包含了几个字符?。A)1B)2C)3D)说明有错(三)设a=6,b=4,则表达式b*=a+3的值为。A)3B)18C)27D)36(四)若给定表达式(m)?a++:a--,则其中表达式m和等价。A)m==0B)m!=0C)m=0D)m=1(五)设有说明语句inta[10],则数组a包括了个数组元素。A)1B)9C)10D)20(六)以下函数test返回值类型为。test(intx){printf(“%fn”,(float)x);}A)intB)floatC)voidD)不确定或错误(七)C语言规定,main函数的参数。A)只能有0个B)只能有0个或一个C)只能有0个或2个D)可有任意个(八)设x为整型变量,p基类型为整型的指针变量,则正确的赋值表达式是。A)p=&xB)p=xC)*p=&xD)*p=*x(九)TurboC中,int型数据在存储器中占二个字节,则以下类型数据在存储器中占的字节数为:。structtest{intx;floaty;charz;};A)2B)3C)6D)7(十)rewind()函数的作用是。A)重新打开文件B)使文件位置指针重新回到文件的开始C)使文件位置指针重新回到文件的末D)返回文件长度值 二、阅读下列程序,写出运行结果(共18分,每题3分)[程序1]#includevoidmain(){inta=1,b=4,c=2;运行结果:1a=(a+b)/c;printf(“%dn”,--a);}[程序2]voidmain(){charc1=67;/*‘A’的ASCII码值为65*/if(‘A’<=c1&&c1<=’Z’)运行结果:67,D printf(“%d,%c”,c1,c1+1);elseprintf(“%c”,c1);}[程序3]viodmain(){inta=0,n=5;运行结果:1,5,4,3,2,0for(;;){a++;n--;printf(“%d,”,a);a=n;if(n==0)break;}printf(“%d”,a);}[程序4]main(){inti,j;运行结果:1,2,4,8,16,32,64,128,256,512staticinta[10]={1,1,1,1,1,1,1,1,1,1};for(i=0;i<10;i++)for(j=0;jvoidmain(){floata,b,c,s,s1;scanf(“%f%f%f”,4);答案:&a,&b,&cif((a+b)>c&&(a+c)>b&&(b+c)>a){s=(a+b+c)/2;s1=s*(s-a)*(s-b)*(s-c);s=5;答案:sqrt(s1)printf(“n三角形面积为:%fn”,s);}elseprintf(“n不是三角!n”);}(四)从键盘输入一个字符串,把它输出到文件中,文件名由键盘输入。#includevoidmain(){FILE*fp;charch,*fn;scanf(“%s”,fn);if((fp=fopen(fn,6))==NULL)答案:“w”{printf(“打开文件出错n”);exit(1);}while((ch=getchar())!=EOF){fputc(7);答案:ch,fpputchar(ch);}fclose(fp);} 四、编程题(共21分)1.从键盘输入3个整数,输出其中最大数。(5分)main(){inti=0,x,mx=-32768;while(i++<3){scanf(“%d”,&x);if(x>mx)mx=x;}printf(“n%dn”,mx);}2.编写一函数uf(s),将字符串s中的第一个和最后一个字母改写成大写字母(如原来不是字母或已是大写字母,则不变)。(5分)#includeuf(char*s){inti;i=strlen(s);if(i==0)return;if(s[0]>=’a’&&s[0]<=’z’)s[0]+=’A’-‘a’; if(s[i-1]>=’a’&&s[i-1]<=‘z’)s[i-1]+=’A’–‘a’;}main(){chars[]=”asdfgh”;uf(s);printf(“n%sn”,s);}3.从键盘输入10个浮点数,输出其平均值及所有低于平均值的数。(5分)#includemain(){floata[10],ave=0;inti;for(i=0;i<10;i++){scanf(“%f”,&a[i]);ave+=a[i];}ave/=10;for(i=0;i<10;i++)if(a[i]y?10:11>y++?’a’:’z’(三)若所有变量都已正确定义为int型则执行下列程序段后x的值为79。x=80;a=10b=16;y=9;z=0;if(ajj=j+2);elsei=i+2;}(五)若有数组a[10],类型为int型,元素及值如下所示:数组元素:a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]元素中的值:9483267015 则*(a+a[9])的值为6。(六)以下函数调用语句中实参的个数为3.Sub((x1,x2),(x3,x4,x5),x6)(七)若有以下函数定义:  int(*hs)(){……/*函数体*/}则函数hs返回的值是整形。(八)某C编译程序规定,int型数据存储占2个字节,float型数据存储占4个字节,char型数据存储占1个字节,现有记录描述如下: structstu{union{charbj[5];intbh[2];}class;charxm[8];floatcj;}xs;则sizseof(xs)的值为17。(九)设有以下定义:#definea6#defineba+4则执行语句c=b*10(c为int型数据)后,c的值为46。(十)在C中,文件指针变量的类型只能是FILE。 二、阅读下列程序,写出运行结果(共20分,每题4分)[程序1]  #includemain(){inti;运行结果:i=18,J=29.44floatj;i=18;j=29.4361;printf(“i=%4d,j=%2.2f”,i,j);}[程序2]main(){intk=10;charc=’b’;doswith(c++)运行结果:12{ case‘a’:k++;case‘b’:k--;case‘c’:k+=3;break;case‘d’:k=k%4;}while(c!=’c’);     printf(“%dn”,k);}[程序3]main(){chara[]=”computer”;chart;inti,j=0;运行结果:utrpomecfor(i=0;I<8;I++)for(j=i+1;j<8;j++)if(a[i]main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<3;j++){if(j%2)break;x++;}x++;}printf("x=%dn",x);}程序运行结果是:x=6三、阅读下列程序,在 线处填上合适的内容使程序(或函数)完整(共18分,每空2分)1.  以下程序的功能是求三个数的最小公倍数。max(intx,inty,intz){if(x>y&&x>z)return(x);elseif(y>=x&&y>z)return(y);elsereturn(z);}main(){inta,b,c,I=1,j,s;scanf(“%d%d%d”,&a,&b,&c);s=max(a,b,c);while(1){j=s*i;if((j%a==0)&&(j%b==0)&&(j%c==0))break;i++;}prinf(“%d”,j); }2.  下面程序是判断输入的字符是否中心对称,(如”xyzzyx”和”xyzyx”都中心对称#includemain(){ chars[100],*p1,p2;intn;gets(s);n=strlen(s);p1=s;p2=s+n-1;while(p1age){q=p;old=p->age;}printf(“%s,%dn”,q->name,q->age);}四、编程题(共22分)1. 有36块砖,共36人搬,成年男子一次搬4块砖,成年女子一次搬3块砖,儿童两人抬1块砖,恰好一次全部搬完,编程求出成年男子成年女子和儿童各有多少人。(6分) main(){intmen,women,child;for(men=0;men<9;men++)for(womem=0;women<12;women++){child=36-men-women;if((men*4+women*3+child/2.0)=36)printf(“%d,%d,%dn”,men,women,child);}2. 非波那契数的递归如下:除X0和X1外,序列中某个元素的值是其前两个元素的和,编写程序输入序号n,求它的非波那契数Xn。longfib(inty){if(y==0)return(0);elseif(y==1)return(1);elsereturn(fib(y-1)+fib(y-2));}main(){intn;longk;scanf(“%d”,&n);k=fib(n);printf(“k=%dn”,k);}3.用循环语句编程将二维数组a[3][4]的第一行和第三行对调(如下图),并输出数组。(8分)main(){inti,j,t;inta[3][4]={2,3,4,5,3,8,10,2,7,9,3,1};for(i=0;i<4;i++){t=a[0][i]; a[0][i]=a[2][i];a[2][i]=t;}for(i=0;i<3;i++){for(j=0;j<4;j++)printf(“%3d”,a[i][j]);printf(“n”);}} 习题三一.语言基础(共20分,每题2分)(一)正确的C语言自定义标志符是A。1.A)file_bakB)abc(10)C)continueD)class+3(二)设intx=8,y,z;执行y=z=x++;x=y==z后,变量x的值是B。2.A)0B)1C)8D)9(三)字符串“wx53\np103q”的长度是A。3.A)7B)9C)15D)16(四)设inta=9,b=8,c=7,x=1;则执行语句if(a>7)if(b>8)if(c>9)x=2;elsex=3;后x的值是C。4.A)0B)2C)1D)3(五)有如下程序main(){intx=23;do{printf(“%d”,x--);}while(!x);}该程序的执行结果是B。5.A)321B)23C)不输出任何内容D)陷入死循环(六)定义一个具有8个元素的整型数组,应当使用语句A。6.A)inta[8];B)inta[2,4];C)inta[];D)int*a[8];(七)设intx[]={4,2,3,1},q,*p=&x[1];则执行语句q=(*――p)++后,变量q的值为A。7.A)4B)3C)2D)1 (八)函数调用时,下列说法中不正确的是B。8.A)实际参数和形式参数可以同名B)若用值传递方式,则形式参数不予分配存储单元C)主调函数和被调函数可以不在同一个文件中D)函数间传递数据可以使用全局变量(九)下列数据类型中不属于构造类型的是D。9.A)数组型B)结构型C)公用型D)枚举型(十)存储整型数据-7856时,在二进制文件和文本文件中占用的字节数分别是B。10.A)3,2B)2,5C)5,5D)5,2 二、阅读下列程序,写出运行结果(共20分,每题4分)【程序1】#includemain(){intx=1,a=0,b=0;运行结果:a=1,b=1switch(x){case0;b++;case1;a++;case2;a++;b++;}printf(“a=%d,b=%dn”,a,b);}【程序2】space(intm){             while(m--)printf(“%c”,32);        }运行结果:*main()***{inti,j;printf(“n”);***for(i=5;i>=1;i--)***{                                               ***           space(i);           printf(“*”);for(j=3;j>=2*(i/5)+2;j--){space(4-i);printf(“*”);   }printf(“n”);}        } 【程序3】longff(intn)运行结果:6{if(n>3)return(ff(n-1)+ff(n-2));elsereturn(3);}main(){printf(“%dn”,ff(4));} 【程序4】main()运行结果400-4-3:{inti,a[5];for(i=0;i<5;i++)a[i]=9*(i-2+4*(i>2))%5;for(i=4;i>=0;i--)printf(“%3d”,a[i]);}【程序5】#include运行结果:13unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf(“%dn”,a.i);}6、以下程序的输出结果为_____x=37___。#defineA3#defineB(a)(A+1)*amain(){intx;x=3*A+B(7);printf("x=%dn",x);}7.#includevoidFun(int*y) {printf("*y=%dn",*y);*y+=20;printf("*y=%dn",*y);}main(){intx=10;printf("x=%dn",x);Fun(&x);printf("x=%dn",x);}程序运行结果是:x=10*y=10*y=30X=30三、阅读下列程序,在处填上适当的内容使其完整。(共20分,每空2分)(一)下面程序用于计算n!的值。main(){inti,s,n;s=1;printf(“entern:”);scanf(“%d”,&n);for(i=1;i<=n;i++)(s=s*i);printf(“s=%d”,s);}(二)从键盘上输入一行字符(不多于40个,以回车换行符作为输入结束标记),将其中的大写字母改为小写字母,其它字符不变,然后逆向输出。main(){chara[40];intn=0;do{scanf(“%c”,&a[n]);if((‘A’<=a[n])&&(a[n]<=’z’))a[n]+=32;n++;}while(a[n-1]!=‘n’);n=n-2;while(n>=0)printf(“%c”,a[n--]);}(四)从终端读入的文本(用@作为文本结束标志)复制到一个名字C.DAT的新文件中。 #includeFILE*fp;main(){charch;if((fp=pmain(){intm,n,a,b,r;scanf(“%d,%d”,&m,&n);a=m;b=n;do{r=a%d;a=b;b=r;}while(r!=0)printf(“%d,%dis%dn”,m,n,a);}'