c语言第五章 选择结构程序设计习题册答案上课讲义.docx

上传人:b****2 文档编号:12659096 上传时间:2023-04-21 格式:DOCX 页数:15 大小:20.20KB
下载 相关 举报
c语言第五章 选择结构程序设计习题册答案上课讲义.docx_第1页
第1页 / 共15页
c语言第五章 选择结构程序设计习题册答案上课讲义.docx_第2页
第2页 / 共15页
c语言第五章 选择结构程序设计习题册答案上课讲义.docx_第3页
第3页 / 共15页
c语言第五章 选择结构程序设计习题册答案上课讲义.docx_第4页
第4页 / 共15页
c语言第五章 选择结构程序设计习题册答案上课讲义.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

c语言第五章 选择结构程序设计习题册答案上课讲义.docx

《c语言第五章 选择结构程序设计习题册答案上课讲义.docx》由会员分享,可在线阅读,更多相关《c语言第五章 选择结构程序设计习题册答案上课讲义.docx(15页珍藏版)》请在冰豆网上搜索。

c语言第五章 选择结构程序设计习题册答案上课讲义.docx

c语言第五章选择结构程序设计习题册答案上课讲义

 

c语言第五章选择结构程序设计(习题册答案)

第五章选择结构程序设计

基础练习(A)

一、填空题

1、关系表达式的运算结果是逻辑值。

C语言没有逻辑型数据,以1代表“真”,以0代表“假”。

2、逻辑运算符!

是单目运算符,其结合性是由右结合性。

3、C语言提供的三种逻辑运算符是&&、||、!

其中优先级最高的为!

优先级最低的为||。

4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。

系统最终以0和非0来判定它们属于“真”或“假”。

5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0) 。

6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式 x

7、条件“22&&x<3。

8、判断char型变量ch是否为大写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。

9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。

10、当a=5,b=4,c=2时,表达式a>b!

=c的值是1。

11、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A

C>B的值是0。

12、若a=6,b=4,c=2,则表达式!

(a-b)+c-1&&b+c/2的值是1。

13、有intx,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。

14、有intx,y,z;且x=3,y=-4,z=5,则以下表达式的值为1。

!

(x>y)+(y!

=z)||(x+y)&&(y-z)

15、有inta=3,b=4,c=5,x,y;,则以下表达式的值为0。

!

(x=a)&&(y=b)&&0

16、if(!

k)a=3;语句中的!

k可以改写为k==0,使其功能不变。

二、选择题

1、逻辑运算符两侧运算对象的数据类型( D )。

A)只能是0或1

B)只能是0或非0正数

C)只能是整型或字符型数据

D)可以是任何类型的数据

2、以下关于运算符优先顺序的描述中正确的是( C )。

A)关系运算符<算术运算符<赋值运算符<逻辑与运算符

B)逻辑与运算符<关系运算符<算术运算符<赋值运算符

C)赋值运算符<逻辑与运算符<关系运算符<算术运算符

D)算术运算符<关系运算符<赋值运算符<逻辑与运算符

3、下列运算符中优先级最高的是( B )。

A)

=

4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式( D)。

A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122

B)!

(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)

C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122

D)!

(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)

5、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表达式是( C )。

A)(x>=1)&&(x<=100)&&(x>=200)&&(x<=300)

B)(x>=1)||(x<=100)||(x>=200)||(x<=300)

C)(x>=1)&&(x<=100)||(x>=200)&&(x<=300)

D)(x>=1)||(x<=100)&&(x>=200)||(x<=300)

6、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(D)。

A)‘x’&&‘y’

B)x<=y

C)x||y+z&&y-z

D)!

((x

z||1)

7、已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!

y)的值是(C)。

A)0B)语法错C)1D)“假”

8、设有:

inta=1,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n=c>d)后n的值为(B)。

A)1B)2C)3D)4

9、以下不正确的if语句形式是( C )。

A)if(x>y&&x!

=y);

B)if(x==y)x+=y;

C)if(x!

=y)scanf(“%d”,&x)elsescanf(“%d”,&y);

D)if(x

10、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是(B)。

if(x>y)

z=x;x=y;y=z;

A)x=10,y=20,z=30B)x=20,y=30,z=30

C)x=20,y=30,z=10D)x=20,y=30,z=20

11、以下if语句语法正确的是( B ) 。

A)if(x>0)

printf(“%f”,x)

elseprintf(“%f”,-x);

B)B)    if(x>0)

{x=x+y;printf(“%f”,x);}

elseprintf(“%f”,-x);

C)C)    if(x>0)

{x=x+y;printf(“%f”,x);};

elseprintf(“%f”,-x);

D)D)    if(x>0)

{x=x+y;printf(“%f”,x)}

elseprintf(“%f”,-x);

12、请阅读以下程序:

main()

{

inta=5,b=5,c=0;

if(a==b+c)printf(“***\n”);

elseprintf(“$$$\n”);

}

以下程序( C )。

A)有语法错不能通过编译B)可以通过编译但不能通过连接

C)输出***D)输出$$$

三、写出下列程序的运行结果

1、若运行时输入:

2<回车>,则以下程序的运行结果是2ndclasspostageis14p  。

#include

voidmain(void)

{

charClass;

printf(“Enter1for1stclasspostor2for2ndpost”);

scanf(“%c”,&Class);

if(Class==‘1’)

printf(“1stclasspostageis19p”);

else

printf(“2ndclasspostageis14p”);

}

2、若运行时输入:

4.4<回车>,则以下程序的运行结果是 SellingPrice(0.30)$5.72 。

#include

voidmain(void)

{

floatCostPrice,SellingPrice;

printf(“EnterCostPrice$:

”);

scanf(“%f”,&CostPrice);

if(CostPrice>=5)

{

SellingPrice=CostPrice+CostPrice*0.25;

printf(“SellingPrice(0.25)$%6.2f”,SellingPrice);

}

else

{

SellingPrice=CostPrice+CostPrice*0.30;

printf(“SellingPrice(0.30)$%6.2f”,SellingPrice);

}

}

3、以下程序的运行结果是 F 。

main()

{

if(2*2==5<2*2==4)

print(“T”);

else

printf(“F”);

}

能力提高(B)

一、选择题

1、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( D )。

A)A%2==1B)!

(A%2==0)C)!

(A%2)D)A%2

2、下列运算符中优先级最低的(A),优先级最高的是(C)。

A)?

:

B)&&C)+D)!

=

3、请阅读以下程序:

main()

{

inta=5,b=0,c=0;

if(a=b+c)printf(“***\n”);

elseprintf(“$$$\n”);

}

以下程序( D )。

A)有语法错不能通过编译B)可以通过编译但不能通过连接

C)输出***D)输出$$$

4、以下程序的运行结果是( C )。

main()

{

intm=5;

if(m++>5)printf(“%d\n”,m);

elseprintf(“%d\n”,m--);

}

A)4B)5C)6D)7

二、根据程序的功能,将以下程序补充完整

1、以下程序对输入的四个整数,按从小到大的顺序输出。

请在    内填入正确内容。

main()

{

intt,a,b,c,d;

printf(“inputa,b,c,d:

”)

scanf(“%d,%d,%d,%d”,&a,&b,&c,&d );

if(a>b){ t=a;a=b;b=t; }

if( a>c ){t=a;a=c;c=t;}

if(a>d){t=a;a=d;d=t;}

if(b>c ){t=b;b=c;c=t;}

if(b>d){t=b;b=d;d=t;}

if(c>d){t=c;c=d;d=t;}

printf(“%d,%d,%d,%d”,a,b,c,d);

}

三、编程:

1、试编程判断输入的正整数是否既是5又是7的整倍数。

若是,则输出yes;否则输出no。

 

2、编制程序要求输入整数x、y和z,若x2+y2+z2大于1000,则输出x2+y2+z2千位以上的数字,否则输出三数之和。

 

3、编写程序,输入三角型的三条边长,求其面积。

注意:

对于不合理的边长输入要输出数据错误的提示信息。

1、参考答案

main()

{intx;

if(x%5==0&&x%7==0)

printf(“yes”);

else

printf(“no”);

}

2、参考答案

main()

{intx,y,z,a,b;

scanf(“%d%d%d”,&x,&y,&z);

a=x*x+y*y*z*z;

if(a>1000)

{b=a/1000;printf(“%d”,b);}

elseprintf(“%d”,x+y+z);

}

3、参考答案

#include

main()

{floata,b,c,s,area;

scanf(“%f,%f,%f”,&a,&b,&c);

if(a+b>c&&b+c>a&&a+c>b)

{s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“area=%7.2f\n”,area);}

else

printf(“bunengzhuchengsanjiaoxing\n”);

}

第2讲

基础练习(A)

一、填空题

1、在if语句中又包含一个或多个if语句称为if语句的嵌套。

2、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:

else子句总是与其之前最近的未配对的if配对。

如果if与else数目不一样,为实现设计者的企图,可以加花括号关系。

3、条件运算符是C语言中唯一的一个三目运算符,其结合性为从右至左。

4、假设条件表达式的格式为:

表达式1?

表达式2:

表达式

若表达式2和表达式3的类型不同,此时条件表达式的值的类型为二者中较高的类型

5、在switch语句中,switch后面括弧内的“表达式”,可以为任何类型。

6、若a=1,b=2,则表达式a>b?

a:

b+1的值是3。

7、若w=1、x=2、y=3、z=4,则条件表达式w

w:

y

y:

z的值是1。

8、若有以下if语句:

if(a

elsemin=b;

可用条件运算符来处理的等价式子为min=(a

a:

b;。

9、若x=1,y=2,z=3,则表达式(x

x:

y)==z++的值是0。

10、设有变量定义:

inta=5,c=4;则(--a==++c)?

--a:

c++的值是5,此时c的存储单元的值为6。

二、判断题

1、在switch语句中,每一个的case常量表达式的值可以相同。

(错)

2、在switch语句中,各个case和default的出现次序影响执行结果。

(对)

3、在switch语句中,多个case可以共用一组执行语句。

(对)

4、条件表达式能取代一般if的语句。

(错)

5、case后的常量表达式类型一定与表达式类型匹配。

(对)

三、写出以下程序的运行结果

1、main()-1

{

inta=2,b=3,c;

c=a;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-1;

printf(“%d\n”,c);

}

2、main()200

{

inta,b,c;

ints,w,t;

s=w=t=0;

a=-1;b=3;c=3;

if(c>0)s=a+b;

if(a<=0)

{

if(b>0)

if(c<=0)w=a-b;

}

elseif(c>0)w=a-b;

elset=c;

printf(“%d%d%d”,s,w,t);

}

3、switch(grade)

{

case‘A’:

printf(“85-100\n”);

case‘B’:

printf(“70-84\n”);

case‘C’:

printf(“60-69\n”);

case‘D’:

printf(“<60\n”);

default:

printf(“error!

\n”);

}

若grade的值为’C’,则输出结果是60-69

〈60

error!

 

能力提高(B)

一、写出下列程序的运行结果

1、#include5

5

1

voidmain(void)

{

intx,y=1,z;

if(y!

=0)x=5;

printf(“\t%d\n”,x);

if(y==0)x=4;

elsex=5;

printf(“\t%d\n”,x);

x=1;

if(y<0)

if(y>0)x=4;

elsex=5;

printf(“\t%d\n”,x);

}

2、#include4-2

40

4-2

voidmain(void)

{

intx,y=-2,z;

if((z=y)<0)x=4;

elseif(y==0)x=5;

elsex=6;

printf(”\t%d\t%d\n”,x,z);

if(z=(y==0))

x=5;

x=4;

printf(“\t%d\t%d\n”,x,z);

if(x=z=y)x=4;

printf(“\t%d\t%d\n”,x,z);

}

3、#includea=2,b=1

main()

{

intx=1,y=0,a=0,b=0;

switch(x)

{

case1:

switch(y)

{

case0:

a++;break;

case1:

b++;break;

}

case2:

a++;b++;break;

}

printf(“a=%d,b=%d”,a,b);

}

二、根据程序的功能,将以下程序补充完整

以下程序计算某年某月有几天。

其中判别闰年的条件是:

能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。

请在    内填入正确内容。

main()

{

intyy,mm,len;

printf(“year,month=”);

scanf(“%d%d”,&yy,&mm);

switch(mm)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

 len=31   ;break;

case4:

case6:

case9:

case11:

len=30;break;

case2:

if(yy%4==0&&yy%100!

=0||yy%400==0)  len=29;

else  len=28  ;

break;

default:

printf(“inputerror”);break;

}

printf(“thelengthof%d%dis%d\n”,yy,mm,len);

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1