【C語言04】選擇結構題目、知識點彙總(部分)

1. 關係表達式的運算結果是  邏輯  值。C語言沒有邏輯型數據,以 1  代表“真”,以 0代表“假”。

2. 邏輯運算符!是   單目   運算符,其結合性是由   從右向左 

3. 邏輯運算符兩側的運算對象不但可以是0和1,或者是0和非0的整數,也可以是任何類型的數據。系統最終以    非0       0    來判定它們屬於“真”或“假”。

4. 設x,y,z均爲int型變量,請寫出描述“x或y中有一個小於z”的表達式 x<z||y<z

5. 條件“2<x<3或x<-10”的C語言表達式是    x<-10||x>2&&x<3   

6. 以下關於運算符優先順序的描述中正確的是(  )。

    A)關係運算符<算術運算符<賦值運算符<邏輯與運算符

    B)邏輯與運算符<關係運算符<算術運算符<賦值運算符

    C)賦值運算符<邏輯與運算符<關係運算符<算術運算符

    D)算術運算符<關係運算符<賦值運算符<邏輯與運算符

    答案:C

7. 下列運算符中優先級最高的是(  )。

    A)<         B)+             C)&&          D)!=

    答案:B,賦值運算符<邏輯與運算符<關係運算符<算術運算符

8. 爲判斷字符變量c的值不是數字也不是字母時,應採用下述表達式( )。

    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)

    答案:D,數字的ASCII碼從48到57,大寫字母爲65到90,小寫字母爲97到122

9. 能正確表示“當x的取值在[1,100]和[200,300]範圍內爲真,否則爲假”的表達式是( )。

    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)

    答案:C,和,即邏輯或關係

10.已知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

答案:B,在沒有{}的前提下,if的控制範圍只限於下面的第一條語句。

11. 下列運算符中優先級最低的( A ),優先級最高的是()。

A?:        B&&          C+             D!=

12. 在if語句中又包含一個或多個if語句稱爲    if語句的嵌套     

13. 爲了避免在嵌套的條件語句if-else中產生二義性,C語言規定:else子句總是與 於此之前最近的未匹配的if 配對。如果if else數目不一樣,爲實現設計者的企圖,可以加   花括號  關係。

14. 條件運算符是C語言中唯一的一個    目運算符,其結合性爲   從右至左    

15.假設條件表達式的格式爲:表達式1?表達式2:表達式3,若表達式2和表達式3的類型不同,此時條件表達式的值的類型爲二者中較     的類型

16. 設有變量定義:int a=5,c=4;則(--a==++c)?--a:c++的值是      ,此時c的存儲單元的值爲     

答案:5,6;(4==5)?4:5++,5++執行完後加1

17. 分析程序運行結果:

main()
{
	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;
	}else if ( c > 0 )
		w = a - b;
	else
		t = c;
	printf( “ % d % d % d ”, s, w, t );   
}

結果:2 0 0;注意if-else語句的結構

18. 分析程序運行結果:若grade的值爲 ’C’,則輸出結果是___  

switch(grade)        
{
    case  ‘A’: printf(“85-100\n”);
    case  ‘B’: printf(“70-84\n”);
    case  ‘C’: printf(“60-69\n”);
    case  ‘D’: printf(“<60\n”);
    default: printf(“error!\n”);
}
 

結果:

60-69

<60

error!

19. 分析程序運行結果:

#include <stdio.h>
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 < 0 )
		if ( y > 0 )
			x = 4;
		else x = 5;
	printf( "\t%d\n",x);
}

結果:5 5 1

20. 分析程序運行結果:

#include <stdio.h>
void main( void )
{
	int x, y = -2, z;
	if ( (z = y) < 0 )
		x = 4;
	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    -2

4    0

4    -2

21. 分析程序運行結果:

#include <stdio.h>
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 );
}

結果:a=2,b=1

/////////////////////////////////////////////////////////////////////////////////////////分割線////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

1. 以下非法的賦值語句是

A:n=(i=2,++i);

B: j++;

C: ++(i+1);

D: x=j>0;

答案:C

2. 閱讀以下程序:

main()

{  int x; scanf(“%d”,&x);

    if(x--<5) printf(“%d”,x);

    else printf(“%d”,x++); }

程序運行後,如果從鍵盤上輸人5,則輸出結果是( )。

A: 3

B: 4

C: 5

D: 6

答案:B

3. 下面的程序段中共出現了幾處語法錯誤?

int a,b;

scanf("%d",a);

b=2a;

if(b>0)

printf("%b",b);

A: 1

B: 2

C: 3

D: 4

答案:C

4. C 語言中,邏輯“真”等價於

A: 大於零的數

B: 大於零的整數

C: 非零的數

D: 非零的整數

答案:C

5. C 語言的 switch 語句中,case 後

A: 只能爲常量

B: 只能爲常量或常量表達式

C: 可爲常量及表達式或有確定值的變量及表達式

D: 可爲任何量或表達式

答案:B

6. 程序運行結果是

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

答案:B

7. 下列表達式中能表示a 在0 到100 之間的是

A: a>0&a<100

B: !(a<0||a>100)

C: 0<a<100

D: !(a>0&&a<100)

答案:B

8. 已知:int x,a,b;下列選項中錯誤的if 語句是

A: if(a=b) x++;

B: if(a<=b) x++;

C: if(a-b) x++;

D: if(x) x++;

答案:B

9. 當把以下四個表達式用作if 語句的控制表達式時,有一個選項與其它三個選項含義不同,這個選項是( )。

A: k%2

B: k%2==1

C: (k%2)!=0

D: !k%2==1

答案:D

10. 以下4 個選項中,不能看作一條語句的是

A: {;}

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

C: if(a>0);

D: if(b==0) m=1;n=2;

答案:D

11. if 語句的基本形式是:if(表達式)語句,以下關於“表達式”值的敘述中正確的是

A)必須是邏輯值

B)必須是整數值

C)必須是正數

D)可以是任意合法的數值

答案:D

12. 有以下程序段

int i, n; for ( i = 0; i < 8; i++ )
{
	n = rand() % 5; switch ( n )
	{
	case 1: 
        case 3: printf( "%d\n", n ); break; 
        case 2: 
        case 4: printf( "%d\n", n ); continue;
        case 0: exit( 0 );
	}
	printf( "%d\n", n );
}

以下關於程序段執行情況的敘述,正確的是

A)for 循環語句固定執行 8 次

B)當產生的隨機數 n 爲 4 時結束循環操作

C)當產生的隨機數 n 爲 1 和 2 時不做任何操作

D)當產生的隨機數 n 爲 0 時結束程序運行

答案:D

13. .有以下程序

#include 
main()
{ 
    int x=1,y=0; 
    if(!x) y++; 
    else if(x==0) 
    if (x) y+=2; 
    else y+=3; 
    printf("%d\n",y); 
} 

程序運行後的輸出結果是

A)3

B)2

C)1

D) 0

答案:D

14. 有以下程序:

#include
main()
{ 
    int a=0,b=0,c=0,d=0; 
    if(a=1)
        b=1;
        c=2; 
    else 
        d=3; 
    printf("%d,%d,%d,%d",a,b,c,d); 
} 

程序輸出( )

A)1,1,2,0

B)0,0,0,3

C)編譯有錯

D) 0,1,2,0

答案:C,程序中if子句後面有2條語句b=1c=2;需要用{}括起來,成爲一條複合語句,否則else找不到與之配對的if,所以編譯出錯。

15. 若有定義 int x, y; 並已正確給變量賦值,則以下選項中與表達式(x-y)?(x++) : (y++)中的條件表達式(x-y) 等價的是( )

A)(x-y<0||x-y>0)

B)(x-y<0)

C)(x-y>0)

D)(x-y==0)

答案:A本題考查的知識點是邏輯表達式。C語言編譯系統在給出邏輯運算結果時,以數值1代表“真”,以0代表“假”,但在判斷一個量是否爲“真”時,以0代表“假”,以非0代表“真”。即將一個非零的數值認作爲“真”。要讓本題中的條件表達式(x-y)的結果爲真,也就是要使(x-y)的值非零,即大於0或者小於0,故等價的表達式應該是選項C

16. 有以下程序:

#include 
main()
{ 
    int x=1,y=0; 
    if ( !x )
        y++; 
    else if (x==0) 
    if(x)
        y+=2; 
    else
        y+=3; 
    printf("%d\n",y); 
} 

程序運行後的輸出結果是( )

A) 3

B) 2

C) 1

D) 0

答案:D;判斷if(!x)後,爲假,轉至else if(x==0),依然是假;故不執行if(x)

17. 若有定義: float x=1.5; int a =1,b=3,c=2;則正確的 switch 語句是()

 A) switch(a+b)

{case 1:  printf("*\n");

case 2+1: printf("**\n");}

B) switch( (int)x );

{ case 1: printf("*\n");

  case 2 : printf("**\n");}

C) switch( x );

{ case 1.0: printf("*\n");

  case 2.0 : printf("**\n");}

D) switch( a+b )

{ case 1: printf("*\n");

 case c: printf("**\n");}

答案:A;switch後的括號中只能是整型或字符型表達式,switchcase標號後只能是常量或常量表達式,選項B的switch後面有分號;選項C的x是浮點型;選項D的case後面是c

18. 設有宏定義:

#define IsDIV(k,n) ((k%n==1) ? 1:0)

且變量 m 已正確定義並賦值,則宏調用:

IsDIV(m,5) && IsDIV(m,7)

爲真時所要表達的是:

 A) 判斷 m 是否能被 5 和 7 整

B) 判斷 m 被 5 和 7 整除是否都餘 1

C) 判斷 m 被 5 或者 7 整除是否餘 1

D) 判斷 m 是否能被 5 或者 7 整除

答案:B

19. 有以下程序

#include <stdio.h>

main()

{ int a=1, b=2, c=3, x;

 x=(a^b)&c;

printf("%d\n",x);}

程序運行結果是

A) 3

B) 1

C) 2

D) 0

答案:A

20. 有以下程序

#include <stido.h>

main()

{ int x;

scanf("%d",&x);

 if(x<=3)

else if(x!=10)

 printf("%d\n",x);}

程序運行時,輸入的值在哪個範圍纔會有輸出結果()

A) 小於 3 的整數

B) 不大於 10 的整數

C) 大於 3 或等於 10 的整數

D) 大於 3 且不等於 10 的整數

答案:D

21. 若有以下程序

#include <stdio.h> 
main()
{ 
    int a=1,b=2,c=3,d=4,r=0; 
    if(a!=1) 
     ; 
    else r=1; 
    if(b==2)  
    r+=2; 
    else
     ; 
    if(c!=3)
    r+=3; 
    else
     ; 
    if(d==4) 
    r+=4; 
    printf("%d\n",r);
}

則程序的輸出結果是()

A.10

B.7

C.6

D.3

答案:B

22. C 語言中用___非0__表示邏輯值,用___0__表示邏輯值

23. C 語言中的關係運算符"=="的優先級___高於__ 邏輯運算符&&的優先級

24. 將下列數學式改寫成 C 語言關係表達式或邏輯表達式

A) a=b 或 a<c               

B) |x|>4

__a==b||a<c___

__x<-4||x>4___

25.請寫出與以下表達式等價的表達式

A) !(x>0)        

  B)  !0

__x<=9___

__ 1__  

 

--------------------我--------------------是--------------------分--------------------割--------------------線----------------------------------------

1. 邏輯運算符兩側運算對象的數據類型()。

A.只能是0或1

B.只能是0或非0正數

C.只能是整型或字符型數據

D.可以是任何類型的數據

答案:D

2. 以下程序的輸出結果是()

#include ”stdio.h”
main()
{ 
    int v1=0,v2=0;
    char ch;
    while ( (ch=getchar()) != ’# ’)
    switch (ch)
    { case ’a’:
      case ’h’:
      default: v1++;
      case ’o’: v2++;
    }
    printf(”%d,%d\n”, v1,v2);
}

A.2,0          B.5,0            C.5,5             D.2,5

答案:C;執行完一個case後面的語句後,流程控制移到下一個case繼續執行。“case常量表達式”只是起語句標號作用,並不是在該處進行條件判斷。在執行switch語句時,根據switch後面表達式的值找到匹配的入口標號,就從此標號開始執行下去,不再進行判斷。

3. 有以下程序,若輸入爲字符s,則程序運行結果爲()。

#include ”stdio.h”
main()
{
    char ch;
    ch=getchar();
    switch (ch)
    { case ’a’: printf(”a=%c\n”,ch);
      default: printf(”end!\n”); 
      case ’b’: printf(”b=%c\n”,ch);
      case ’c’: printf(”c=%c\n”,ch);
    }
}

結果:

end!

b=s

c=s

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章