第五章 选择结构程序设计
基础练习(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
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=,B=2,C=,表达式A>B&&C>A||AB的值是 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)&&0
16、if (!k) a=3;语句中的!k可以改写为 k= =0 ,使其功能不变。 二、选择题
1、逻辑运算符两侧运算对象的数据类型( D )。 A)只能是0或1
B)只能是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>=122 B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122) C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D)!(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<=y
C) x||y+z&&y-z D) !((x 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)4 9、以下不正确的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 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=30 C)x=20,y=30,z=10  D)x=20,y=30,z=20 11、以下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 <>  void main(void)  {    char Class;    printf(“Enter 1 for 1st class post or 2 for 2nd post”);    scanf(“%c”,&Class);     if(Class==‘1’)     printf(“1st class postage is 19p”);    else     printf(“2nd class postage is 14p”);  }  2、若运行时输入:<回车>,则以下程序的运行结果是 Selling Price$    。  #include <>  void main(void)  {    float CostPrice,SellingPrice;    printf(“Enter Cost Price $:”);    scanf(“%f”,&CostPrice);    if(CostPrice>=5)    {     SellingPrice=CostPrice+CostPrice*;     printf(“Selling Price$%6.2f”,SellingPrice);    }    else    {     SellingPrice=CostPrice+CostPrice*;     printf(“Selling Price$%6.2f”,SellingPrice);    }  }  3、以下程序的运行结果是 F 。  main()  {    if(2*2==5<2*2==4)     print(“T”);    else     printf(“F”);  }  能力提高(B)  一、选择题  1、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”, 则以下不能满足要求的表达式是( D )。  A)A%2==1 B)!(A%2==0) C)!(A%2) D)A%2 2、下列运算符中优先级最低的( A ),优先级最高的是( C  )。 A):  B)&&  C)+  D)!= 3、请阅读以下程序:  main()  {    int a=5,b=0,c=0;    if(a=b+c) printf(“***\\n”);    else  printf(“$$$\\n”);  }  以下程序( D )。 A)有语法错不能通过编译  B)可以通过编译但不能通过连接 C)输出***     D)输出$$$ 4、以下程序的运行结果是( C )。  main()  {    int m=5;    if(m++>5) printf(“%d\\n”,m);       else  printf(“%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、编写程序,输入三角型的三条边长,求其面积。注意:对于不合理的边长输入要输出数据错误的提示信息。 1、参考答案 main() { int x;  if (x%5==0 && x%7==0)   printf(“yes”); else    printf(“no”); }  2、参考答案 main()  { int x,y,z,a,b;  scanf(“%d %d %d”,&x,&y,&z); a=x*x+y*y*z*z; if (a>1000)  {b=a/1000;printf(“%d”,b);} else printf(“%d”,x+y+z); }  3、参考答案 #include  <> main()  { float a,b,c,s,area;  scanf(“%f,%f,%f”,&a,&b,&c);  if (a+b>c && b+c>a  &&  a+c>b) { s=2*(a+b+c);  area=sqrt(s*(s-a)*(s-b)*(s-c));  printf(“area=%7.2f\\n”,area);} else  printf(“bu neng  zhucheng san jiao xing \\n”); }   第2讲  基础练习(A)  一、填空题  1、在if语句中又包含一个或多个if语句称为  if语句的嵌套       。  2、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与其之前最近的未配对的if  配对。如果if 与else数目不一样,为实现设计者的企图,可以加    花括号 关系。  3、条件运算符是C语言中唯一的一个  三    目运算符,其结合性为   从右至左    。 4、假设条件表达式的格式为:表达式1表达式2:表达式  若表达式2和表达式3的类型不同,此时条件表达式的值的类型为二者中较  高   的类型 5、在switch语句中,switch后面括弧内的“表达式”,可以为    任何   类型。 6、若a=1,b=2,则表达式a>ba:b+1的值是  3   。  7、若w=1、x=2、y=3、z=4,则条件表达式w else  min=b;  可用条件运算符来处理的等价式子为     min=(a 10、设有变量定义:int a=5,c=4;则(--a==++c)--a:c++的值是   5   ,此时c的存储单元的值 为    6    。 二、判断题  1、在switch语句中,每一个的case常量表达式的值可以相同。(  错  ) 2、在switch语句中,各个case和default的出现次序影响执行结果。(   对) 3、在switch语句中,多个case可以共用一组执行语句。(对  ) 4、 条件表达式能取代一般if的语句。(    错  ) 5、 case后的常量表达式类型一定与表达式类型匹配。(   对   ) 三、写出以下程序的运行结果 1、    main()               -1 {    int a=2,b=3,c;    c=a;    if(a>b) c=1;    else if(a==b) c=0;    else c=-1;    printf(“%d\\n”,c);  }  2、   main()               2    0   0  {    int a,b,c;    int s,w,t;    s=w=t=0;    a=-1; b=3; c=3;    if(c>0) s=a+b;    if(a<=0)    {     if(b>0)      if(c<=0) w=a-b;    } 
相关推荐: