• 188.50 KB
  • 2022-04-22 11:51:36 发布

《C语言程序设计》复习题有答案1.doc

  • 43页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《C语言程序设计》复习题一、填空题1、C语言的源程序必须通过编译和链接后,才能被计算机执行。2、C语言的源程序必须通过编译和连接后,才能被计算机执行。3、C语言中的标示符可分为关键字、拥护标示符和预定义标识符3类。4、C语言中的标示符可分为关键字、用户标识符和预定义标示符3类。5、在C语言中,用关键字float定义单精度实型变量。6、在C语言中,用关键字double定义双精度实型变量。7、在C语言中,用关键字char定义字符型变量。8、在C语言的赋值表达式中,赋值好左边必须是变量。9、设C语言中的一个int型数据在内存中占2个字节,则int型数据的取值范围为-32768--32768。10、若有定义语句:ints=6;则表达式s%2+(s+1)%2的值为1。11、若a是int型变量,且a的初值为6,则执行表达式a+=a-=a*a后a的值为-60。12、若a是int型变量,则执行表达式a=25/3%3后a的值为2。13、在程序运行过程中,其值不能被改变的量称为常量。14、C程序中定义的变量,代表内存中的一个存储单元。15、C语言中,int类型数据字符占内存2个字节。16、C语言中,char类型数据占内存1个字节。17、C语言的字符常量是用单引号括起来的一个字符。18、语句printf(“n”);的作用是换行输出。19、10/3的结果是3。20、10%3的结果是1。21、C语句的最后用;结束。22、要使用putchar函数,在#include命令行中应包含的头文件是#include。23、要使用getchar函数,在#include命令行中应包含的头文件是#include。24、为表示关系|x|≥9;应使用的C语言表达式是x<=-9||x>=9。25、为表示关系|x|≤9;应使用的C语言表达式是x>=-9&&x<=9。26、C语言中用1表示逻辑值“真”。27、C语言中用0表示逻辑值“假”。28、当a=3,b=2,c=1时;表达式f=a>b>c的值是0。29、以下程序段的输出结果是83。intx=0123;printf(“%dn”,x);30、以下程序段的输出结果是291。intx=0x123;printf(“%dn”,x);31、以下程序段的输出结果是d1。 intx=0321;printf(“%xn”,x);1、若A的ASCII为65,则以下程序段的输出结果是D。charx=’A’;printf(“%c”,x+3);2、以下程序段的输出结果是51。charx=’0’;printf(“%d”,x+3);3、以下程序段的输出结果是00.500000intn=2;floatx=2.0;printf(“%d%f”,1/n,1/x);4、以下程序段的输出结果是67.000000intn=2;floatx=2.0;chara=’A’;printf(“%f”,1/n+x+a);5、以下程序段的输出结果是x=3.600000i=3。floatx=3.6;inti;i=(int)x;printf(“x=%fi=%d”,x,i);6、以下程序段的输出结果是45.500000。floatx=9.0;printf(“%f”,x=45.5);7、以下程序段的输出结果是-100。intx=100,y=200;printf(“%d”,(x+y,x-y));8、以下程序的输出结果为-4.177774,fffc,65532。main(){shortI;i=-4;printf(“n%d,%o,%x,%u”,i,i,i,i);}9、以下程序的输出结果为*3.1400003.142。main(){printf(“*%f,%4.3fn”,3.14,3.1415);}10、以下程序的输出结果为000325,3.141596e+000。main(){inta=325;doublex=3.141596;printf(“%06d,%+en”,a,x);}11、若从键盘上输入987654321,以下程序的输出结果是32.00。main() {inta;floatb,c;scanf("%3d%3f%2f",&a,&b,&c);printf("%6.2f",c);}1、以下程序段的输出结果是a=12。inta=12;if(a>12)printf(“a=%d”,a);elseprintf(“a=%d”,a);2、以下程序段的输出结果是***。inta=1;if(--a)printf(“###”);elseprintf(“***”);3、若变量已正确定义,以下语句段的输出结果是*%*#。x=0;y=2;z=2;switch(x){case0:switch(y==2){case1:printf(“*”);case2:printf(“%”);break;}case1:switch(z){case1:printf(“$);case2:printf(“*”);default:printf(“#”);}}4、以下程序的输出结果是a=2,b=1main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("na=%d,b=%d",a,b);}5、以下程序的运行结果是1。 main(){intx,y,z;x=3;y=3;z=x==y;printf(“%dn”,z);}1、以下程序的运行结果是1,0。main(){intx,y,z;x=1;y=1;z=0;x=x||y&&z;printf(“%d,%d”,x,x&&!y||z);}2、以下程序的运行结果是F。main(){if(2*2==5<2*2==4)printf(“T”);elseprintf(“F”);}3、若运行时输入5999,则以下程序的运行结果是3635.4。main(){intx;floaty;scanf(“%d”,&x);if(x>=0&&x<=2999)y=18+0.12*x;if(x>=3000&&x<=5999)y=36+0.6*x;if(x>=6000&&x<=10000)y=54+0.3*x;printf(“%6.1f”,y);}4、以下程序的输出结果是2。main(){intx,y;x=y=2;if(x==1)if(x==2printf(“%dn”,x=x+y);elseprintf(“%dn”,x=x-y);printf(“%dn”,x);}5、以下程序的输出结果是20。main(){inta,b,c,d,x;a=c=0;b=1;d=20; if(a)d=d-10;elseif(!b)if(!c)x=15;elsex=25;printf(“%dn”,d);}1、以下程序的输出结果是-1。main(){nta=2,b=3,c;c=a;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;printf(“%dn”,c);}2、以下程序的输出结果是01。main(){intx,y,z;x=3;y=z=4;printf(“%d,”(x>=y>=x)?1:0);printf(“%dn”,z>=y&&y>=x);}3、若a、b、c均已正确定义且a=0、b=2、c=3,则以下程序的输出是&#。switch(a){case0:switch(b==2){case1:printf(“&”);break;case2:printf(“%”);break;}case1:switch(c){case1:printf(“$”);case2:printf(“*”);break;default:printf(“#”);}}4、以下程序段的输出结果是**1**5、**3**。intx=1,y=0;switch(x){case1:switch(y){case0:printf(“**1**n”);break;case1:printf(“**2**n”);break;} case2:printf(“**3**n”);}1、当运行以下程序时,从键盘输入:right?<回车>,则输出结果是sjhiu。main(){charc;while((c=getchar())!=’?’)putchar(++c);}2、下面程序段的运行结果是**。x=2;do{printf(“*”);x--;}while(!x==0);3、下面程序段的运行结果是-5。i=1;a=0;s=1;do{a=a+s*i;s=-s;i++;}while(i<=10);printf(“%d”,a);4、下面程序段的运行结果是16,15。main(){inti,x,y;i=x=y=0;do{++i;if(i%2!=0){x=x+i;i++;}y=y+y++;}while(i<=7);printf(“%d,%d”,x,y);}5、下面程序段的运行结果是sum=19。main(){inti,t,sum=0;for(t=i=1;i<=10;){sum+=t;++i;if(i%3==0)t=-i;elset=i;}printf(“sum=%d”,sum);}6、下面程序段的运行结果是*7、#。main(){inti;for(i=1;i<=5;i++)switch(i%2){case0:i++;printf(“#”);break; case1:i+=2;printf(“*”);default:printf(“n”);}}1、下面程序段的运行结果是****#。main(){inti,j=4;for(i=j;i<=2*j;i++)switch(i/j){case0:case1:printf(“*”);break;case2:printf(“#”);}}2、以下程序的运行结果是358。main(){intx[5],i;x[0]=1;x[1]=2;for(i=2;i<5;i++)x[i]=x[i-1]+x[i-2];for(i=2;i<5;i++)printf(“%d”,x[i]);}3、以下程序段的输出结果是8。intk=1,n=4,m=1;while(k<=--n)m*=2;printf(“%dn”,m);4、(6.3p107)以下程序段输出结果是0。main(){intx=2;while(--x);printf("%dn",x);}5、以下程序段输出结果是16。inti=0,sum=1;do{sum+=i;}while(i++<5);printf("%dn",sum);6、以下程序段的输出结果是11。ints=1,k=1;for(;k<=10;k++)s=s+s/k;printf(“%dn”,s);7、以下程序段的输出结果是**3##4**5intx; for(x=3;x<6;++x)printf((x%2)?("**%d"):("##%d"),x);1、以下程序的输出结果是7/13=0.538461main(){longa=7,b=13,c,i;printf("n%ld/%ld=%ld.",a,b,a/b);c=a%b;a=c;do{a=a*10;for(i=1;i<=10;i++){if(a=10){uu[n++]=t/10;uu[n]=t%10;}elseuu[n]=t;}main(){inti,n,aa[10]={0};scanf(“%d,%d,%d”,&n,&aa[0],&aa[1]);for(i=1;i=’A’)&(ch<=’Z’) C.(ch>=’A’)&&(ch<=’Z’)D.(‘A’<=ch)AND(‘Z’>=ch)1、设x、y和z是int型变量,且x=3,y=4,z=5,则下列表达式中值为0的是【D】A.’x’&&’y’B.x<=yC.x||y+z&&y-zD.!((x=y)&&(y>=z)B)(x>=y)AND(y>=z)C)(x>=y>=z)D)(x>=y)&(y>=z)4、设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是:【D】A)a&&bB)a<=bC)a||b+c&&b-cD)!((a=0)k++;}printf(“%d,%d”,k,b);}2、下面程序的运行结果是【C】A.-40404B.-40403C.-40443D.-40440main(){inta[6],i;for(i=1;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;printf(“%3d”,a[i]);}}3、以下程序的运行结果是:【B】A.-16B.-17C.17D.15fun(inta,intb){if(a>b)return(a+b);elsereturn(a-b);}main(){intx=3,y=8,z=6,r;r=run(run(x,y),2*z);printf("%dn",r);}4、以下程序的运行结果是【A】A.-48B.58C.-58D.47intf(intx,inty){return(y-x)*x;}main(){inta=3,b=4,c=5,d;d=f(f(a,c),f(a,b)+f(c,b));printf("%dn",d); }1、以下程序的输出结果是【B】A.6,1B.2,1C.6,0D.2,0main(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%dn”,a,b);}2、当a=1、b=3、c=5、d=4时,执行以下程序段后x的值是【B】A.1B.2C.3D.6if(a12?x+10:x-12;printf(“%dn”,y);}2、以下程序的运行结果是【D】A.4B.3C.2D.1main(){intk=4,a=3,b=2,c=1;printf(“n%dn”,k((y>z)?y:z)?x:((y>z)?y:z));}5、以下程序段的输出结果是:【C】A)1098B)987C)死循环D)9876intn=10;while(n>7); {n--;printf("%d",n);}1、以下程序段的输出结果是:【D】A)1B)30C)1-2D)死循环intx=3;do{printf("%3d",x-=2);}while(x--);2、以下程序段的输出结果是:【D】A)6420B)42C)420D)死循环intx=6;do{printf(“%d”,x--);}while(x--);3、以下程序段的输出结果是:【C】A)9B)1C)24D)15intk,j,x;for(k=2;k<7;k=k+2){staticints=1;for(j=k;j<6;j++)s+=j;x=s}printf(“%dn”,x);4、以下程序段的输出结果是:【A】A)3B)1C)不确定D)0main(){inti,sum=1;for(i=1;i<5;i+=2)sum+=i/sum;printf("%dn",sum);}5、以下程序段的输出结果是:【B】A)3981B)2971 C)2668D)2870main(){intx,i;for(i=1;i<=100;i++){x=i;if(x++%2==0)if(x++%3==0)if(x++%7==0)printf("%d",x);}printf("n");}1、以下程序段的输出结果是:【B】A)12B)5C)20D)30inti,j,m=0;for(i=0;i<=15;i+=3);for(j=4;j<=20;j+=4)m++;printf(“%dn”,m);2、以下程序段的输出结果是:【A】A)9741B)852C)963D)875421main(){inty=10;for(;y>0;y--){if(y%3==0)continue;printf("%d",--y);}}3、以下程序的输出结果是:【C】A)*#*#*#$B)#*##*$C)*#*#$D)#*#*$main(){inti;for(i=1;i<=4;i++){if(i/3)printf(“*”);elsecontinue; printf(“#”);}printf(“$n”);}1、以下程序的输出结果是:【C】A)0B)3C)2D)1main(){intn[2]={0},i,j,k=2;for(i=0;ib)c=1;elseif(a==b)c=0;elsec=-1;returnc;} main(){inti=2,p;p=f(i,i++);printf(“%d”,p);}1、以下程序的输出结果是:【D】A)5.500000B)3.000000C)4.000000D)2.500000floatf(intn){inti;floats;s=1.0;for(i=1;i<=n;i++)s/=i;returns;}main(){inti,m=3;floata=0.0;for(i=0;imain(){floata,b,c,disc,x1,x2;scanf(“%f%f%f”,&a,&b,&c);if(fabs(a)<1e-6)printf(“noquadratic”);/*非一元二次方程*/else{disc=b*b-4*a*c;if(fabs(disc)<1e-6)printf(“hastwoequalroots:%8.4fn”-b/(2*a));/*两个相同的实根*/elseif(disc>1e-6){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf(“x1=%8.4fx2=%8.4fn”,x1,x2);}elseprintf(“norealroots”);/*无实根*/}}3、以下程序是根据公式计算π的近似值,直到最后一项的绝对值小于10-4为止。程序中有多处错误,请改正(不改变原程序结构)。 #include“math.h”main(){ints=1;Floatn=1,t=1,pi=0;while(fabs(t)>=1e-4){pi+=t;N+=2;s=-s;t=s/n;}pi=pi*4;printf(“pi=%fn”,pi);}1、以下程序的功能是计算,程序中有多处错误,请改正(不改变原程序结构)。longfun(intn){inti;longs;s=1;for(i=1;i<=n;i++)s=s*i;returns;}main(){longs=0;intk,n;scanf(“%d”,&n);for(k=0;k<=n;k++)s=s+fun(k);printf(“%ldn”,s);}2、以下程序的功能是输出1-100之间的质数,程序中有多处错误,请改正(不改变原程序结构)。intisprime(n){inti,b;b=1;for(i=2;ia[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t}printf("n");for(i=0;i<10;i++)printf("%6d",a[i]);}2、以下程序的功能是将数组中的最小数与第一个数对换,最大数与最后一个数对换。程序中有多处错误,请改正(不改变原程序结构)。#defineN10;voiddataIn(int*a){inti;for(i=0;ia[i])pmin=&a[i];if(*pmax=1;j--)printf(“%d”,num[j]);}3、下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请填空。main(){inta[5],max,min,i,j=0,k=0;for(i=0;i<5;i++)scanf(“%d”,&a[i]);min=a[0];for(i=0;i<5;i++)if(a[i]max){max=a[i];k=1;} a[j]=max;a[k]=min:printf(“nThepositionofminis:%d”,k);printf(“nThepositionofmaxis:%d”,j);for(i=0;i<5;i++)printf(“%5d”,a[i]);}1、以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾,单向链表的头指针作为函数值返回。请在下划线处填入适当的内容使程序完整。#include“stdio.h”typedefstructlist{chardata;structlist*next;}NODE;NODE*creat(){NODE*h,*p,*q;charch;h=(NODE*)malloc(sizeof());q=h;ch=getchar();while(ch!=’?’){p=(NODE*)malloc(sizeof());p->data=ch;q->next=p;q=p;ch=getchar();}p->next=’’;returnh;}2、以下函数create用来建立一个单向链表,头结点由主函数产生,数据输入以-999作为结束;头结点的数据域存放数据的个数。请在下划线处填入适当的内容使程序完整。#include"stdio.h"typedefstructabc{inti;structabc*point;}NODE;voidcreate(NODE*p) {intx,i=0;NODE*p1,*p2;p1=p;scanf("%d",&x);while(x!=-999){p2=(NODE*)malloc(sizeof(NODE));p2->i=x;p1→point=p2;p1=p2;i++;scanf("%d",&x);}P→i=i;p1->point=0;}1、以下函数insert用来向一个排好序(由小到大)的单向链表插入一个新结点,使新链表的排序与原链表相同。头结点和插入的新数由主函数传来;头结点的数据域存放数据的个数。请在下划线处填入适当的内容使程序完整。#include"stdio.h"Typedefstructabc{inti;structabc*point;}NODE;voidinsert(NODE*p,intn){NODE*p1,*p2,*pt;p1=p->point;if(n<=p1->i){pt=(NODE*)malloc(sizeof(NODE));pt->i=n;p->point=pt;pt→point=p1;p->i++; }else{pt=p1;p1=p1->point;while(p1!=0){if(ni)break;pt=p1;p1=p1→point;}if(p1=0){p1=(NODE*)malloc(sizeof(NODE));p1->i=n;p1->point=0;pt->point=p1;p->i++;}else{p2=(NODE*)malloc(sizeof(NODE));p2->i=n;pt->point=p2;p2=→point=p1;p->i++;}}}1、以下函数sort用来对单向链表排序(由小到大),排序的方法是选择排序法,并且不移动数据,头结点主函数传来。请在下划线处填入适当的内容使程序完整。#include"stdio.h"typedefstructabc{inti;structabc*point;}NODE; voidsort(NODE*p){NODE*p1,*p10,*p2,*p20;NODE*pt,*pm0,*pm;intx,i=0;p10=p;p1=p10→point;while(p1->point!=0){x=p1->i;p20=p1;p2=p20→point;while(p2!=0){if(x>p2->i){x=p2->i;pm0=p20;pm=p2;}p20=p20->point;p2=p20->point;}if(x!=p1->i){if(p1→point=pm){p10->point=pm;pt=pm->point;pm→point=p1;p1->point=pt;}else{p10->point=pm;pt=pm->point;pm->point=p1->point;pm0->point=p1; p1→point=pt;}}p10=p10->point;p1=p10->point;}}1、以下程序的功能是计算,请在下划线处填入适当的内容使程序完整。floatfun(intn){floats=1.0;s=n*(n=1);returns;}main(){floats;intk,n;scanf(“%d”,&n);s=1.0;for(k=1;k<=n;k++)s=s+1.0fun(k);printf(“%fn”,s);}2、有以下程序段:s=1.0;for(k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf("%fn",s);请填空,使下面的程序段的功能完全与之等同,s=0.0;d=1.0;k=0;do{s=s+d;k++;d=1.0/(k*(k+1));}while(k<=n);printf("%fn",s);3、 以下程序的功能是从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空使程序完整。main(){floatx,amax,amin;scanf("%f",&x);amax=x;amin=x;while(x>=0.0){if(x>amax)amax=x;if(xeps;n++){s+=t;t=n*t/(2*n+1);}return2.0*s;}2、以下程序的功能是计算。请填空。longf(intn){inti;longs;S=1;for(i=1;i<=n;i++)s=s*1;returns;}main(){longs;intk,n;scanf(“%d”,&n);s=0;for(k=0;k<=n;k++)s=s+f(k); printf(“%ldn”,s);}1、以下程序是统计一组数据中正数的和、正数的个数;零的个数;负数的和,负数的个数。数据以-999为结束。请填空使程序完整。intsign(intn){intb;if(a>0)b=1;elseif(a==0)b=0;elseb=-1;returnb;}main(){intsum[3]={0},x;/*sum[0]为负数的和,sum[2]为正数的和*/inti[3]={0},b;/*i[0]为负数的个数,i[1]为零的个数,i[1]为正数的个数*/scanf("%d",&x);while(x!=-999){b=sign(x);sum[b+1]+=x;i[b+1]++;;}printf("n%d%d%d",sum[0],sum[1],sum[2]);printf("n%d%d%d",i[0],i[1],i[2]);}二、编程(在以下三题中任选两题。每题10分,共20分)1、编写程序,求1-3+5-7+….-99+101的值。2、编写程序,求e的值。要求直至最后一项的值小于10-4。3、编写程序,输出从公元1000年至2000年所有闰年的年号,每输出3个年号换一行。4、编写程序,打印以下图形:********* ****************'