逻辑运算和判断

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

4.1 选择题

(题4.1)逻辑运算符两侧运算对象的数据类型———.

A) 只能是0或1

B) 只能是0或非0正数

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

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

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

A) 关系运算符

B) 逻辑运算符

C) 赋值运算符

D) 算术运算符

(题4.3) 下列运算符中优先级最高的是———.

A)

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

A )(x>=1)&&(x=200)&&(x

B) (x>=1)||(x=200)||(x

C )(x>=1)&&(x=200)&&(x

D )(x>=1)||(x=200)||(x

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

/ / / / / | / / / / / / |

/ / / / / | / / / / / / |

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

A)(x=b)&&(x

B)(x

C)(x=b)&&(x

D)(x

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

A)‟A‟=‟A‟)&(ch

B)(ch>=‟A‟)&&(ch=ch)

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

A)‟x‟&&‟y‟ B)x

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‟=a)&&(c1

C)(„a‟>=c1)||(„z=‟a‟)&&(c1

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

e lse printf(“%f”,-x);

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(c

else

if(a

if(b

else x=3;

else x=6;

else x=7;

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

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

下面程序段中能正确表示上面关系的是————.

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

if(x

else y=x; if(ifx

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

else if((a

else if(a

else b=10.0;

printf(“%f\n”,y);

}

若运行时输入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

m=(m

m=(m

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

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

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

(题4.34) 执行以下程序段后的输出结果是———.

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

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】.

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

main ()

{ int x,y ,z ;

x=1;y=2;z=3;

x=y- -

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

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

printf(“T ”);

else

printf(“F ”);

}

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

main()

{ int t,h,m;

scanf(“%d”, &t);

h=(t/100)%12;

if(h= =0) h=12;

printf(“%d:”,h);

m=t%100;

if(m

printf(“%d”,m);

if(t

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

if(x>=3000&&x

if(x>=6000&&x

printf(“%6.1f”,y);

}

(题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

else if(c>=‟v ‟&&c

putchar(c);

}

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

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

main()

{ char ch;

scanf(“%c”,&ch);

if(【1】) ch=ch+32;

else if(ch>=‟a ‟&&ch

printf(“%c”,ch);

}

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

main()

{ int a,b,c;

int s,w,t;

s=w=t=0;

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

if(c

if(a

{ if(b>0)

if(c

}

else if(c

else t=c;

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

}

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

main()

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

a=c=0;

b=1;

d=20;

if(a) d=d-10;

else if(! b)

if(! c) x=15;

else x=25;

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

}

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

#include

void main(void)

{ int x,y=1,z;

if(y! =0) x=5;

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

if(y= =0) x=4;

else x=5;

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

x=1;

if(y

if(y>0) x=4;

else x=5;

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

}

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

#include

void main(void)

{ int x,y=-2,z=0;

if((z=y)

else if(y= =0) x=5;

else x=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);

}

(题4.77) 请阅读下面的程序:

main()

{ int s,t,a,b;

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

s=1;

t=1;

if(a>0) s=s+1;

if(a>b) t=s+t;

else if(a= =b) t=5;

else t=2*s;

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

}

为了使输出结果t=4,输入量a 和b 应满足的条件是【 】.

(题4.78) 请阅读下面的程序:

main()

{ int s,t,a,b;

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

s=1;

t=1;

if(a>0) s=s+1;

if(a>b) t=s+t ;

else if(a= =b) t=5;

else t=2*s;

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

}

为了使输出结果s=1,t=5,输入量a 和b 应满足的条件是【 】.

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

确内容.

main()

{ int x,y;

scanf(“%d”,&x);

if(【1】) y=x*(x+2);

else if(【2】) y=2*x;

else if(x

else 【3】;

if(y! = -1) printf(“%d”,y);

else printf(“error ”);

}

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

填入正确内容.

main()

{ int x,a;

float y;

scanf(“%d %d”,&x,&a);

if(【1】) y=0;

else if(【2】) y=sqrt(a*a-x*x);

else y=x;

printf(“%f”,y);

}

(题4.81) 以下程序的功能是计算一元二次方程ax2+bx+c=0的根,请在【 】内填入正确

内容。

#include “math.h ”

main()

{

float a,b,c,disc,twoa,terml,term2;

printf(“enter a,b,c”);

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

if(【1】)

if(【2】) printf(“no answer due to input error\n”);

else printf(“the single root is%f\n”,-c/b);

else

{disc=b*b-4*a*c;

twoa=2*a;

term1=-b/twoa;

t=abs(disc);

term2=sqrt(t)/twoa;

if(【3】)

printf(“complex root\n real part=%f imag part=%f\n”,term1,term2); else

printf(“real roots\n root1 =%f root2=%f\n”,term1+term2,term1-term2); }

}

(题4.82) 以下程序根据输入的三角形的三边判断是否能组成三角形, 若可以输出它的面积

和三角形的类型. 请在【 】内填入正确内容.

#include “math.h ”

main()

{ float a,b,c;

float s,area;

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

if(【1】)

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

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

printf(“%f”,area);

if(【2】)

printf(“等边三角形”)

else if(【3】);

printf(“等腰三角形”);

else if((a*a+b*b= =c*c) | | (a*a+c*c= = b*b) | | (b*b+c*c= = a*a)) printf(“直角三角形”);

else printf(“一般三角形”)

}

else printf(“不能组成三角形”);

}

(题4.83) 某邮局对邮寄包裹有如下规定:若包裹的长度高任一尺寸超过1米或重量超过30

千克, 不予邮寄; 对可以邮寄的包裹每件收手续费0.2元, 再加上根据下表按重量

wei 计算的邮寄:

请在程序的【 】内填入正确内容.

main()

{ float len,wei,hei,wid,mon,r;

scanf(“%f %f %f %f”,&len,&wid,&hei,&wei);

if(len>1 | | wid>1 | | hei>1 | | wei>30) 【1】;

else if(wei

else if(wei

else if(wei

if(r= = - 1) printf(“error\n”);

else

{【3】; printf(“%f”,mon);}

}

(题4.84) 某服装店经营套服,也单个出售。若买的不少于50套80元,不足50套的每套

90元;只买上衣每件60元;只买裤子每条45元。以下程序的功能是读入所买上衣c 和裤子t 的件数,计算应付款m 。请在【 】内填入正确内容。

main ()

{ int c,t ,m ;

printf (“input the number of coat and trousers your want buy:\n”); scanf(“%d %d ,&s,&t”);

if(【1】)

if(c

else

if(【2】)

if(t

else m=t*90+(c-t)*60

else

if(【3】) m=c*80+(t-c)*45;

else m=c*90+(t-c)*45;

printf(“%d”,m);

}

(题4.85) 以下程序的功能是判断输入的年份是否是闰年. 请在【 】内填入正确内容. main()

{ int y,f;

scanf(“%d”,&y);

if(y%400= =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

if(【1】) {t=c; c=d ;d=t;}

if(a

if(【2】) {t=b;b=c;c=t;}

if(b

if(c

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‟的值是【 】..

(题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

printf(“%d,”,x

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

}

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

{ char ch;

scanf(“%c”,&ch);

ch=(ch>=‟A ‟&&ch

ch=(ch>=‟a ‟&&ch

printf(“%c”,ch);

}

(题4.102) 当运行时输入:1992,则以下程序的运行结果是———.

main()

{ int y,t;

scanf(“%d”,&y);

t=((y%4= =0&&y%100! =0) | | y%400= =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

v=u

printf(“%d”,v);

}

(题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;

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

else if(mark

else if(mark

else if(mark

else if(mark

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(“

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 值. 请在程序的【 】内

填入正确的内容.

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

{ 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(“&”);

} 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 代表税率,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);

}

(题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 &&yy%100 ! =0 | | yy%400= =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天. 闰年的

年号由以下方式确定:该年号能被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】 y%100! =0【2】 y%400= =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, 若a 2和b 2大于100, 则输出a 2+b2百位以上的数字,

否则输出两数之和.

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

no.

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

(题4.122) 编程实现:输入一个整数, 判断它能否被3,5,7整除, 并输出以下信息之一:

(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=

(题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

If((s>=3)&&(s1) | | (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 语句实现).

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

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

(题4.50) x>2&&x

(题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

(题4.65) 4 : 05 PM

(题4.66) 【1】m= =‟a ‟ 【2】m = =‟c ‟ 【3】m= =‟b ‟ (题4.67) 3635.4

(题4.68) 【1】u ,v 【2】x>y 【3】u>z (题4.69) 【1】y

(题4.72) 【1】ch>=‟A ‟&&ch

(题4.76) 4 - 2 4 0 4 - 2 (题4.77) 0

(题4.78) a

(题4.79) 【1】x>2&&x -1&&x - a&&x

(题4.81) 【1】a = =0 【2】b = =0 (题4.82) 【1】a+b>c&&b+c>a&&a+c>b

【2】a = =b&&b = =c

【3】a = =b | | a = =c | | b = =c

(题4.83) 【1】r= -1 【2】r=0.7 (题4.84) 【1】c = =t 【2】c>t (题4.85) 【1】y%4 = =0&&y%100 ! 0【2】f=0

(题4.86) 【1】

(题4.92) 97或‟a ‟ (题4.93) 102或‟x ‟ (题4.94) 0 (题4.95) 5

(题4.96) 1 , - 13 , - 7 (题4.97) 3, 2 , 3 , 3 (题4.98) 0 , 1 (题4.99) b=2 (题4.100) yes (题4.101) Q

(题4.102) 1992 is a leap year

【3】y= -1 【3】disc=50 【3】c>=50 3】

(题4.103) 【1】x : y 【2】u : z (题4.104) 【1】5 【2】6

(题4.105) 【1】10 【2】9 【3】11 (题4.106) 65 (题4.107) 4

(题4.108) 0.600000

(题4.109) 【1】mark / 10

【2】case 0 : case 1 : case 2 : case 3 : case 4 : case 5 :

【3】case 9 : case 10 :

(题4.110) 60~90

(题4.112) 【1】x

(题4.115) 【1】a/500 【2】r=0.08

(题4.116) 【1】r1=1.35 【2】‟e ‟ (题4.117) 【1】len=31 【2】len=29 (题4.118) 【1】&& 【2】 | |

4.3编程题 (题4.119) main() { int a,b,x,y;

scanf(“%d %d”,&a,&b); x=a*a+b*b; if(x>100)

{ y=x/100;printf(“%d”,y);} else printf(“%d”,a+b); }

(题4.120) main() { int x;

scanf(“%d”,&x);

if(x%5 = =0&&x%7 = =0) printf(“yes ”); else

printf(“no ”); } (题4.121) main() { int x; float y;

scanf(“%d”,&x); if(x

else if(x>0&&x

3】y! = - 2 3】a*r1*(1 - r2) 3】len=28 3】d + = 30 【 【 【 【

else if(x>10&&x

else if(x>20&&x

if(y! = -1) printf(“%f”,y);

else printf(“error\n”); }

(题4.122) main() { int x;

scanf(“%d”,&x);

if((x%3 = =0)&&(x%5 = =)&&(x%7 = =0)) printf(“%d can be divided by 3,5,7\n”,x); else if((x%3 = =0)&&(x%5 = =0))

printf(“%d can be divided by 3,5\n”,x); else if((x%3 = =0)&&(x%7 = =0)) printf(“%d can be divided by 3,7\n”,x); else if((x%5 = =0)&&(x%7 = =0)) printf(“%d can be divided by 5,7\n”,x); else if(x%3= =0)

printf(“%d can be divided by 3\n”,x); else if(x%5 = =0)

printf(“%d can be divided by 5\n”,x);

else if (x%7 = =0)

printf(“%d can be divided by 7\n”,x); else

printf(“%d cannot be divided 3,5,7\n”,x); }

(题4.123) int s,m;

if((s=100)) m=5; if((s=90)) m=4; if((s=80)) m=3; if((s=70)) m=2; if((s=60)) m=1; if((s109)) m=0; (题4.124) main() { float x; int y;

print(“\n input x:”);

scanf(“%f”,&x); switch(x

{ case 1 : y= - 1 ;break; case 0 : switch(x = =0) { case 1 : y=0; break; default : y=1; }

}

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

(题4.125) int s,m;

if((s109)) m=0; else if(s

(题4.126) switch ((s>0)&&(s

{ case 1 :switch((s>=3)&&(s

{ case 1 : c=2; break;

case 0 : switch((s>1) | | (s>8)) { case 1 : x=3; break; case 0 : x=1; break; } } break;

case 0 : x=0; break; }

(题4.127) #include #include void main(void)

{ float data1,data2,data3; char op;

printf(“\n type in your expression :” ); scanf(“%f %c %f”,&data1,&op,&data2); switch(op)

{ case „+‟ : data3=data1+data2; break ;

case „-‟ : data3=data1-data2; break ;

case „*‟ : data3=data1*data2; break ;

case „/‟ : if(data2 = =0)

{ printf(“\ndivision by zero ”);

exit (1); }

data3=data1/data2 ; break ; }

printf(“this is %6.2f %c %6.2f=%6.2f\n”,data1,op,data2,data3); }

(题4.128) main() {

int score , temp , log ; char grade ; log=1; while(log)

{ printf(“enter score : ”); if((score>100) | | (score

if(score = =100) temp=9;

else temp=(score – score%10)/10; switch(temp)

{ case 0 : case 1 : case 2 :

case 3 : case 4 : case 5 : grade=‟E ‟; break; case 6 : grade=‟D ‟; break; case 7 : grade=‟C ‟; break; case 8 : grade=‟B ‟; break; case 9 : grade=‟A ‟; }

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

}

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

4.1 选择题

(题4.1)逻辑运算符两侧运算对象的数据类型———.

A) 只能是0或1

B) 只能是0或非0正数

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

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

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

A) 关系运算符

B) 逻辑运算符

C) 赋值运算符

D) 算术运算符

(题4.3) 下列运算符中优先级最高的是———.

A)

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

A )(x>=1)&&(x=200)&&(x

B) (x>=1)||(x=200)||(x

C )(x>=1)&&(x=200)&&(x

D )(x>=1)||(x=200)||(x

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

/ / / / / | / / / / / / |

/ / / / / | / / / / / / |

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

A)(x=b)&&(x

B)(x

C)(x=b)&&(x

D)(x

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

A)‟A‟=‟A‟)&(ch

B)(ch>=‟A‟)&&(ch=ch)

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

A)‟x‟&&‟y‟ B)x

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‟=a)&&(c1

C)(„a‟>=c1)||(„z=‟a‟)&&(c1

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

e lse printf(“%f”,-x);

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(c

else

if(a

if(b

else x=3;

else x=6;

else x=7;

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

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

下面程序段中能正确表示上面关系的是————.

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

if(x

else y=x; if(ifx

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

else if((a

else if(a

else b=10.0;

printf(“%f\n”,y);

}

若运行时输入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

m=(m

m=(m

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

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

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

(题4.34) 执行以下程序段后的输出结果是———.

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

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】.

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

main ()

{ int x,y ,z ;

x=1;y=2;z=3;

x=y- -

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

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

printf(“T ”);

else

printf(“F ”);

}

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

main()

{ int t,h,m;

scanf(“%d”, &t);

h=(t/100)%12;

if(h= =0) h=12;

printf(“%d:”,h);

m=t%100;

if(m

printf(“%d”,m);

if(t

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

if(x>=3000&&x

if(x>=6000&&x

printf(“%6.1f”,y);

}

(题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

else if(c>=‟v ‟&&c

putchar(c);

}

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

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

main()

{ char ch;

scanf(“%c”,&ch);

if(【1】) ch=ch+32;

else if(ch>=‟a ‟&&ch

printf(“%c”,ch);

}

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

main()

{ int a,b,c;

int s,w,t;

s=w=t=0;

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

if(c

if(a

{ if(b>0)

if(c

}

else if(c

else t=c;

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

}

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

main()

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

a=c=0;

b=1;

d=20;

if(a) d=d-10;

else if(! b)

if(! c) x=15;

else x=25;

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

}

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

#include

void main(void)

{ int x,y=1,z;

if(y! =0) x=5;

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

if(y= =0) x=4;

else x=5;

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

x=1;

if(y

if(y>0) x=4;

else x=5;

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

}

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

#include

void main(void)

{ int x,y=-2,z=0;

if((z=y)

else if(y= =0) x=5;

else x=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);

}

(题4.77) 请阅读下面的程序:

main()

{ int s,t,a,b;

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

s=1;

t=1;

if(a>0) s=s+1;

if(a>b) t=s+t;

else if(a= =b) t=5;

else t=2*s;

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

}

为了使输出结果t=4,输入量a 和b 应满足的条件是【 】.

(题4.78) 请阅读下面的程序:

main()

{ int s,t,a,b;

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

s=1;

t=1;

if(a>0) s=s+1;

if(a>b) t=s+t ;

else if(a= =b) t=5;

else t=2*s;

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

}

为了使输出结果s=1,t=5,输入量a 和b 应满足的条件是【 】.

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

确内容.

main()

{ int x,y;

scanf(“%d”,&x);

if(【1】) y=x*(x+2);

else if(【2】) y=2*x;

else if(x

else 【3】;

if(y! = -1) printf(“%d”,y);

else printf(“error ”);

}

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

填入正确内容.

main()

{ int x,a;

float y;

scanf(“%d %d”,&x,&a);

if(【1】) y=0;

else if(【2】) y=sqrt(a*a-x*x);

else y=x;

printf(“%f”,y);

}

(题4.81) 以下程序的功能是计算一元二次方程ax2+bx+c=0的根,请在【 】内填入正确

内容。

#include “math.h ”

main()

{

float a,b,c,disc,twoa,terml,term2;

printf(“enter a,b,c”);

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

if(【1】)

if(【2】) printf(“no answer due to input error\n”);

else printf(“the single root is%f\n”,-c/b);

else

{disc=b*b-4*a*c;

twoa=2*a;

term1=-b/twoa;

t=abs(disc);

term2=sqrt(t)/twoa;

if(【3】)

printf(“complex root\n real part=%f imag part=%f\n”,term1,term2); else

printf(“real roots\n root1 =%f root2=%f\n”,term1+term2,term1-term2); }

}

(题4.82) 以下程序根据输入的三角形的三边判断是否能组成三角形, 若可以输出它的面积

和三角形的类型. 请在【 】内填入正确内容.

#include “math.h ”

main()

{ float a,b,c;

float s,area;

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

if(【1】)

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

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

printf(“%f”,area);

if(【2】)

printf(“等边三角形”)

else if(【3】);

printf(“等腰三角形”);

else if((a*a+b*b= =c*c) | | (a*a+c*c= = b*b) | | (b*b+c*c= = a*a)) printf(“直角三角形”);

else printf(“一般三角形”)

}

else printf(“不能组成三角形”);

}

(题4.83) 某邮局对邮寄包裹有如下规定:若包裹的长度高任一尺寸超过1米或重量超过30

千克, 不予邮寄; 对可以邮寄的包裹每件收手续费0.2元, 再加上根据下表按重量

wei 计算的邮寄:

请在程序的【 】内填入正确内容.

main()

{ float len,wei,hei,wid,mon,r;

scanf(“%f %f %f %f”,&len,&wid,&hei,&wei);

if(len>1 | | wid>1 | | hei>1 | | wei>30) 【1】;

else if(wei

else if(wei

else if(wei

if(r= = - 1) printf(“error\n”);

else

{【3】; printf(“%f”,mon);}

}

(题4.84) 某服装店经营套服,也单个出售。若买的不少于50套80元,不足50套的每套

90元;只买上衣每件60元;只买裤子每条45元。以下程序的功能是读入所买上衣c 和裤子t 的件数,计算应付款m 。请在【 】内填入正确内容。

main ()

{ int c,t ,m ;

printf (“input the number of coat and trousers your want buy:\n”); scanf(“%d %d ,&s,&t”);

if(【1】)

if(c

else

if(【2】)

if(t

else m=t*90+(c-t)*60

else

if(【3】) m=c*80+(t-c)*45;

else m=c*90+(t-c)*45;

printf(“%d”,m);

}

(题4.85) 以下程序的功能是判断输入的年份是否是闰年. 请在【 】内填入正确内容. main()

{ int y,f;

scanf(“%d”,&y);

if(y%400= =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

if(【1】) {t=c; c=d ;d=t;}

if(a

if(【2】) {t=b;b=c;c=t;}

if(b

if(c

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‟的值是【 】..

(题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

printf(“%d,”,x

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

}

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

{ char ch;

scanf(“%c”,&ch);

ch=(ch>=‟A ‟&&ch

ch=(ch>=‟a ‟&&ch

printf(“%c”,ch);

}

(题4.102) 当运行时输入:1992,则以下程序的运行结果是———.

main()

{ int y,t;

scanf(“%d”,&y);

t=((y%4= =0&&y%100! =0) | | y%400= =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

v=u

printf(“%d”,v);

}

(题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;

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

else if(mark

else if(mark

else if(mark

else if(mark

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(“

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 值. 请在程序的【 】内

填入正确的内容.

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

{ 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(“&”);

} 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 代表税率,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);

}

(题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 &&yy%100 ! =0 | | yy%400= =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天. 闰年的

年号由以下方式确定:该年号能被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】 y%100! =0【2】 y%400= =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, 若a 2和b 2大于100, 则输出a 2+b2百位以上的数字,

否则输出两数之和.

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

no.

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

(题4.122) 编程实现:输入一个整数, 判断它能否被3,5,7整除, 并输出以下信息之一:

(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=

(题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

If((s>=3)&&(s1) | | (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 语句实现).

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

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

(题4.50) x>2&&x

(题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

(题4.65) 4 : 05 PM

(题4.66) 【1】m= =‟a ‟ 【2】m = =‟c ‟ 【3】m= =‟b ‟ (题4.67) 3635.4

(题4.68) 【1】u ,v 【2】x>y 【3】u>z (题4.69) 【1】y

(题4.72) 【1】ch>=‟A ‟&&ch

(题4.76) 4 - 2 4 0 4 - 2 (题4.77) 0

(题4.78) a

(题4.79) 【1】x>2&&x -1&&x - a&&x

(题4.81) 【1】a = =0 【2】b = =0 (题4.82) 【1】a+b>c&&b+c>a&&a+c>b

【2】a = =b&&b = =c

【3】a = =b | | a = =c | | b = =c

(题4.83) 【1】r= -1 【2】r=0.7 (题4.84) 【1】c = =t 【2】c>t (题4.85) 【1】y%4 = =0&&y%100 ! 0【2】f=0

(题4.86) 【1】

(题4.92) 97或‟a ‟ (题4.93) 102或‟x ‟ (题4.94) 0 (题4.95) 5

(题4.96) 1 , - 13 , - 7 (题4.97) 3, 2 , 3 , 3 (题4.98) 0 , 1 (题4.99) b=2 (题4.100) yes (题4.101) Q

(题4.102) 1992 is a leap year

【3】y= -1 【3】disc=50 【3】c>=50 3】

(题4.103) 【1】x : y 【2】u : z (题4.104) 【1】5 【2】6

(题4.105) 【1】10 【2】9 【3】11 (题4.106) 65 (题4.107) 4

(题4.108) 0.600000

(题4.109) 【1】mark / 10

【2】case 0 : case 1 : case 2 : case 3 : case 4 : case 5 :

【3】case 9 : case 10 :

(题4.110) 60~90

(题4.112) 【1】x

(题4.115) 【1】a/500 【2】r=0.08

(题4.116) 【1】r1=1.35 【2】‟e ‟ (题4.117) 【1】len=31 【2】len=29 (题4.118) 【1】&& 【2】 | |

4.3编程题 (题4.119) main() { int a,b,x,y;

scanf(“%d %d”,&a,&b); x=a*a+b*b; if(x>100)

{ y=x/100;printf(“%d”,y);} else printf(“%d”,a+b); }

(题4.120) main() { int x;

scanf(“%d”,&x);

if(x%5 = =0&&x%7 = =0) printf(“yes ”); else

printf(“no ”); } (题4.121) main() { int x; float y;

scanf(“%d”,&x); if(x

else if(x>0&&x

3】y! = - 2 3】a*r1*(1 - r2) 3】len=28 3】d + = 30 【 【 【 【

else if(x>10&&x

else if(x>20&&x

if(y! = -1) printf(“%f”,y);

else printf(“error\n”); }

(题4.122) main() { int x;

scanf(“%d”,&x);

if((x%3 = =0)&&(x%5 = =)&&(x%7 = =0)) printf(“%d can be divided by 3,5,7\n”,x); else if((x%3 = =0)&&(x%5 = =0))

printf(“%d can be divided by 3,5\n”,x); else if((x%3 = =0)&&(x%7 = =0)) printf(“%d can be divided by 3,7\n”,x); else if((x%5 = =0)&&(x%7 = =0)) printf(“%d can be divided by 5,7\n”,x); else if(x%3= =0)

printf(“%d can be divided by 3\n”,x); else if(x%5 = =0)

printf(“%d can be divided by 5\n”,x);

else if (x%7 = =0)

printf(“%d can be divided by 7\n”,x); else

printf(“%d cannot be divided 3,5,7\n”,x); }

(题4.123) int s,m;

if((s=100)) m=5; if((s=90)) m=4; if((s=80)) m=3; if((s=70)) m=2; if((s=60)) m=1; if((s109)) m=0; (题4.124) main() { float x; int y;

print(“\n input x:”);

scanf(“%f”,&x); switch(x

{ case 1 : y= - 1 ;break; case 0 : switch(x = =0) { case 1 : y=0; break; default : y=1; }

}

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

(题4.125) int s,m;

if((s109)) m=0; else if(s

(题4.126) switch ((s>0)&&(s

{ case 1 :switch((s>=3)&&(s

{ case 1 : c=2; break;

case 0 : switch((s>1) | | (s>8)) { case 1 : x=3; break; case 0 : x=1; break; } } break;

case 0 : x=0; break; }

(题4.127) #include #include void main(void)

{ float data1,data2,data3; char op;

printf(“\n type in your expression :” ); scanf(“%f %c %f”,&data1,&op,&data2); switch(op)

{ case „+‟ : data3=data1+data2; break ;

case „-‟ : data3=data1-data2; break ;

case „*‟ : data3=data1*data2; break ;

case „/‟ : if(data2 = =0)

{ printf(“\ndivision by zero ”);

exit (1); }

data3=data1/data2 ; break ; }

printf(“this is %6.2f %c %6.2f=%6.2f\n”,data1,op,data2,data3); }

(题4.128) main() {

int score , temp , log ; char grade ; log=1; while(log)

{ printf(“enter score : ”); if((score>100) | | (score

if(score = =100) temp=9;

else temp=(score – score%10)/10; switch(temp)

{ case 0 : case 1 : case 2 :

case 3 : case 4 : case 5 : grade=‟E ‟; break; case 6 : grade=‟D ‟; break; case 7 : grade=‟C ‟; break; case 8 : grade=‟B ‟; break; case 9 : grade=‟A ‟; }

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

}


相关文章

  • 大学计算机第四章
  • 第4章 分支结构及其应用 学习目标: 掌握关系和逻辑运算,实现分支结构的语句,编写分支结构程序. 学习内容: 关系和逻辑运算符及表达式,if 语句,switch 语句,条件表达式,分支结构嵌套,分支结构程序设计方法. 4.1 一个分支结构程 ...查看


  • 逻辑表达式课程设计报告
  • 中北大学 课程设计报告 学期 学 院: 信息与通信工程学院 专 业: 电子信息科学与技术 学 生 姓 名: 向 伟 学 号: 1505044245 课程设计题目: 逻辑表达式的合理性判断 起 迄 日 2016年 12 月 12 日-2016 ...查看


  • 华北电力大学电子技术基础二考纲
  • 华北电力大学(保定) 2015年硕士研究生入学考试初试学校自命题科目考试大纲 (招生代码:10079) <820 信号与系统> 一.考试内容范围: 1. 信号与系统的基础知识 (1)信号的概念.描述及分类: (2)信号的基本运算 ...查看


  • 新代数控车床宏程序说明
  • 一.用户宏程序的基本概念 用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能. 在这里,所存储的一组指令叫做宏程序体(或用户宏程序) ,简称为用户宏. ...查看


  • 皮亚杰与科尔伯格道德发展理论比较
  • 2005年2月第9卷第1期 扬州大学学报(高教研究版) JournalofYangzhouUniversity(HigherEducationStudyEdition) Feb12005Vol19No11 皮亚杰与科尔伯格道德发展理论比较 ...查看


  • 易语言常用语句和命令
  • 1. 易语言命令的概念 易语言命令是处理问题一段程序封装的计算机指令.为了使用计算机计算.处理一些问题,需要把解决问题的方案用计算机指令表达出来,这些指令就是一段程序,将这些程序进行封装即为命令.一个命令可以由一个或多个简单的命令封装成一个 ...查看


  • 离散数学答案
  • 2015春课件作业 第一部分 集合论 第一章 集合的基本概念和运算 1-1 设集合 A ={{2,3,4},5,1},下面命题为真是 A (选择题) [ A ] A .1 ∈A : B.2 ∈ A: C.3 ∈A : D.{3,2,1} ⊆ ...查看


  • 职业能力倾向测验题型解读
  • 职业能力倾向测验题型解读: <职业能力倾向测验>主要测查管理工作必须具备的基本素质和潜在能力,考试内容主要包括:数量关系.言语理解与表达.判断推理.常识判断.资料分析五个部分.一般为客观性试题,题型一般为单选题和多选题. 第一部 ...查看


  • GCT在职研究生考试大纲
  • 硕士学位研究生入学资格 GCT考试指南 第一节 语言表达能力测试介绍 一.考试目的 语言表达能力测试,旨在以语文为工具,测试考生基于知识积累的语言表达能力,以自然科学.人文与社会科学知识为背景,通过检测考生对字.词.句.段.篇的辨识,阅读与 ...查看


  • C运算符与优先级
  • C语言运算符 运算符是告诉编译程序执行特定算术或逻辑操作的符号.C语言的运算范围很宽,把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理.主要分为三大类:算术运算符. 关系运算符与逻辑运算符.按位运算符.除此之外,还有一些用于 ...查看


热门内容