第五章选择结构程序设计基础练习(A)一、填空题1、关系表达式的运算结果是逻辑值。
C语言没有逻辑型数据,以1代表“真”,以0代表“假”。
2、逻辑运算符!是单目运算符,其结合性是由右结合性。
3、C语言提供的三种逻辑运算符是&&、|| 、!。
其中优先级最高的为!,优先级最低的为| | 。
4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。
系统最终以0 和非0 来判定它们属于“真”或“假”。
5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。
6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式x<z||y<z 。
7、条件“2<x<3或x<-10”的C语言表达式是x<-10||x>2&&x<3。
8、判断char型变量ch是否为大写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。
9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。
10、当a=5,b=4,c=2时,表达式a>b!=c的值是1。
11、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A<B&&!C>B的值是0。
12、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是1。
13、有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。
14、有int x,y,z;且x=3,y=-4,z=5,则以下表达式的值为1。
!(x>y)+(y!=z)||(x+y)&&(y-z)15、有int a=3,b=4,c=5,x,y;,则以下表达式的值为0。
!(x=a)&&(y=b)&&016、if (!k) a=3;语句中的!k可以改写为k= =0,使其功能不变。
二、选择题1、逻辑运算符两侧运算对象的数据类型(D)。
A)只能是0或1B)只能是0或非0正数C)只能是整型或字符型数据D)可以是任何类型的数据2、以下关于运算符优先顺序的描述中正确的是(C)。
A)关系运算符<算术运算符<赋值运算符<逻辑与运算符B)逻辑与运算符<关系运算符<算术运算符<赋值运算符C)赋值运算符<逻辑与运算符<关系运算符<算术运算符D)算术运算符<关系运算符<赋值运算符<逻辑与运算符3、下列运算符中优先级最高的是(B)。
A)< B)+ C)&& D)!=4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式(D)。
A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122D)!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)5、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表达式是(C)。
A) (x>=1)&&(x<=100)&&(x>=200)&&(x<=300)B) (x>=1)||(x<=100)||(x>=200)||(x<=300)C) (x>=1)&&(x<=100)||(x>=200)&&(x<=300)D) (x>=1)||(x<=100)&&(x>=200)||(x<=300)6、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(D)。
A)‘x’&&‘y’B) x<=yC) x||y+z&&y-zD) !((x<y)&&!z||1)7、已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!y)的值是(C)。
A)0 B)语法错C)1 D)“假”8、设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为(B)。
A)1 B)2 C)3 D)49、以下不正确的if语句形式是(C)。
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<y) {x++; y++;}10、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是(B)。
if(x>y)z=x; x=y; y=z;A)x=10,y=20,z=30 B)x=20,y=30,z=30C)x=20,y=30,z=10 D)x=20,y=30,z=2011、以下if语句语法正确的是(B)。
A) if(x>0)printf(“%f”,x)else printf(“%f”,-x);B) B)if(x>0){ x=x+y; printf(“%f”,x);}else printf(“%f”,-x);C) C)if(x>0){ x=x+y; printf(“%f”,x);};else printf(“%f”,-x);D) D)if(x>0){ x=x+y; printf(“%f”,x)}else printf(“%f”,-x);12、请阅读以下程序:main(){int a=5,b=5,c=0;if(a==b+c) printf(“***\n”);else printf(“$$$\n”);}以下程序(C)。
A)有语法错不能通过编译B)可以通过编译但不能通过连接C)输出*** D)输出$$$三、写出下列程序的运行结果1、若运行时输入:2<回车>,则以下程序的运行结果是2nd class postage is 14p。
#include <stdio.h>void main(void){char Class;printf(“Enter 1 for 1st class post or 2 for 2nd post”);scanf(“%c”,&Class);if(Class==‘1’)prin tf(“1st class postage is 19p”);elseprintf(“2nd class postage is 14p”);}2、若运行时输入:4.4<回车>,则以下程序的运行结果是Selling Price(0.30)$5.72。
#include <stdio.h>void main(void){float CostPrice,SellingPrice;printf(“Enter Cost Price $:”);scan f(“%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);}}3、以下程序的运行结果是F。
main(){if(2*2==5<2*2==4)print(“T”);elseprintf(“F”);}能力提高(B)一、选择题1、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是(D)。
A)A%2==1 B)!(A%2==0) C)!(A%2) D)A%22、下列运算符中优先级最低的(A ),优先级最高的是(C)。
A)?: B)&& C)+ D)!=3、请阅读以下程序:main(){int a=5,b=0,c=0;if(a=b+c) p rintf(“***\n”);else printf(“$$$\n”);}以下程序(D)。
A)有语法错不能通过编译B)可以通过编译但不能通过连接C)输出*** D)输出$$$4、以下程序的运行结果是(C)。
main(){int m=5;if(m++>5) printf(“%d\n”,m);else print f(“%d\n”,m--);}A)4 B)5 C)6 D)7二、根据程序的功能,将以下程序补充完整1、以下程序对输入的四个整数,按从小到大的顺序输出。
请在内填入正确内容。
main(){int t,a,b,c,d;printf(“input a,b,c,d:”)scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);if(a>b) { t=a;a=b;b=t; }if (a>c) {t=a;a=c;c=t;}if (a>d) {t=a;a=d;d=t;}if ( b>c) {t=b;b=c;c=t;}if (b>d) {t=b;b=d;d=t;}if (c>d) {t=c;c=d;d=t;}printf(“%d,%d,%d,%d”,a,b,c,d);}三、编程:1、试编程判断输入的正整数是否既是5又是7的整倍数。
若是,则输出yes;否则输出no。
2、编制程序要求输入整数x、y和z,若x2+y2+z2大于1000,则输出x2+y2+z2千位以上的数字,否则输出三数之和。
3、编写程序,输入三角型的三条边长,求其面积。