您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言程序设计基础第4,5章课后习题答案
第4章选择结构程序设计一、选择题1.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是(B)。A.isupper(c)B.'A'=c='Z'C.'A'=c&&c='Z'D.c=('z'-32)&&('a'-32)=c2.设有定义:intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(A)。A.k++B.k+=1C.++kD.k+13.当变量c的值不为2、4、6时,值也为“真”的表达式是()。A.(c==2)||(c==4)||(c==6)B.(c=2&&c=6)||(c!=3)||(c!=5)C.(c=2&&c=6)&&!(c%2)D.(c=2&&c=6)&&(c%2!=1)4.以下选项中,当x为大于1的奇数时,值为0的表达式(D)。A.x%2==1B.x/2C.x%2!=0D.x%2==05.若变量已正确定义,在if(W)printf(%d\n,k);中,以下不可替代W的是(A)。A.ab+cB.ch=getchar()C.a==b+cD.a++6.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是(C)。A.if(x++);B.if(xy&&y!=0);C.if(xy)x--D.if(y0){;}elsey++;elsex++;7.在嵌套使用if语句时,C语言规定else总是(A)。A.和之前与其具有相同缩进位置的if配对B.和之前与其最近的if配对C.和之前与其最近的且不带else的if配对D.和之前的第一个if配对8.有以下程序段inta,b,c;a=10;b=50;c=30;if(ab)a=b,b=c;c=a;printf(a=%db=%dc=%d\n,a,b,c);程序的输出结果是(A)。A.a=10b=50c=10B.a=10b=50c=30C.a=10b=30c=10D.a=50b=30c=509.有下列程序:main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(%d,%d,%d,%d\n,a,b,c,d);}程序输出(D)。A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错10.若有说明语句:intw=1,x=2,y=3,z=4;则表达试wx?w:zy?z:x的值是(A)。A.4B.3C.2D.111.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是(C)。A.switch(x)B.switch((int)x);{case1.0:printf(*\n);{case1:printf(*\n);case2.0:printf(**\n);}case2:printf(**\n);}C.switch(a+b)D.switch(a+b){case1:printf(*\n);{case1:printf(*\n);case2+1:printf(**\n);}casec:printf(**\n);}12.以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是(B)。A.switch(a)B.switch(a==1){case:a=b;break;{case0:a=b;break;default:a++;}case1:a++;}C.switch(a)D.switch(a==1){default:a++;break;{case1:a=b;break;case1:a=b;}case0:a++;}13.有以下程序#includestdio.hvoidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(a=%d,b=%d\n,a,b);}程序的运行结果是(D)。A.a=1,b=0B.a=2,b=2C.z=1,b=1D.a=2,b=1二、填空题1.下列程序运行后的输出结果是1。main(){intx,a=1,b=2,c=3,d=4;x=(ab)?a:b;x=(xc)?x:c;x=(dx)?x:d;printf(%d\n,x);}2.以下程序的运行结果是#&。voidmain(){inta=2,b=7,c=5;switch(a0){case1:switch(b0){case1:printf(@);break;case2:printf(!);break;}case0:switch(c==5){case0:printf(*);break;case1:printf(#);break;case2:printf($);break;}default:printf(&);}printf(\n);}三、编程题1.编程判断一个整数是奇数还是偶数。#includestdio.hvoidmain(){intnumber;printf(Inputaninteger:);scanf(%d,&number);if(number%2==0)printf(%disanevennumber\n,number);elseprintf(%disanoddnumber\n,number);}2.编程判断两个数据之间的逻辑关系,即判断两数据是大于、小于还是等于关系。#includestdio.hvoidmain(){intfirst,second;printf(Inputtwointegers:);scanf(%d%d,&first,&second);if(first==second)printf(%disequalto%d\n,first,second);elseif(firstsecond)printf(%disgreaterthan%d\n,first,second);elseprintf(%dislessthan%d\n,first,second);}3.输入年份,判断它是否是闰年(如果年号能被400整除,或能被4整除,而不能被100整除,则是闰年,否则不是)。voidmain(){intyear;scanf(%d,&year);if(year%400==0||(year%4==0&&year%100==0))printf(%d是闰年\n,year);elseprintf(%d不是闰年\n,year);}4.设计一个简单的计算器程序,能输入整型运算数和基本运算符(+,-,*,/),输出计算结果。例如:输入2+6,输出2+6=8。#includestdio.hmain(){floata,b,result;charop;scanf(%f%c%f,&a,&op,&b);switch(op){case'+':result=a+b;printf(=%f,result);break;case'-':result=a-b;printf(=%f,result);break;case'*':result=a*b;printf(%f,result);break;case'/':if(b==0.0)printf(error!\n);result=a/b;printf(=%f,result);default:printf(errorduetotheillegalinput!\n);}}5.输入某年某月某日,判断这一天是这一年的第多少天?#includestdio.hvoidmain(){intyear,month,day,sum=0;printf(Inputyear-month-day:\n);scanf(%d-%d-%d,&year,&month,&day);switch(month){case12:sum+=30;case11:sum+=31;case10:sum+=30;case9:sum+=31;case8:sum+=31;case7:sum+=30;case6:sum+=31;case5:sum+=30;case4:sum+=31;case3:sum+=28;case2:sum+=31;case1:sum+=day;}if(((year%400==0)||((year%4==0)&&(year%100!=0)))&&month2)sum+=1;printf(Totaldaysare%d\n,sum);}第5章循环结构程序设计一、选择题1.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,下列正确的程序段是(A)。A.while((ch=getchar())!='N')printf(%c,ch);B.while(ch=getchar()!='N')printf(%c,ch);C.while(ch=getchar()=='N')printf(%c,ch);D.while((ch=getchar())=='N')printf(%c,ch);2.若变量已正确定义,有以下程序段i=0;doprintf(%d,,i);while(i++);printf(%d\n,i);其输出结果是(B)。A.0,0B.0,1C.1,1D.程序进入无限循环3.当执行以下程序段时(A)。x=-1;do{x=x*x;}while(!x);A.循环体执行一次B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误4.有以下程序#includestdio.hmain(){inty=9;for(;y0;y--)if(y%3==0)printf(%d,--y);}程序的运行结果是(C)。A.741B.963C.852D.8754215.执行语句:for(i=1;i++4;);后,变量i的值是(C)A3B4C5D不定6.以下不构成无限循环的语句或语句组是(A)。A.n=0;B.n=0;do{++n;}while(n=0);while(1){n++;}C.n=10;D.for(n=0,i=1;;i++)n+=i;while(n);{n--;}7.以下程序段中的变量已正确定义for(i=0;i4;i++,i++)for(k=1;k3;k++);printf(*);程序段的输出结果是(D)。A.********B.****C.**D.*8.有以下程序#includestdio.hmain(){inti,j,m=55;for(i=1;i=3;i++)for(j=3;j=i;j++)m=m%j;printf(%d\n,m);}程序的运行结果是(B)。A.0B.1C.2D.39.有以下程序main(){inti,j;for(i=1;i4;i++){for(j=i;j4;j++)printf(%d*%d=%d,i,j,i*j);printf(\n);}}程序运行后的输出结果是(B)。A.1*1=11*2=21*3=3B.1*1=11*2=21*3=32*1=22*2=42*2=42*3=63*1=33*3=9C.1*1=1D.1*1=11*2=22*2=42*1=22*2=41*3=32*3=63*3=93*1=33*2=63*3=910.以下程序中,while循环的循环次数是(D)main(){inti=0;while(i10){if(i1)continue;if(i==5)break;i++;}}A1B10C6D死循环,不能确定次数11.有以下程序#includestdio.hvoidmain(){intx=8;for(;x0;x--){if(x%3){printf(%d,,x--);continue;}printf(%d,,--x);}}程序的运行结果是(D)。A.7,4,2B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,二、填空题1.当执行以下程序时,输入1234567890回车,则其中while循环体将执行0次。#
本文标题:C语言程序设计基础第4,5章课后习题答案
链接地址:https://www.777doc.com/doc-2908988 .html