逻辑运算和判断 - 范文中心

逻辑运算和判断

08/21

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

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

}


相关内容

  • 逻辑表达式课程设计报告
    中北大学 课程设计报告 学期 学 院: 信息与通信工程学院 专 业: 电子信息科学与技术 学 生 姓 名: 向 伟 学 号: 1505044245 课程设计题目: 逻辑表达式的合理性判断 起 迄 日 2016年 12 月 12 日-2016 ...
  • 华北电力大学电子技术基础二考纲
    华北电力大学(保定) 2015年硕士研究生入学考试初试学校自命题科目考试大纲 (招生代码:10079) <820 信号与系统> 一.考试内容范围: 1. 信号与系统的基础知识 (1)信号的概念.描述及分类: (2)信号的基本运算 ...
  • 51汇编语言指令集符号定义表
    51汇编语言指令集 符号定义表 符号 含义 Rn R0-R7寄存器n=0-7 Direct 直接地址,内部数据区的地址RAM(00H-7FH) SFR(80H-FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON, ...
  • 题 计算机历史与分类
    1.第一台电子计算机是1946年在美国研制的,该机的英文缩写名是( A ) . A .ENIAC B .EDVAC C .EDSAC D .MARK-II 2.提出了存储程序和采用二进制系统的设想, 被人们尊称为"计算机之父&qu ...
  • [程序设计基础]实验指导书
    实验1 C的实验环境和C语言的数据类型 ⒈ 实验目的 ⑴ 了解在具体的语言环境下如何编辑.编译.连接和运行一个C程序. ⑵ 通过运行简单的C程序,初步了解C源程序的特点. ⑶ 掌握C语言数据类型,熟悉如何定义一个整型.字符型和实型的变量,以 ...
  • 如何培养学生的推理能力
    如何培养学生的推理能力 数学在生活中的主要功能期中一个就是培养学生的推理能力. <辞海>中阐述:"由一个或几个已知判断推出另一个未知的判断的思维形式"叫做推理."推理有演绎推理.归纳推理.类比推理等 ...
  • 有效思维与成功
    有效思维与成功 山西家庭教育指导中心主任胡中海 摘要:思维前人所做研究成果颇丰,多集中思维的误区,思维的心理学机制的研究.关于成功,也有许多的论述.本文意图从有效思维的角度来探讨关于成功的问题. 关键词:思维成功有效 问题提出 成功是什么? ...
  • 一个月考公务员
    首先声明我不是原创,只是转来供大家学习的!正文:我也不想这样,实在写了太长时间,需要大家支持下我!精华中的精华,经验中的经验,总结了一遍又一遍,一个月复习公务员考试足以!只是看你愿不愿意轻轻的动下你的鼠标成功=心态+勤奋+方法 任何人都不是 ...
  • 判断题答案
    1.在第一次给数组或数组元素赋值前其初始值是.F.. 正 确 2.同一个元素在程序执行过程中可以取得不同类型的数据. 正确 3.SET TALK ON/OFF 命令决定是否显示数据处理命令的响 应信息.正确 4.程序文件可以在命令窗口执行. ...
  • 20XX年河北省公务员考试行测大纲解读
    河北省2010年度公务员录用省市县乡四级联考<行政职业能力测验>科目考试大纲解读 中公教育集团解读 一.两大巨变 巨变一:题型顺序调整,凸显考试重难点 今年行测考试大纲较去年最引人注目的地方是,将常识判断部分由第一部分变为第五部 ...