第五章 选择结构程序设计
基础练习(A)
一、填空题
1、关系表达式的运算结果是  逻辑  值。C语言没有逻辑型数据,以 1  代表“真”,以  0代表“假”。
2、逻辑运算符!是  单目  运算符,其结合性是由   右结合性 
3C语言提供的三种逻辑运算符是  switch语句表示范围&&    ||   !    。其中优先级最高的为   !  ,优先级最低的为  | |  
4、逻辑运算符两侧的运算对象不但可以是01,或者是0和非0的整数,也可以是任何类型的数据。系统最终以  0     0   来判定它们属于“真”或“假”。
5、设yint型变量,请写出描述“y是偶数”的表达式  (y%2==0)  
6、设xyz均为int型变量,请写出描述“xy中有一个小于z”的表达式 x<z||y<z
7、条件“2<x<3x<-10”的C语言表达式是   x<-10||x>2&&x<3   
8判断char型变量ch是否为大写字母的正确表达式是   (ch>=A)&&(ch<=Z) 
9a=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)&&0
16if (!k) a=3;语句中的!k可以改写为 k= =0  ,使其功能不变。
二、选择题
1、逻辑运算符两侧运算对象的数据类型( D )。
A)只能是01
B)只能是0或非0正数
C)只能是整型或字符型数据
D)可以是任何类型的数据
2、以下关于运算符优先顺序的描述中正确的是( C )。
A)关系运算符<算术运算符<赋值运算符<逻辑与运算符
B)逻辑与运算符<关系运算符<算术运算符<赋值运算符
C)赋值运算符<逻辑与运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑与运算符
3、下列运算符中优先级最高的是( B )。
A<        B+        C&&        D!=
4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式( D
Ac<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122
B!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)
Cc>=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的取值在[1100]和[200300]范围内为真,否则为假”的表达式是( 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、设xyzint型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(  D  )。
A)x&&y
B) x<=y
C) x||y+z&&y-z
D) !((x<y)&&!z||1)
7、已知x=43,ch=A,y=0;则表达式(x>=y&&ch<B&&!y)的值是( C  )。
A0        B)语法错        C1        D)“假”
8设有:int a=1,b=2,c=3,d=4,m=2,n=2;
    执行(m=a>b)&&(n=c>d)n的值为(  B  )。
A1        B2        C3        D4
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<y) {x++; y++;}
10、已知int x=10,y=20,z=30;以下语句执行后xyz的值是(  B  )。
    if(x>y)
    z=x; x=y; y=z;
Ax=10,y=20,z=30        Bx=20,y=30,z=30
Cx=20,y=30,z=10        Dx=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 <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)
                printf(“1st class postage is 19p”);
            else
                printf(“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 $:”);
            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);
            }
    }
3、以下程序的运行结果是 F 
    main()
    {
            if(2*2==5<2*2==4)
                print(“T”);
            else
                printf(“F”);
    }
能力提高(B)
一、选择题
1、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( D )。
AA%2==1    B!(A%2==0)    C!(A%2)    DA%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--);
    }
A4        B5        C6        D7
二、根据程序的功能,将以下程序补充完整
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、编制程序要求输入整数xyz,若x2+y2+z2大于1000,则输出x2+y2+z2千位以上的数字,否则输出三数之和。
3编写程序,输入三角型的三条边长,求其面积。注意:对于不合理的边长输入要输出数
据错误的提示信息。
1参考答案
main()
{ int x;
if (x%5==0 && x%7==0)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。