逻辑运算和判断

更新时间:2023-11-11 22:44:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第四章 逻辑运算和判断选取控制

4.1 选择题

(题4.1)逻辑运算符两侧运算对象的数据类型———. A)只能是0或1

B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据

(题4.2)以下关于运算符优先顺序的描述中正确的是———.

A)关系运算符<算术运算符<赋值运算符<逻辑运算符 B)逻辑运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑运算符 (题4.3)下列运算符中优先级最高的是———.

A) < B) + C)&& D)! = (题4.4)能正确表示”当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式——。

A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B) (x>=1)||(x<=10)||(x.>=200)||(x<=210) C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)

(题4.5)表示图中坐标轴上阴影部分的正确表达式是———. / / / / / | / / / / / / | / / / / / | / / / / / / |

———————————————————————→X

A)(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)

(题4.6)判断char型变量ch是否为大写字母的正确表达式是————.

A)?A?<=ch<=?Z? B)(ch>=?A?)&(ch<=?Z?) B)(ch>=?A?)&&(ch<=?Z?) D)(?A?<=ch)AND(?Z?>=ch)

(题4.7)设x、yz是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是———.

A)?x?&&?y? B)x<=y

C)x||y+z&&y-z D)!((x

(题4.8)已知x=43,ch=?A?,y=0;则表达式(x>=y&&ch

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

(题4.9)若希望当A的值为奇数时,表达式的值为”真”,A的值为偶数时,表达式的值为”假”.则

以下不能满足要求的表达式是———.

A) A%2=-1 B)!(A%= =2) C)!(A%2) D)A%2

(题4.10)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为——.

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

(题4.11)判断char型变量c1是否为小写字母的正确表达式为————. A)?a?<=c1<=?z? B)(c1>=a)&&(c1<=z)

1

C)(?a?>=c1)||(?z<=c1?) D)(c1>=?a?)&&(c1<=?z?)

(题4.12)以下程序的运行结果是———.

#include “stdio.h” main()

{ int a,b,d=241; a=d/100%9; b=(-1)&&(-1);

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

A)6,1 B)2,1 C)6,0 D)2,0

(题4.13)执行以下语句后的a值为【1】,b的值为【2】

int a,b,c; a=b=c=1;

+ + a | | + + b & & + + c ;

【1】A)错误 B)0 C)2 D)1. 【2】A)1 B)2 C)错误 D)0

(题4.14)执行以下语句后a的值为【1】,b的值为【2】.

int a=5,b=6,w=1,x=2,y=3,z=4; (a=w>x)&&(b=y>z);

【1】A)5 B)0 C)2 D)1 【2】A)6 B)0 C)1 D)4

(题4.15) 以下不正确的if语句形式是———.

A) if(x>y&&x!=y); B) if(x= =y) x+=y;

C) if(x!=y)scanf(“%d”,&x) else scanf(“%d”,&y); D) if(x

(题4.16)下列运算符中优先级最低的是【1】,优先级最高的是【2】. A)? : B)&& C)+ D)! =

(题4.17)已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是———.

If(x>y) z=x;x=y;y=z

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

(题4.18)以下if语句语法正确的是———.

A) if(x>0) print(“%f”,x)

else printf(“%f”,-x);

B) if(x>0)

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

C) if(x>0)

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

2

D) if(x>0)

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

(题4.19)请阅读以下程序: main()

{int a=5,b=0,c=0;

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

以上程序———.

A)有语法错不能通过编译 B)可以通过编译但不能通过连接C)输出* * * D)输出$ $ $

(题4.20)以下程序的运行结果是————.

main() {int m=5;

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

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

(题4.21)当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是————.

If(a

if(b

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

(题4.22)有一函数关系见下表::

x y= x<0 x-1 x=0 x x>0 x+1

下面程序段中能正确表示上面关系的是————. A)y=x+1; B)y=x-1;

if(x>=0) if(x! =0)

if(x= =0) y=x; if(x>0) y=x+1; else y=x-1; else y=x; C)if(x<=0) D)y=x;

3

if(x<0) y=x-1; if(x<=0)

else y=x; if(ifx<0) y=x-1; else y=x+1; else y=x+1;

(题4.23)以下程序的输出结果是————.

main()

{int a=100,x=10,y=20,okl=5,ok2=0; if(x

if(! Ok !) a=1; else

if(ok2) a=10; a=-1;

printf(“%d\\n”,a); }

A)1 B)0 C)-1 D)值不确定

(题4.24)以下程序的输出结果是———.

main()

{ int x=2,y=-1,z=2; if(x

if(y=0) z=0; else z+=1; printf(“%d\\n”,.z); }

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

(题4.25) 为了避免在嵌套的条件语句if-else中产生二义性,C语言规定,else子句总是与——

配对.

A)缩排位置相同的if B)其之前最近的if C)其之后最近的if D)同一行上的if

(题4.26)以下不正确的语句为———.

A)if(x

B)if(x=y)&&(x!=0) x+=y;

C)if(x!=y)scanf(“%d”,&x);else scanf(“%d”,&y); D)if(x

(题4.27)请阅读以下程序: #include main() {float a,b;

scnaf(“%f”,&a); if(a<0.0) b=0.0;

else if((a<0.5)&&(a! =2.0)) b=1.0/(a+2.0); else if(a<10.0) b=1.0/x; else b=10.0; printf(“%f\\n”,y); }

4

若运行时输入2.0<回车>,则上面程序的输出结果是———. A)0.000000 B)0.500000 C)1.000000 D)0.250000

(题4.28)若有条件表达式 (exp) ? a++:b - -,则以下表达式中能完全等价二表达式(exp)的是—

——.

A) (exp= =0) B) (exp! =0) C) (exp= =1) D) (exp! =1)

(题4.29)若运行时给变量x输入12,则以下程序的运行结果是———.

main() { int x,y;

scanf(“%d”,&x); y=x>12 ? x+10 :x-12; printf(“%d\\n”,y); }

A) 0 B) 22 C) 12 D) 10 (题4.30)以下程序的运行结果是———.

main()

{ int k=4,a=3,b=2,c=1;

printf(“\\n%d\\n”,k

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

(题4.31)执行以下程序段后,变量a,b,.c的值分别是————.

int x=10,y=9; int a,b,c;]

a=(––x= =y + +)? ––x;+ +y; b=x+ +; c=y;

A) a=9,b=9,c=9 B) a=8,b=8,c=10 C) a=9,b=10,c=9 D) a=1,b=11,c=10

(题4.32)若w、x、y、z、m均为int型变量,则执行下面语句的m值是————.

w=1; x=2; y=3; z=4; m=(w

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

(题4.33)若w=1,x=2,y=3,z=4,则条件表达式w

int w=3,z=7,x=10;

printf(“%d\\n”,x>10? x+1000: x-10); printf(“%d\\n”,w++||z++); printf(“%d\\n”,! w>z); printf(“%d\\n”,w&&z);

A) 0 B) 1 C) 0 D) 0 1 1 1 1

5

1 1 0 0 1 1 1 0

4.2 填 空 题

(题4.35)当a=3,b=2,c=1时,表达式f=a>b>c 的值是【 】. (题4.36)当ia=5,b=4,c=2时,表达式a>b! =c 的值是【 】. (题4.37)以下程序的运行结果是————.

#include void main(void) { int x=1, y , z ; x*=3+2;

printf(“%d\\t”,x); x* =y=z=5; printf(“%d\\t”,x); x=y= =z;

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

(题4.38)在C语言中,表示逻辑”真”值用【 】.

(题4.39)设y为int型变量,请写出描述”y是奇数”的表达式【 】 .

(题4.40)C语言提供的三种逻辑运算符是【1】,【2】,【3】.

(题4.41)设x,y,z均为int型变量,请写出描述”x或y中有一个小于z”的表达式【 】.

(题4.42)设x,y,z均为int型变量,请写出描述”x,y和z中有两个为负数”的表达式【 】.

(题4.43)已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||AB的值是【 】.

(题4.44)若a=6,b=4,c=2,则表达式 ! (a-b)+c-1&& b+c\\2的值是【 】.

(题4.45)若a=2,b=4,则表达式 ! (x=-a)||(y=b)&&0的值是【 】.

(题4.46)若a=1,b=4,c=3,则表达式 ! (a

(题4.47)若a=6,b=4,c=3,则表达式a&&b+c| | b - c的值是【 】.

(题4.48)若a=5,b=2,c=1,则表达式a-b

(题4.49)设a=3,b=4,c=5,,则表达式a | | b+c&&b= =c的值是【 】.

(题4.50)条件”2

(题4.51)当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a ! =b)&&(n=b>c)后,n的值为【1】, m的值为【2】.

6

(题4.52)以下程序的运行结果是———。 main()

{ int x,y,z; x=1;y=2;z=3;

x=y- - < = x | | x+y != z; printf(“%d,%d”,x,y); }

(题4.53) 以下程序的运行结果是———。

main()

{ int a1,a2,b1,b2; int I=5,j=7,d=0; 1= ! k ; a2= i ! =j ;

printf(“a1=%d\\ta2=%d\\n”,a1,a2); b1=k&&j; b2=k | | j;

printf(“b1=%d\\tb2=%d\\n”,b1,b2); }

(题4.54) 以下程序的运行结果是———。 main() { int x,y,z; x=1;y=1;z=0; x=x | | y&&z;

printf(“%d,%d”,x,x&&! y | | z); }

(题4.55)有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)= =(x | | z)的值为【 】.

(题4.56)有int x,y,x;且x=3,y=-4,z=5,则以下表达式的值为【 】. ! (x>y)+(y ! =z) | | (x+y)&&(y-z)

(题4.57)有int x,y,z;且x=3,y=-4,z=5,则以下表达式x++ - y+(++z)的值为【 】(题4.58) 有int a=3,b=4,c=5;则表达式a | | b+c&&b= =c的值为【 】 (题4.59) 有int a=3,b=4,c=5,x,y;则以下表达式的值为【 】 ! (x=a)&&(y=b)&&o

(题4.60) 有int a=3,b=4;c=5;则以下表达式的值为【 】 ! (a+b)+c –1&&b+c\\2

(题4.61)若运行时输入:16<回车>,则以下程序的运行结果是———. #include void main(void) {

int year;

printf(“input you year:”);

scanf(“%d”,&year);

7

if(year>=18)

printf(“you $ 4.5 yuan/xiaoshi”); else

printf(“your $ 3.0 yuan/xiaoshi”); }

(题4.62) 若运行时输入:2<回车>,则以下程序的运行结果是———

#include void main(void) {

char Class;

printf(“Enter 1 for lst class post or 2 for 2nd post”); scanf(“%c”,&Class); if(Class= =?1?)

printf(“lst class postage is 19p”); else

printf(“2nd class postage is 14p”); }

(题4.63)若运行时输入4.4<回车>,则以下程序的运行结果是———. #include void main(void)

{

float CostPrice,SellingPrice; printf(“Enter Cost Price $:”); scanf(“%f”,&CostPrice); if(CostPrice>=5) {

SellingPrice=CostPrice+CostPrice*0.25;

Printf(“Selling Price(0.25) $ %6.2f”,SellingPrice); } else {

SellingPrice=CostPrice + CostPrice*0.30;

Printf(“Selling Price (0.30) $ %6.2f”,SellingPrice);} } (题4.64) 以下程序的运行结果是———. main()

{ if(2*2= =5 <2*2 = = 4) printf(“T”); else

printf(“F”); }

8

(题4.65)请阅读以下程序:

main() { int t,h,m;

scanf(“%d”, &t); h=(t/100); if(h= =0) h=12; printf(“%d:”,h); m=t0;

if(m<10) printf(“0”); printf(“%d”,m);

if(t<1200 || t= =2400) printf(“AM”); else printf(“PM”); }

若运行时输入:1605 <回车> 时,程序的运行结果是———。

(题4.66)以下程序实现:输入圆的半径r各运算标志m,按照运算标志进行指定计算。 请在【 】内填入正确内容。

标 志 运 算 a 面 积 c 周 长 b 二者均计算

#define pi 3.14159 main() { char ; float r,c,a;

printf(“input mark a c or b&& r\\n”); scanf(“%c%f”,&m,&r); if (【1】)

{ a=pi*r*r ; printf(“area is %f”,a);} if(【2】)

{ c=2*pi*r;printf(“circle is %f”,c);} if(【3】)

{ a=pi*r*r;c=2*pi*r;printf(“area&& circle are %f %f”,a,c);} }

(题4.67)若运行时输入:5999<回车>,则以下程序的运行结果(保留小数点后一位是)——.

main() { int x; float y;

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); }

9

(题4.68)以下程序实现输出x,y,z三个数中的最大者,请在【 】内填入正确内容.

main()

{ int x=4,y=6,z=7; int 【1】; if(【2】) u=x; else u=y;

if(【3】) v=u; else v=z;

printf(“v=%d”,v); }

(题4.69)以下程序实现;输入三个整数,按从大到小的顺序进行输出. 请在【 】内填入正

确内容. main() { int x,y,z,c;

scanf(“%d%d %d”,&x,&y,&z); if(【1】)

{ c=y;y=z;z=c} if(【2】)

{ c=x;x=z;z=c;} if(【3】)

{ c=x;x=y;y=c}

printf(“%d,%d,%d”,x, y ,z); }

(题4.70)以下程序对输入的两个整数,按从大到小顺序输出., 请在【 】内填入正确内容.

main() {

int x,y,z;

scanf(“%d,%d”,&x,&y); if(【1】)

{ z=x ; 【2】} printf(“%d,%d”,x,y); }

(题4.71)以下程序对输入的一个小写字母,将字母循环后移5个位置后输出.如?a?变

成?f?,?w?变成?b.? 请在【 】内填入正确内容. #include “stdio.h” main() { char c; c=getchar();

if(c>=?a?&&c<=?u?) 【1】; else if(c>=?v?&&c<=?z?) 【2】; putchar(c); }

(题4.72)输入一个字符,如果它是一个大写字母,则把它变成小写字母,如果它是一个小写

字母,则把它变成大写字母,其它字符不变. 请在【 】内填入正确内容.

10

scanf(“%d”,&y); if(y@0= =0) f=1; else if(【1】) f=1; else 【2】;

if(f) printf(“%d is”,y); else printf(“%d is not”,y); printf(“a leap year \\n”); }

(题4.86)以下程序针对输入的截止日期(年:yend,月:mend,日:dend)和出生日期

(yman,mman,dman),计算出实际年龄.请在【 】内填入正确内容.

设有:int yend,mend ,dend ,yman, mman,dman,age; age=yend –yman;

if(mend【1】 mman) age - - ;

else if(mend 【2】mman &&dend【3】dman) age - - ;

(题4.87)有四个数a,b,c,d,要求按从大到小的顺序输出.请在【 】内填入正确内容.

main()

{ int a,b,c,d,t;

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

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

(题4.88)以下程序的运行结果是———.

main()

{ int a=2,b=3,c; c=1;

if(a>b) c=1;

else if(a= =b) c=0; else c= - 1; printf(“%d\\n”,c); }

(题4.89)若a=1,b=2,则表达式 a > b ? a : b + 1的值是【 】.

(题4.90)若a=1,b=2,c=3,d=4,则表达式a >b ? a : c > d ? c : d的值是【 】.

(题4.91)设有变量定义:int a=10,c=9;则表达式( - - a! =c++)?- - a:++c的值是

【 】。

(题4.92)若有说明语句:int x=1,y=0;则表达式x>(y+x)? 10:12.5>y++??a?:?A?的值【 】. (题4.93)若有说明语句:int a=1,b=0;则表达式+=a* - -a= =b? 12%5:?x?的值是【 】. (题4.94)若有x=1,y=2,z=3,则表达式(x

(题4.95)若有说明语句:int x=1,y=0;则表达式x- - >(y+x)?5:25>y++??a?;?2?的值是【 】..

16

(题4.96)以下程序的运行结果是———. # include main() {

int a= -10,b= -3; printf(“%d,”,- a%d); printf(“%d,”,(a – b,a+b));

printf(“%d\\n”,a – b? a – b; a+b); }

(题4.97)以下程序的运行结果是———. main() {

int x=1,y=1,z=1; y=y+z; x=x+y;

printf(“%d,”,x

(题4.98)以下程序的运行结果是———. main() {

int x,y,z; x=3; y=z=4;

printf(“%d,”,(x>=y>=x)? 1:0); printf(“%d\\n”,z>=y&&y>=x); }

(题4.99)若运行时输入: - 2<回车>,则以下程序的输出结果是———. main() {

int a,b;

scanf(“%d”,&a); b=(a>=0)? a : - a; printf(“b=%d”,b); }

(题4.100)若运行时输入:100<回车>时,下面程序的运行结果是———.

main() { int a;

scanf(“%d”,&a);

printf(“%s”,(a%2!=0)? ”no” ; “yes”); }

(题4.101)如果运行时输入字符为?Q?,则以下程序的运行结果是———. main()

17

{ char ch;

scanf(“%c”,&ch);

ch=(ch>=?A?&&ch<=?Z?)? (ch+32):ch; ch=(ch>=?a?&&ch<=?z?)? (ch-32):ch; printf(“%c”,ch); }

(题4.102)当运行时输入:1992<回车>,则以下程序的运行结果是———. main() { int y,t;

scanf(“%d”,&y);

t=((y%4= =0&&y0! =0) | | y@0= =0)? 1:0; if(t) printf(“%d is ”,y);

else printf(“%d is not”,y); printf(“a leap year”); }

(题4.103)以下程序是计算x,y,z三个数中值最小的.请在【 】内填入正确内容. main()

{ int x=4,y=5,z=8; int u,v;

u=x

(题4.104)设有变量定义:inta=5,c=4;则(――a= =++c)? ――a:c+

+的值是【1】,此时c的存储单元的值为【2】.

(题4.105)执行以下的C语言程序段后,a=【1】,b=【2】,c=【3】. int x=10,y=9; int a,b,c;

a=(x - - = =y++) ? x - - :y++; b=x++; c=y;

(题4.106)设有int x=1,y=0;则以下表达式的值为【 】. x - - >(y+x)?10:12.5>y++ ??A?:?Z?

(题4.107)设有int x=0,y=1;则以下表达式的值为【 】. x++*x - - !=?y??8 – 4 : y

(题4.108) 若运行时输入:3.5/<回车>时,下面程序的运行结果是———. main() { float x,y; char o; double r;

scanf(“%f %f %c”,&x,&y,&o); witch(o)

{ case ?+? : r=x+y ; bread;

18

case ?-? : r=x-y ; bread; case ?*? : r=x*y ; bread; case ?/? : r=x/y ; bread;

}

printf(“%f”,r); }

(题4.109)根据以下嵌套的if语句所给条件,填写switch语句,使它完成相同的功能. (假设mark的取值在1~100之间.) if语句:

if(mark<60) k=1;

else if(mark<70) k=2;

else if(mark<80) k=3; else if(mark<90) k=4;

else if(mark<=100) k=5;

switch语句 switch(【1】)

{ 【2】 k=1; break; case 6 : k=2; break; case 7: k=3; break; case 8: k=4; break;

【3】 k=5;

}

(题4.110)设有程序片段: switch (grade)

{ case ?A?: printf(“85-100\\n”); case ?B?: printf(“70-84n”); case ?C?: printf(“60-69\\n”); case ?D?: printf(“<60\\n”); default : printf(“error! \\n”); }

若 grade的值为?C?,则输出结果是———. (题4.111)以下程序段的运行结果是———. int x=1,y=0; switch (x) { case 1 :

switch (y)

{ case 0 : printf(“ **1**\n”);break; case 1 : printf(“ **2**\n”);break; }

case 2:printf(“**3**\n”); }

(题4.112)根据以下函数关系,对输入的每个x值,计算出相应的y值.请在程序的【 】内

填入正确的内容.

19

x y x<0 0 0<=x<10 x 10<=x<20 10 20<=x<40 - 0.5x+20

main() { int x,c,m; float y;

scanf(“%d”,&x); if(【1】) c= -1; else c=【2】; switch(c)

{ case –1:y=0; break; case 0 : y=x; break; case 1: y=10; bread; case 2:

case 3: yp- 0.5*x+20; break; default: y= -2; }

if(【3】) printf(“y=%f”,y); else printf(“error\\n”); }

(题4.113)以下程序的运行结果是———. main() {

int a=2,b=7,c=5; switch(a>0)

{ case 1:switch(b<0)

{ case 1: printf(“@”);break; case 2:printf(“!”);break; }

case 0:switch(c = =5)

{case 0: printf(“*”); break; case 1: printf(“#”); break; default: printf(“#”);break; }

default: printf(“&”);

20

} printf(“\\n”); }

(题4.114)请读程序:

# include main()

{ int x=1,y=0,a=0,b=0; switch(x) { case 1:

switch(y)

{ case 0 : a++ ; break ; case 1: b++ ; break ; }

case 2;

a++; b++; break; }

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

上面程序的运行结果是———.

(题4.115)假设奖金税率如下(a代表奖金,r代表税率) a<500 r=0%

500<=a<1000 r=5% 1000<=a<2000 r=8% 2000<=a<3000 r=10% 3000<= a r=15%

以下程序对输入的一个奖金数,求税率和应交税款以及实得奖金数(扣除奖金收

税后).题中r代表税率,t代表税款,b代表实得奖金数.请在【 】内填入正确内容.

main()

{ float a,r,t,b; int c;

scanf(“%f”,&a); if(a>=3000) c=6; else c=【1】; switch(c)

{ case 0:; r=0 ; break ; case 1 :r=0.05; break ; case 2:

case 3 : 【2】 ; break ; case 4 :

case 5: r=0.1 ; break ; case 6: r=0 .15; break ; }

t=a*r ; b=a – t ;

printf(“r=%f,t=%f,b=%f”,r,t,b);

21

}

(题4.116)某处自动加油站有?a?,?b?,?c?三种汽油,单价分别为1.50,1.35,1.18(元/千克),也提

供了”自己加”或”协助加”两个服务等级,这样用户可以得到5%或者说10%的优惠.本程序针对用户输入加油量a,汽油品种b和服务类型c(?f? - - 自动,?m? - - 自己,?e? - - 协助),输出应付款m.请在【 】内填入正确内容.

main()

{ float a,r1,r2,m; char b,c;

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

{ case ?a? :r1=1.5;break; case ?b?: 【1】;break; case ?c?: r1=1.18; break; }

switch(c)

{ case ?f?: r2=0; break; case ?m?: r2=0.05; break; case 【2】: r2=0.1; break; }

m=【3】;

printf(“%f”,m); } (题4.117)

main() {

int yy,mm ,len;

printf(“year,month=”);

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

case 1 : case 3 : case 5 : case 7 :

case 8 : case 10 : case 12 : 【1】; break ;

case 4 : case 6 : case 9 : case 11 : len=30 ; break; case 2 ;

if(yy%4 = =0 &&yy0 ! =0 | | yy@0= =0) 【2】; else 【3】; break ;

default: printf(“input error”); break ; }

printf(“the length of %d %d is %d\\n”,yy,mm,len); } (题4.118)以下程序用以计算y年m1月d1日与同年的m2月d2之间的天数(m2>=m1),

并打印计算结果.若m2=m1且d1=d2则算了天.在闰年时,2月有29天.闰年的

22

年号由以下方式确定:该年号能被4整除但不能被100整除,或者该年号能被400整除则是闰年.例如:输入1997,2.27,3,10<回车>时,输出为12.表明从1997年2月27日到3月10日共有12天.请在【】内填入正确内容.

main()

{ int y,m1,d1,m2,d2; int I,d;

scanf(“%d,%d,%d,%d,%d”,&y,&m1,&d1,&m2,&d2); y=(y%4= =0【1】 y0! =0【2】 y@0= =0)? 1:0; d=0 – d1;

for(i=m1;i

case 1:case 3:case 5:case 7: case 8:case 10:case 12: d+=31; break; case 2:d=d+28+y; break;

case 4:case 5:case 9:case 11: 【3】; }

printf(“%d”,d+d2+1); }

4.3 编 程 题

(题4.119)编制程序要求输入整数a和b,若a2和b2大于100,则输出a2+b2百位以上的数字,

否则输出两数之和.

(题4.120)试编程判断输入的正整数是否既是5又是7的整倍数.若是,则输出yes;否则输出

no.

(题4.121)请编程序:根据以下函数关系,对输入的每个x值,计算出相应的y值. x X<0 0

23

(1) 能同时被3,5,7整除;

(2) 能被其中两数(要指出哪两处)整除; (3) 能被其中一个数(要指出哪一个)整除; (4) 不能被3,5,7任一个整除.

(题4.123)将以下程序段改用非嵌套的if语句实现. int s,t,m; t=(int) (s/10); switch(t)

{ case 10: m=5; break; case 9: m=4; break; case 8: m=3; break; case 7: m=2; break; case 6: m=1; break; default m=0; }

(题4.124)有switch编程实现:

{

y=

- 1 (x<0) (x=0) x>0

0 1

(题4.125)将以下程序段改用嵌套的if语句实现. int s,tm; t=(int) (s.10); switch(t)

{ case 10:,=5; break; case 9: m=4; break; case 8: m=3; break; case 7: m=2; break; case 6: m=1; break; default m=0; }

(题4.126)请将以下语句改写switch成语句. If((s>0)&&(s<=10))

If((s>=3)&&(s<=6)) x=2; else if((s>1) | | (s>8)) x=3; else x=1; else x=0;

(题4.127)编程实现以下功能:读入两个运算符(data1和data2)及一个运算符(op),计算表达式

data1op data2的值,其中op可为+ ,- , *, /(用switch语句实现).

(题4.128)编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩.设:90分以上为?

A?,80~89分为?B?,70~79分为?C?,60~69分为?D?,60分以下为?E?(用switch语句实现).

24

第四章 逻辑运算和判断选取控制

4.1 选择题

(题4.1) D (题4.2) C (题4.3) B (题4.4) C (题4.5) C (题4.6)C (题4.7) D (题4.8) C (题4.9) C (题4.10) B (题4.11)D (题4.12) B (题4.13) 【1】 C 【2】 A (题4.14) 【1】 B 【2】 A (题4.15) C

(题4.16) 【1】 A 【2】 C (题4.17) B (题4.18) B (题4.19) D (题4.20) C (题4.21) B (题4.22) C (题4.23) C (题4.24) B (题4.25) B (题4.26) B (题4.27) B (题4.28) B (题4.29) A (题4.30) D (题4.31) B (题4.32) A ((题4.34) C

4.2 填空题

(题4.35) 0 (题4.36) 1

(题4.37) 5 25 1 (题4.38) 非0的数字 (题4.39) (y%2) = =1

(题4.40) 【1】 && 【2】 | | 【3】 ! (题4.41) x

(题4.42)((x<0)&&(y<0)) | | ((x<0)&&(z<0)) | | ((y<0)&&(z<0)) (题4.43) 0 (题4.44) 1 (题4.45) 0 (题4.46) 0 (题4.47) 1 (题4.48) 0 (题4.49) 1

(题4.50) x>2&&x<3 | | x<= - 10 或 ((x<2)&&(x<3)) | | (x< -10) (题4.51) 【1】 0 【2】 1 (题4.52) 1 , 1

(题4.53) a1=1 a2=1 b1=0 b2=1 (题4.54) 1 ,0 (题4.55) 1 (题4.56) 1 (题4.57) 13 (题4.58) 1 (题4.59) 0 (题4.60) 1

(题4.61) your $ 3.0 yuan / xiaoshi (题4.62)2nd class postage is 14p (题4.63) selling price(0.30) $ 5.72 (题4.64) F

题4.33) D 25

本文来源:https://www.bwwdw.com/article/3pkv.html

Top