【PTA选择/基础夯实/期末复习】C语言判断语句

2-1

在嵌套使用if语句时,C语言规定else总是(C

A.和之前与其具有相同缩进位置的if配对

B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对

D.和之前的第一个if配对

2-2

下列程序段的输出结果是(C)。

int main(void)
{   
      int  a = 2, b = -1, c = 2;
      
      if(a < b)
            if(b < 0)  
                  c = 0;
      else  c++;
      printf("%d\n",c);    
      
      return 0;
}

A.0

B.1

C.2

D.3

解析:在程序段中,首先定义了变量a、b、c,并分别赋值为2、-1、2。 接下来是if语句的嵌套。首先判断a是否小于b,显然条件不满足,所以if语句内部的代码块不会执行。 然后是else语句,它与前面的if语句是相对应的。由于if语句的条件不满足,所以else语句中的c++会执行,将c的值增加1。 最后通过printf函数输出c的值,即2。

2-3

在执行以下程序时,为使输出结果为:t=4,则给a和b输入的值应满足的条件是(C)。

int main(void)
{    
      int  a,b,s,t;

      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("t=%d\n",t);    
    
      return 0;
}

A.a>b

B.a

C.0

D.0>a>b

解析:

根据代码逻辑:

  1. 如果 a > 0,则 s = s + 1,此时 s 的值为 2。
  2. 如果 a > b,则 t = s + t,此时 t 的值为 3。
  3. 如果 a == b,则 t = 5。
  4. 否则,t = 2 * s,此时 t 的值为 4。

所以,为了使输出结果为 t = 4,应满足以下条件:

  • a > 0
  • a 不大于 b(即 a <= b

2-4

有一函数
 

33.png


,以下程序段中错误的是(C)。

A.

if(x > 0) y = 1;
else if(x == 0) y = 0;
else y = -1;

B.

y = 0;
if(x > 0) y = 1;
else if(x < 0) y = -1;

C.

y = 0;
if(x >= 0);
if(x > 0) y = 1;
else y = -1;

D.

if(x >= 0)
if(x > 0) y = 1;
else y = 0;
else y = -1;

2-5

下列程序段输出结果为 __B__。

int x = -3, y = 2;

if(x>y);
    x = -x;
if(x

A.x=3,y=-2

B.x=3,y=2

C.x=-3,y=2

D.x=-3,y=-2

解析:

  1. int x = -3, y = 2;:声明并初始化变量 x 和 y,分别赋值为 -3 和 2。
  2. if(x>y);:这是一个空的 if 语句,因为有一个分号 (;) 直接跟在 if 之后。它不会执行任何操作。
  3. x = -x;:将变量 x 取负值,即 x = -(-3),结果为 x = 3。

2-6

有如下程序:

#include 
int main()
{
    int a=2,b=-1,c=2;
    if(a)
        if(b<0) c=0;
    else c++;
    printf("%d\n",c);
    return 0;
}

该程序的输出结果是( )

A.0

B.1

C.2

D.3

2-7

下列条件语句中,功能与其他语句不同的是

A.if (a)printf(" %d\n", x); else printf(" %d\n", y);

B.if (a == 0)printf(" %d\n", y); else printf(" %d\n", x);

C.if (a != 0)printf(" %d\n", x); else printf(" %d\n", y);

D.if (a == 0)printf(" %d\n", x); else printf(" %d\n", y);

2-8

下列程序的运行结果是

#include 
int main (void)
{
    int a, b, c;
    a = 20; b = 30; c = 10;
    if (a < b)a = b;
    if (a >= b)b = c; c = a;
    printf("a=%d, b=%d, c=%d\n", a, b, c);
    return 0;
}

A.a=20, b=10, c=20

B.a=30, b=10, c=20

C.a=30, b=10, c=30

D.a=20, b=10, c=30

2-9

有定义语句“int a=1,b=2,c=3,x;”,则以下各程序段执行后,x的值不为3的是 C

A.

if(c

B.

if(a<3)x=3;
else if(a<2)x=2;
else x=1;

C.

if(a<3)x=3;
if(a<2)x=2;
if(a<1)x=1;

D.

if(a

2-10

语句if(x=0) y=1; else y=2;与( )等价。

A.if(x!=0) y=2; else y=1;

B.x=0; if(x==0) y=2; else y=1;

C.if(x==0) y=1; else y=2;

D.if(x=0) y=2; else y=1;

2-11

以下程序运行时,输入的x值在( )范围时才会有输出结果。

#include 

int main()
{
int x;
scanf("%d",&x);
if(x<=3);
else if(x!=10)
printf("%d\n",x);
return 0;
}

A.不等于10的整数

B.大于3且不等于10的整数

C.大于3且等于10的整数

D.小于3的整数

2-12

对于以下代码:

int i = 6;
if ( i <= 6 ) printf("hello\n");;
else printf("bye-bye\n");;

A.打印出"hello"

B.打印出"hello bye-bye"

C.不能通过编译

D.打印出"bye-bye"

2-13

设有定义:int a=2,b=4,c=5;,以下语句中执行效果与其它三个不同的是____。

A.if(a>b) c=a,a=b,b=c;

B.if(a>b) {c=a,a=b,b=c;}

C.if(a>b) c=a;a=b;b=c;

D.if(a>b) {c=a;a=b;b=c;}

2-14

已知int x=10,y=20,z=30;以下语句:if(x>y) z=x; x=y; y=z;执行后x,y,z的值是( )。

A.x=10, y=20, z=30

B.x=20, y=30, z=30

C.x=20, y=10, z=10

D.x=20, y=30, z=10

2-15

已知int x=10,y=20,z=30;以下语句:if(x

A.x=10, y=20, z=30

B.x=20, y=30, z=30

C.x=20, y=10, z=10

D.x=20, y=30, z=10

2-16

已知int x=10,y=20,z=30;以下语句:if(x

A.x=10, y=10, z=10

B.x=20, y=30, z=30

C.x=20, y=30, z=10

D.x=20, y=20, z=20

2-17

已知int x=10,y=20,z=30;以下语句:if(x

A.x=10, y=20, z=30

B.x=10, y=20, z=10

C.x=20, y=30, z=10

D.x=20, y=30, z=20

2-18

请阅读以下程序段:

    int a=5, b=0, c=0;
    if ( a=b+c )
      printf("Equal!\n");
    else
      printf("Not Equal!\n");

以上程序( )。

A.有语法错误不能通过编译

B.可以通过编译但是不能通过连接

C.输出 Not Equal!

D.输出 Equal!

解析:变量 a 被赋值为 b+c 的结果,因此 a 的值为 0。由于 0 为 false,所以条件语句为假,执行 printf("Not Equal!\n")

2-19

以下if-else语句语法正确的是( )。

A.

if(x>0)
printf("%f",x)
else printf("%f",-x);

B.

if(x>0)
{x=x+y; printf("%f",x);}
else printf("%f",-x);

C.

if(x>0)
{x=x+y; printf("%f",x);};
else printf("%f",-x);

D.

if(x>0)
{x=x+y; printf("%f",x)}
else printf("%f",x-);

2-20

有以下程序

 #include 
 main()
 {
    int x;
    scanf("%d",&x);
    if(x>10) printf("1");
    else if(x>20) printf("2");
    else if(x>30) printf("3");
 }

若运行时输入:35<回车>,则输出结果是( )。

A.1

B.2

C.3

D.123

2-21

为了检查以下if-else语句的两个分支是否正确,至少需要设计3组测试用例,其相应的输入数据和预期输出结果是( ) 。

int x, y;
scanf("%d%d", &x, &y);
if(x >= y){
    printf("max = %d\n", x);
}else{
    printf("max = %d\n", y);
}

A.输入3和4,输出4;输入5和100,输出100;输入4和3,输出4。

B.输入3和4,输出4;输入100和5,输出100;输入4和3,输出4。

C.输入3和4,输出4;输入5和5,输出5;输入-2和-1,输出-1。

D.输入3和4,输出4;输入5和5,输出5;输入4和3,输出4。

2-22

下列关于算法流程图规范的说法,错误的是?

A.使用矩形表示开始、结束

B.使用平行四边形来表示输入、输出

C.使用菱形表示判断

D.使用箭头表示执行方向

2-23

已知int a=7,b=9,c=6;则c的结果是( ).

{
      if(a

A.9

B.6

C.0

D.7

2-24

下列程序段输出结果为 ( )。

int x = -3, y = 4;

if (x

   x = -x;

else

   if  (x>y)
        y = -y;

printf("%d,%d", x, y);

A.3,-4

B.-3,-4

C.3,4

D.-3,4

2-25

以下程序运行时,若从键盘输入5,则输出结果是( )。

main( )

{ int a;

scanf("%d",&a);

if(a++>5)

    printf("%d\n",a);

else

    printf("%d\n",--a);

}

A.6

B.5

C.4

D.程序有错

2-26

以下四个选项中不能看作一条语句的是________。

A.{;}

B.a=0,b=0,c=0;

C.if(a>0);
D.if(b==0) m=1;n=2;

2-27

若执行以下程序时从键盘上输入9,则输出结果是_________。

#include "stdio.h"
void main( )
{
int n;
scanf("%d",&n);
if (n++<10)
printf("%d\n",n);
else
printf("%d\n",n--);
}

A.11

B.10

C.9

D.8

2-28

下面的条件语句中(其中S1和S2表示C语言语句),( )在功能上与其他三个语句不等价。

A.if (a==0) S1; else S2;

B.if (a==0) S2; else S1;

C.if (a!=0) S1; else S2;

D.if (a) S1; else S2;

2-29

有以下程序:

void main( )
{  int  x,t=1;
scanf("%d" , &x);
if(x<=5) t++;  
else if(x!=20)
 printf("%d\n" , x);
}

程序运行时,输入的值在哪个范围才会有输出结果( )

A.不等于20的整数

B.大于5且不等于20的整数

C.大于5或等于20的整数

D.小于5的整数

2-30

关于 if 语句(判断)

关于 if 语句

与 if (x) 等价的语句是 ▁▁▁▁▁。

A.if (x == 0)

B.if (x == 1)

C.if (x != 0)

D.if (x != 1)

2-31

若k是int型变量,且有下面的程序片段,上面程序片段的输出结果是
k=-3
if(k<=0) printf("####")
else printf("&&&&");

A.

B.&&&&

C.####&&&&

D.有语法错误,无输出结果

2-32

若执下面程序时从键盘上输入5,则输出是

main()
{
    int x;
    scanf("%d",&x);
    if(x++>5) printf("%d\n",x);
    else printf("%d\n",x--);
}

A.7

B.6

C.5

D.4

解析: 在程序中,首先使用scanf函数从键盘输入一个整数,并将其赋值给变量x。 接下来是if语句,判断x++是否大于5。这里需要注意的是x++是后缀自增运算符,它会先将x的值进行比较,然后再将x的值加1。 假设输入的数为5,则x的值为5。在比较过程中,x的值还是5,因此不满足条件。

由于if语句的条件不满足,所以执行else语句中的代码块。在printf函数中,先输出x的值,即6,然后再进行x--操作,将x的值减1。

2-33

两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
main( )
{
int x;
scanf("%d",&x);
if(x++>5)
printf("%d",x);
else
printf("%d\n",x--);
}

A.7和5

B.6和3

C.7和4

D.6和4

2-34

以下程序的运行结果是
main( )
{ int n=5;
if(n++>=6)
printf("%d\n",n);
else
printf("%d\n",++n);
}

A.7

B.6

C.5

D.4

2-35

若执行下面的程序时从键盘上输入3和4,则输出是。
main()
{
int a,b,s;
scanf("%d %d",&a,&b);
s=a;
if(a s=b;
s=s*s;
printf("%d\n",s);
}

A.14

B.16

C.18

D.20

2-36

下面的程序运行结果为。
main()
{
int x=3,y=0,z=0;
if(x=y+z) printf("* * * *");
else printf("# # # #");
}

A.有语法错误不能通过编译

B.输出* * * *

C.可以通过编译,但是不能通过连接,因而不能运行

D.输出# # # #

2-37

若有定义:int x=1,y=2,z=4;则以下程序段运行后z的值为。
if(x>y) z=x+y;
else z=x-y;

A.3

B.-1

C.4

D.不确定

2-38

如有定义:int i=1; 则执行语句 if( i++ > 1) printf("%d",i++); 后,变量i的值是:

A.1

B.2

C.3

D.不确定

2-39

下面程序段的输出为:
int a=3, b=5;
if(a=b)printf("%d=%d",a, b);
else printf("%d!=%d", a, b);

A.5=5

B.3=3

C.5!=3

D.3!=5

2-40

下列叙述中正确的是()。

A.break语句只能用于switch语句

B.在switch语句中必须使用default

C.break语句必须与switch语句中的case配对使用

D.在switch语句中,不一定使用break语句

2-41

下列程序段的输出结果是 ()。

int main(void)
{     
      int x = 1, a = 0, b = 0;
      
      switch(x)        
      {
            case 0:   b++;
            case 1:   a++;
            case 2:   a++; b++;    
      }
      printf("a=%d,b=%d\n",a,b);        

      return 0;
}

A.a=2,b=1

B.a=1,b=1

C.a=1,b=0

D.a=2,b=2

2-42

若有int x=67;,执行下列程序段后,变量x的正确结果是 ( )。

switch (x/10)
{
    case 7:
    case 6: printf("A");
    case 5: printf("B");break;
    default: printf("C");
}

A.ABC

B.A

C.AB

D.C

2-43

设变量已正确定义,以下( )与其它switch语句不等价。

A.

switch(choice){
    case 1: price = 3.0; break;
    case 2: price = 2.5; break;
    case 3: price = 4.0; break;
    case 4: price = 3.5; break;
    default: price = 0.0; break;
}

B.

switch(choice){
    default: price = 0.0; break;
    case 4: price = 3.5; break;
    case 3: price = 4.0; break;
    case 2: price = 2.5; break;
    case 1: price = 3.0; break;
}

C.

switch(choice){
    case 1: price = 3.0; break;
    case 2: price = 2.5; break;
    case 3: price = 4.0; break;
    case 4: price = 3.5; break;
}

D.

price = 0.0;
switch(choice){
    case 1: price = 3.0; break;
    case 2: price = 2.5; break;
    case 3: price = 4.0; break;
    case 4: price = 3.5; break;
}

2-44

请读程序:

#include

int 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\n",a,b);

     return 0;
}

上面程序的输出结果是:

A.a=2, b=1

B.a=1, b=1

C.a=1, b=0

D.a=2, b=2

2-45

若a,b,c1,c2,x,y均是整型变量,正确的switch语句是:

A.

switch(a-b)
{        default: y=a*b; break;
         case 3: case 4: x=a+b; break;
         case 10: case 11: y=a-b; break;
}

B.

switch(a+b);
{       case 1: y=a+b; break;
        case 0: y=a-b; break;
}

C.

switch(a*a+b*b)
{       case 3:
        case 1: y=a+b; break;
        case 3: y=b-a; break;
}

D.

switch a
{       case c1: y=a-b; break;
        case c2: x=a*d; break;
        default: x=a+b;
}

解析: 在A选项中,switch语句的表达式为a-b。switch语句根据表达式的值进行匹配,然后执行相应的代码块。 在这个例子中,如果a-b的值不匹配任何一个case,就会执行default中的代码块,即y=a*b; break;。

B选项中,switch语句的表达式后多了一个分号,会导致switch语句失效。

C选项中,switch语句的表达式为aa+bb,但是存在两个相同的case 3,这是不允许的。

D选项中,switch语句缺少了圆括号,并且case后的值应该是常量而不是变量c1和c2。

2-46

若有int x=1;,执行下列程序段后,变量x的正确结果是:

switch (x*10)
{
    case 9: x+=1; break;
    case 10: x+=1;
    case 11: x+=1;
    default: x+=1;
}

A.1

B.2

C.3

D.4

2-47

执行以下代码段后,变量i 的值为( )。

int i=1;
switch (i) {
    case 1: i+=10;
    case 2: i+=20;
    case 3: i++; break;
    default: i++; break;
}

A.11

B.31

C.33

D.32

2-48

以下关于switch语句和break语句的描述中正确的是( )

A.在switch语句中必须使用break语句

B.break语句只能用于switch语句体中

C.break语句只能用于循环语句中

D.在switch语句中可以不使用break语句

2-49

若 int i=10; 执行下列程序后,变量 i 的正确结果是( )。

switch (i) { 
    case   9: i+=1 ; 
    case  10: i+=1 ; 
    case  11: i+=1 ; 
    default  : i+=1 ; 
} 

A.10

B.11

C.12
D.13

2-50

若有定义int s=5;则执行下面的程序段后,s的值是( ).

switch(++s)
{  case 6:
   case 7:s+=2;
   case 8:
   case 9:s+=2;
}

A.10

B.7

C.8

D.6

2-51

以下程序段运行后,输出结果是:

    int x = 10;
    switch (x)
    {
        case 30: printf("A");break;
        case 10: printf("B");
        case 20: printf("C");break;
        case 40: printf("D");
    }
    printf("E");

(1分)

A.ABCDE

B.ABCE

C.BCDE

D.BCE

2-52

在switch结构中,可使用( )语句来终止其中的一个case语句块

A.over

B.end

C.break

D.continue

你可能感兴趣的:(c语言,算法,开发语言)