第四章 逻辑运算和判断选取控制
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);
}