《電腦程式設計基礎(C語言)》通用

2021-02-25 學生之家考前必備

《電腦程式設計基礎(C語言)》

通用

單項選擇練習題


說明:帶*號的對非信息學院的同學不作要求。

一、基本概念

1. C語言程序是由    C        構成的。

A)一些可執行語言  B)main函數   C)函數   D)包含文件中的第一個函數

2.( A  )是構成C語言程序的基本單位。

A、函數        B、過程       C、子程序    D、子例程

3.C語言程序從     C          開始執行。

   A) 程序中第一條可執行語句     B) 程序中第一個函數

   C) 程序中的main函數          D) 包含文件中的第一個函數

4.C語言程序從main()函數開始執行,所以這個函數要寫在_D___。

A) 程序文件的開始           B) 程序文件的最後

C) 它所調用的函數的前面     D) 程序文件的任何位置

5、以下說法中正確的是(  C  )。

   A、C語言程序總是從第一個定義的函數開始執行

   B、在C語言程序中,要調用的函數必須在main( )函數中定義

   C、C語言程序總是從main( )函數開始執行

   D、C語言程序中的main( )函數必須放在程序的開始部分

6. 下列方法中錯誤的是(D )。

A.主函數可以分為兩個部分:主函數說明部分和主函數體。

B.主函數可以調用任何非主函數的其它函數。

C.任何非主函數可以調用其它任何非主函數。

D.程序可以從任何非主函數開始執行。

7. 下列說法錯誤的是:(  B )

A.  C程序運行步驟是編輯、編譯、連接、執行。

B.  C語言的變量名必須用小寫,常量用大寫。

C.  C語言的三種基本結構是順序、選擇、循環。

D. C程序一定由函數構成的。

8.下列關於C語言的說法錯誤的是( B   )       。

A) C程序的工作過程是編輯、編譯、連接、運行

B) C語言不區分大小寫。

C) C程序的三種基本結構是順序、選擇、循環

D) C程序從main函數開始執行

9. 系統默認的C語言源程序擴展名為.C,需經過  C   之後,生成.exe文件,才能運行。

   A) 編輯、編譯     B )編輯、連接    C) 編譯、連接     D) 編輯、改錯

*10.下列說法中正確的是(B )。

A.由於C源程序是高級語言程序,因此一定要在TC軟體中輸入。

B.由於C源程序是由字符流組成的,因此可以作為文本文件在任何文本編輯的軟體中輸入。

C.由於C程序是高級語言程序,因此輸入後即可執行。

D.由於C程序是高級語言程序,因此它是由命令組成的。

 

二、數據類型、運算符與表達式

1. 不是C語言提供的合法關鍵字是(B )。

A.switch     B.cher     C.case     D.default

*2.C語言提供的合法關鍵字是(D )。

A.next            B.string        C.do case       D.struct

*3.下列不屬於C語言中關鍵字的是   B       

A)long   B)print   C)default    D)typedef

4.下列正確的標識符是(C )。

A.-a1             B.a[i]          C.a2_i          D.int t

5. 下列C語言用戶標識符中合法的是( B  )。

   A、*y     B、sum     C、int       D、%5f   

6. 下面四個選項中,合法的標識符是:( D )

     A. auto     B. define     C. 6a      D. c

7.下列C語言用戶標識符中合法的是( B )。

     A)3ax   B)x   C)case   D)-e2    E)union

8. 以下選項中合法的用戶標識符是  B    

A) long                    B) _2Test             C) 3Dmax           D) A.dat

9.下列四組選項中,正確的C語言標識符是( C  )。

A)  %x           B)   a+b       C)  a123          D) 123

10. 請選出可用作C語言用戶標識符的一組標識符(  B )

A) void          B) a3_b3                    C) For               D) 2a

define            _123                -abc             DO

WORD              sum                 Case            sizeof

11、下列四組字符串中都可以用作C語言程序中的標識符的是( A )。

   A、print  _3d   db8  aBc     B、I\am  one_half  start$it  3pai

   C、str_1  Cpp  pow  while    D、Pxq  My->book  line#  His.age 

12.下列C語言標識符中合法的變量名是  B    。

        A)2e3       B)you       C)*y    D)float

13.C語言中的簡單數據類型包括(D  )。

   A、整型、實型、邏輯型        B、整型、實型、邏輯型、字符型

   C、整型、字符型、邏輯型      D、整型、實型、字符型

14、下列可以正確表示字符型常量的是( A )。

   A、』\t』    B、」a」    C、」\n」    D、297

15.下列表達式中,   D   是正確的C語言字符常量。

        A)」x」   B)e3   C)」COMPUTER」   D)』#』

16.在下列表達式中,屬於字符型常量的是     B        。

A) A       B) 'a'         C) "A"         D) b

17. 以下選項中合法的字符常量是( B )

 A) 「B」       B) 『\n』      C) 『68』        D) E

18.下面字符常量表示錯誤的是( D )

     A)』a』    B)』?』   C)』\n』  D)」\n」

19. 已定義c為字符型變量,則下列語句中正確的是 ( C )   

A)c='97'     B)c="97"     C)c=『a』     D)c="a"

20. 已知ch是字符型變量,不正確的賦值語句是(   A    )  

    A) ch='a+b' ;                 B) ch=' \0 ' ;                                  

    C) ch=' 7' ;                  D) ch=』;』;

21.C語言中字符型(char)數據在內存中的存儲的是(  D  )

  A) 原碼 B) 補碼 C) 反碼 D) ASCII碼

22.在C語言中,字符型數據所佔的內存空間是(  C  )

    A)2個字節     B) 4位元組      C) 1位元組    D)由用戶自定義

*23.若int類型數據佔2個字節,則unsigned int類型數據的取值範圍是 (   B     )

A)0~255    B)0~65535    C)-32768~32767     D)-256~255

*24. 若有以下類型說明語句:char a;int b; float c; double d; 則表達式a*b+d-c的結果類型為(   D     )          

A)float    B) char     C) int      D)double

*25.若有以下類型說明語句:char w;int x;float y;double z;則表達式w-x*y/z的結果為( D  )類型,表達式(int)(x+y-z*w)的結果為( C  )類型。

    A)float   B)char   C)int   D)double

26 .C語言中運算對象必須是整型的運算符是(   A   )

    A) %=              B) /               C) =             D) 〈=

27.在C語言程序中,表達式8/5的結果是( B  )

    A)1.6         B)1           C)3           D)0

28.設x為int型變量,則執行以下語句後,x的值為  B  

x=10; x+=x;

A) 10    B) 20   C) 40   D) 30

 

31.在C語言程序中,表達式5%2的結果是  C   。

        A)2.5     B)2      C)1         D)3

32.如果int a=3,b=4;則條件表達式"a<b? a:b"的值是__A__。

A) 3         B) 4            C) 0       D) 1

33.若int x=2,y=3,z=4 則表達式x<z?y:z的結果是( B  ).

     A)4   B)3    C)2    D)0  E)1

34.C語言中,關係表達式和邏輯表達式的值是( B   )    。

    A) 0         B) 0或1        C) 1       D) 『T』或』F』

35.設a,b和c都是int型變量,且a=3,b=4,c=5,則下面表達式中,值為0的表達式是( D   )

A、』a』&&』b』                     B、a<=b    

C、a||b+c&&b-c                      D、!((a<b)&&!c||1)

 

37. 下面(  D   )表達式的值為4.

     A)  11/3            B)  11.0/3

     C)  (float)11/3    D)  (int)(11.0/3+0.5)

 

*39. 已知int x=5,y=5,z=5;執行語句x%=y+z;後,x的值是( C  )

A .0   B. 1     C. 5     D. 6

40. 已知字母A的ASCII碼為十進位數65,且c2為字符型,則執行語句c2='A'+'6'-'3';後,c2中的值為  (  B  )

   A)  68        B)  『D』       C) 錯誤     D) 『d』

41.下列關於C語言的敘述錯誤的是(  A )

A) 大寫字母和小寫字母的意義相同

B) 不同類型的變量可以在一個表達式中

C) 在賦值表達式中等號(=)左邊的變量和右邊的值可以是不同類型

D) 同一個運算符號在不同的場合可以有不同的含義

42. 有:int w=11,x=12,y=3,m; 執行下面語句後m的結果是( C )

       m=(w<x)?w:x;

       m=(m<y)?m:y;

   A. 1    B. 2   C. 3    D. 以上結果都不對

43. 有:int w=7, x=12, y=3, m;   執行下面語句後m的值是( A )

        m=(w>x)?w:x;

        m=(m>y)?m:y;

        A. 12    B. 0   C. 3    D. 1

 

45.設整型變量 a=2,則執行下列語句後,浮點型變量b的值不為0.5的是(  B )

A.b=1.0/a           B.b=(float)(1/a)

  C.b=1/(float)a      D.b=1/(a*1.0)

 

48. 以下運算符中優先級最高的運算符是( B )

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

49.若「int n; float f=13.8;」,則執行「n=(int)f%3」後,n的值是(A)

A.1               B.4                 C.4.333333         D.4.6

 

52. 設x為int型變量,則執行以下語句後,x的值為( C )

x=10; x*=x;

A) 10    B) 20   C) 100   D) 0

53. 若有語句int a=1,b; double y=2.3; b=(int)y; 則b的值為 (B  )。

A) 3   B) 2   C) 1   D) 2.3

54.已知int x;char y;則下面錯誤的scanf函數調用語句為(B  )

        A)scanf(「%d,%d」,&x,&y);      B) scanf(「%d,%c」,x,y)

        C) scanf(「%d%d」,&x,&y)       D) scanf(「%d,%c」,&x,&y)

 

57.在C語言的庫函數中,可以輸出char型變量x值的語句是   C    。

       A)getchar(x);    B)fputc(x)   C)putchar(x)    D)puts(x)

 

60. 以下說法正確的是( C )

A)  'x'+5是一個錯誤的表達式

B)  C語言不允許類型的混合運算

C)  強制類型轉換時,類型說明符必須加括號

D) (int)x+y 和(int)(x+y)是完全等價的表達式

61.設 int  x=0, y=1; 表達式(x||y)的值是  ( B )    

     A) 0            B) 1           C) 2            D) -1

 

三、選擇結構

1. 在C語言中,認為(    D    )為邏輯"真"

    A)  true     B)大於0的數     C)非0整數     D)非0的數

2.  表示關係x<=y<=z的c語言表達式為    A   

A) (x<=y)&&(y<=z)     B) (x<=y)AND(y<=z)

C) (x<=y<=z)          D) (x<=y)&(y<=z)

3.能正確表示邏輯關係:「a≥=10或a≤0」的C語言表達式是(    D    )

A) a>=10 or a<=0   B) a>=0|a<=10     

C) a>=10 &&a<=0   D) a>=10‖a<=0

4、判斷char型變量c1是否為大寫字母的表達式為( D )。

   A、』A』<=c1<=』Z』              B、(c1>=』A』) & (c1<=』Z』)

 C、(』A』<=c1)AND (『Z』>=c1)   D、 c1>=』A』 && c1<=』Z』

5. 為表示邏輯表達式79<X<90,應使用的C語言表達式是  A   。

A)( X>79 )&&( X<90 )    B) ( X>79 )!=( X<90 )

C) 79<X<90              D) (X>79 )||( X<90 )

6.設有語句「int a=2,b=3,c=-2,d=2;」,則邏輯表達式「a>0&&b&&c<0&&d>0」的    值是( A )

    A.1            B.0        C.-1               D.出錯

7. 設a為整型變量,則不能正確表達數學關係10<a<15的C語言表達式是(  A  )。

    A.10<a<15           B.a==11||a==12||a==13||a==14

   C. a>10&&a<15       D.!(a<=10)&&!(a>=15)

8.  設x,t均為int型變量,則執行語句「x=10;t=x&&x>10;」後,t的值為(D )

    A.不定值     B.10              C.1               D.0

9. 若int i=10; 執行下列程序後,變量i的正確結果是(  A  )。

   switch ( i )

     {  case   9:  i+=1;

        case  10:  i+=1;

        case  11:  i+=1;

       default :   i+=1; }

   A、13        B、12       C、11        D、10

10. 在下面的條件語句中(其中s1和s2表示是C語言的語句),只有一個在功能上與其它三個語句不等價,它是( D  )。

   A、if (a)   s1 ;  else  s2;      B、if (a= =0)  s2;  else  s1;

C、if (a!=0)  s1;  else  s2;     D、if (a= =0)  s1;  else  s2;

11.假定所有變量均已正確定義,則下列程序段運行後y的值是(A )

  int a=0,y=10;

    if(a=0) y--;

    else if(a>0) y++;

   else y+=y;

  A.20             B.11              C.9                D.0

12.假定所有變量均已正確定義,則下列程序段運行後x的值是(B )。

  a=b=c=0; x=35;

    if(!a) x--;

else if(b);

if(c) x=3;

else x=4;

A.34             B.4               C.35               D.3

13. C語言對嵌套if語句的規定是:else語句總是與( D  )配對。

   A) 其之前最近的if           B) 第一個if

C) 縮進位置相同的if         D) 其之前最近的且尚未配對的if

14.在C語言語句中,用來決定分支流程的表達式是( A )。

A.可用任意表達式       B.只能用邏輯表達式或關係表達式

C.只能用邏輯表達式      D.只能用關係表達式

15.C語言中用(   B    )表示邏輯「真」。

A.  true          B. 整數值1

C.  非零整數值    D.  false

16、若k是int型變量,且有下面的程序段:

int k;

k= -3;

if  (k<=0)  printf(「####」);

else  printf(「&&&&」);

上面程序段的輸出結果是(  A  )

    A、####           B、&&&&    

    C、####&&&&       D、有語法錯誤,無輸出結果

17.  main()

{    int   x=0,a=0,b=0;

switch(x){

case 0:   b++;

case 1:   a++;

case 2:   a++;b++;}

printf(「a=%d,b=%d\n」,a,b);}

該程序的輸出結果是  D    

A) a=2,b=1      B) a=1,b=1      C) a=1,b=0       D) a=2,b=2

18. 以下程序的輸出結果是:(   C   )

main()

 { int x=-10,y= 1,z=1;

   if(x<y)

    if(y<0) z=0;

    else z=z+1;

   printf(「%d\n」,z);

 }

A. 0   B. 1   C. 2   D. 3

19. 以下程序段的輸出結果是(   B   ) 

int a=10,b=50,c=30;

if(a>b)

a=b;

b=c;

c=a;

printf("a=%2d b=%2d c=%2d\n",a,b,c);

A) a=10 b=50 c=10                      B) a=10 b=30 c=10

C) a=50 b=30 c=10                      D) a=50 b=30 c=50

 

四、循環結構

*1.在C語言中,下列說法中正確的是( D )。

     A) do-while語句構成的循環不能用其它語句構成的循環來代替。

     B) do-while語句構成的循環只能用break語句退出。

     C) do-while語句構成的循環在while後的表達式非零時結束循環。

      D) do-while語句構成的循環,在while後的表達式為零時結束循環。

2. break語句不能出現在( D )語句中

A. switch       B.for         C. while       D. if…else

*3.對於break語句和continue語句的說法錯誤的是( B )

A)   break語句不能用於循環語句和switch語句之外的任何其他語句中。

B)   break和continue也可以用於if語句中

C)  continue語句只結束本次循環,而不是終止整個循環的執行。

D)  break語句是結束整個循環過程,不再判斷執行循環的條件是否成立。

4.語句while(!y);中的表達式!y等價於   A  

A)y==0    B)y!=1     C)y=!0     D) y==1

5.若有「int a=1,x=1;」,則循環語句「while(a<10) x++; a++;」的循環執行(A )

A.無限次     B.不確定次    C.10次      D.9次

6. 有以下程序段

int  k=0

while(k)k++;

則while循環體執行的次數是  C    

A) 無限次                      B) 有語法錯,不能執行

C) 一次也不執行                    D) 執行1次

7. 下列循環語句中有語法錯誤的是( D )

    A  while(x=y) 5;       B while(0) ;

C  do 2;while(x= =b); D do x++  while(x= =10);

*8.當運行時輸入:abcd$abcdeå, 下面程序的運行結果是   B  

#include<stdio.h>

main()

{  while(putchar(getchar())!='$');

printf("end");

}

A) abcd$abcde   B)abcd$end   C)abcdend    D) abcd$abcdeend

9. 以下程序段 ( A  )

x=-1;

do { x=x*x; }

while(x>0);

A. 是死循環  B. 循環執行一次  C. 循環執行二次  D. 有語法錯誤

10. 下面程序段執行後的結果為: ( B )

    int sum=0, n=10;

    do  { sum=sum+n;

          n++; }

     while(n<10)

    printf(「%d,%d」,sum,n)

A.  0, 10  B. 10, 11  C. 0, 11  D. 以上結果都不對

11.對以下程序段的敘述正確的是___A____.

int x=1;

do

{ x= -1*x; }

while(!x)

A) 是死循環  B) 循環執行一次  C)循環執行二次  D)有語法錯誤

12.循環「for(i=0,x=1;i=10&&x>0;i++);」的循環執行( A )。

A.無限次     B.不確定次    C.10次      D.9次

13.執行語句{for(j=0;j<=3;j++) a=1;}後變量j的值是   C    . 

A)0    B) 3     C)4    D) 1

14. 有如下程序

main()

{    int    i,sum=2;

for(i=1;i<=3;i+=2)   sum+=i;

printf(「%d\n」,sum);   }

該程序的執行結果是  A    

A) 6               B) 3               C) 死循環         D) 4

*15、執行語句」for ( i=0;  i++<3 ;   )  ;」後,變量i的值為(  C  )。

   A、2          B、3         C、4         D、5

16.設x和y均為int型變量,則執行以下的循環後,y的值為( D )。

for(y=1,x=1;y<=50;y++)

{

    if(x>=0) break;

    if(x%2==1) {x+=5;continue;}

    x-=3;

}

A.2           B.4          C.6           D.1

 

五 數組

1. 以下對一維數組a的正確說明是:   D   

A)  char a(10);         B) int a[];

C)int k=5,a[k];      D)char  a[3]={『a』,』b』,』c』};

2.以下能對一維數組a進行初始化的語句是: (    C    )

  A. int a[5]=(0,1,2,3,4,)  B. int a(5)={} 

C. int a[3]={0,1,2}       D. int a{5}={10*1}

3.在C語言中對一維整型數組的正確定義為   D    。

        A)int a(10);          B)int n=10,a[n];

C)int  n;a[n];        D)#define N 10

                       int a[N];

4、已知:int  a[10]; 則對a數組元素的正確引用是(  D  )。

   A、a[10]     B、a[3.5]     C、a(5)     D、a[0]

5. 執行下面的程序段後,變量k中的值為  C    

     A) 不定值       B) 33           C) 30           D) 10

     int  k=3, s[2];

     s[0]=k;  k=s[0]*10;

*6. 下列說法中錯誤的是   C    

A  構成數組的所有元素的數據類型必須是相同的

B  用指針法引用數組元素允許數組元素的下標越界

C  一維數組元素的下標依次是1、2、3……

D  定義數組時的長度可以是整型常量表達式

7.  若有以下數組說明,則數值最大的和最小的元素下標分別是( B )。

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};

A.1,12         B.0,11          C.1,11            D.0,12

8.若有以下數組說明,則i=10;a[a[i]]元素數值是( B )。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

A.10          B.9           C.6           D.5

9. 假定int類型變量佔用兩個字節,其有定義:int  x[10]={0,2,4};,則數組x在內存中所佔字節數是  D    

A) 3              B) 6                     C) 10              D) 20

 

11.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}}; 則數組a的第一維的大小為: ( B  )

  A.  2     B.  3     C.  4   D.無確定值

12.以下定義語句中,錯誤的是 ( D  )     

    A) int  a[]={1,2};          B) char  *a;

       C) char s[10]=「test」;     D) int  n=5,a[n];

13.下面程序段的輸出結果是: ( C  )

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

for (i=0;i<3;i++)

printf("%d ",x[i][2-i]);

A) 1 5 9        B) 1 4 7       C) 3 5 7       D) 3 6 9

14.對二維數組的正確定義是( C )

   A.int a[ ] [ ]={1,2,3,4,5,6};     B.int a[2] [ ]={1,2,3,4,5,6};

C.int a[ ] [3]={1,2,3,4,5,6};     D.int a[2,3]={1,2,3,4,5,6};

15.已知int a[3][4];則對數組元素引用正確的是__C___

       A)a[2][4]    B)a[1,3]   C)a[2][0]    D)a(2)(1)

 

六、函數

1.C語言中函數返回值的類型是由    A     決定的.

    A)函數定義時指定的類型          B) return語句中的表達式類型

    C) 調用該函數時的實參的數據類型 D) 形參的數據類型

2. 在C語言中,函數的數據類型是指( A )

A 函數返回值的數據類型           B. 函數形參的數據類型

C 調用該函數時的實參的數據類型   D.任意指定的數據類型

*3.C程序中函數返回值的類型是由   A   決定的.

A)函數定義時指定的函數類型  B) 函數中使用的最後一個變量的類型

 C)調用函數時臨時確定        D) 調用該函數的主調函數類型

*4. C語言規定,簡單變量做實參時,它和對應形參之間的數據傳遞方式為 (  B   )

   A. 由系統選擇  B. 單向值傳遞   C. 由用戶指定傳遞方式  D. 地址傳遞

5.  在函數調用時,以下說法正確的是( B )

 A.函數調用後必須帶回返回值

 B.實際參數和形式參數可以同名

 C.函數間的數據傳遞不可以使用全局變量

 D.主調函數和被調函數總是在同一個文件裡

*6. 在C語言程序中,有關函數的定義正確的是( B )。

    A.函數的定義可以嵌套,但函數的調用不可以嵌套

    B.函數的定義不可以嵌套,但函數的調用可以嵌套

    C.函數的定義和函數的調用均不可以嵌套

    D.函數的定義和函數的均可以嵌套

*7. 以下對C語言函數的有關描述中,正確的是( A  )。

    A.在C語言程序中,調用函數時,如函數參數是簡單變量,則只能把實參的值傳遞給形參,形參的值不能傳送給實參

    B.C語言函數既可以嵌套定義又可遞歸調用

    C.C語言函數必須有返回值,否則不能使用函數

    D.在C語言程序中有調用關係的所有函數必須放在同一個源程序文件中

*8.C語言中對函數的描述正確的是   C     . 

   A)可以嵌套調用,不可以遞歸調用    B) 可以嵌套定義 

   C)嵌套調用,遞歸調用均可         D)不可以嵌套調用

9.以下敘述中正確的是  A    

    A) 構成C程序的基本單位是函數

    B) 可以在一個函數中定義另一個函數

    C) main()函數必須放在其它函數之前

    D) 所有被調用的函數一定要在調用之前進行定義

10.用數組名作為函數調用時的實參時,傳遞給形參的是    A      。

A)數組首地址           B)數組第一個元素的值

  C)數組全部元素的值     D)數組元素的個數

11.有一函數的定義如:void fun(char *s){……},則不正確的函數調用是( D )。

A.main()

{char a[20]=」abcdefgh」;

 fun(a);

……

}

B.main()

{ char a[20]=」abcdefgh」;

  fun(&a[0]);

  ……

}

C.  main()

{ char a[20]=」abcdefgh」;

  char *p=a;fun(p);

  ……

}

D.  main()

{char a[20]=」abcdefgh」;

 fun(a[]);

 ……

}

 

13、函數的功能是交換變量x和y中的值,且通過正確調用返回交換的結果。能正確執行此功能的函數是(  D )。

  B、funb(int     x , int y)      {      int t;         t=x;  x=y;  y=t;      }

   A、funa(int *x, int *y)

      {  int *p;

         *p=*x ;  *x=*y;   *y=*p;

      }

 

  D、fund(int *x,  int *y)    {  int      t;       t=*x;      *x=*y;  *y=t;    }

   C、func(int *x,  int *y)

      {  int *p;

p=x;x=y; y=p;

      }

 

14. 有如下程序

int func(int a,int b)

{   return(a+b);}

main()

{   int   x=2,y=x,z=8,r;

r=func(func(x,y),func(y,z));

printf(「%d\n」,r);   }

該程序的輸出的結果是  C    

A) 12              B) 13              C) 14            D) 15

*15. 以下程序的輸出結果是  B    

int   a, b;

void fun()

{   a=100; b=200;  }

main()

{   int  a=100, b=100;

fun();

printf(「%d%d \n」, a,b);

}

A) 100200              B) 100100          C) 200100          D) 200200

 

*16. 下列說法中正確的是:(   A   )

A.  局部變量在一定範圍內有效,且可與該範圍外的變量同名。

B.  如果一個源文件中,全局變量與局部變量同名,則在局部變量範圍內,局部變量不起作用。

C.  局部變量預設情況下都是靜態變量。

D.  函數體內的局部靜態變量,在函數體外也有效。

17. 在C語言中,表示靜態存儲類別的關鍵字是: (   C   )

A) auto          B) register        C) static           D) extern

18.未指定存儲類別的變量,其隱含的存儲類別為( A  )。

        A)auto   B)static   C)extern   D)register

 

七、結構體

1. 若有以下說明語句:

        struct  student

         { int num;

           char name[ ];

           float score;

          }stu;

      則下面的敘述不正確的是: ( D )

A. struct是結構體類型的關鍵字

B. struct student 是用戶定義的結構體類型

C. num, score都是結構體成員名       

D. stu是用戶定義的結構體類型名

2.若有以下說明語句:

        struct  date

         { int year;

           int month;

           int day;

          }brithday;

      則下面的敘述不正確的是__C___.

A) struct是聲明結構體類型時用的關鍵字      

B) struct date 是用戶定義的結構體類型名

C) brithday是用戶定義的結構體類型名  

D) year,day 都是結構體成員名

*3. 已知:(設整型2位元組,字符型1位元組,浮點型4位元組)

struct

{ int i;

char c;

float a;

}test;

則sizeof(test)的值是   D  。

A) 4   B) 5   C) 6    D) 7

4. 以下對結構變量stul中成員age的非法引用是   B    

struct student

{ int age;

int num;

}stu1,*p;

p=&stu1;

A) stu1.age   B) student.age   C) p->age    D) (*p).age

 

*5. 有如下定義

struct person{char  name[9]; int age;};

struct person class[10]={「Tom」,17,「John」,19,

「Susan」,18,「Adam」,16,};

根據上述定義,能輸出字母A的語句是( B )

A) printf(「%c\n」,class[3].name);

B) printf(「%c\n」,class[3].name[0]);

C) printf(「%c\n」,class[3].name[1]);

D) printf(「%c\n」,class[2].name[3]);

 

6.存放100個學生的數據、包括學號、姓名、成績。在如下的定義中,不正確的是(  B )。

A.struct student

{int sno;

char name[20];

 float score;} stu[100];

B. struct student stu[100]

{int sno;

char name[20];

float score};

C. struct

{ int sno;

char name[20];

float score;} stu[100];

D. struct student

{int sno;

char name[20];

float score;};

struct student stu[100];

*7.設有定義語句「struct {int x; int y;} d[2]={{1,3},{2,7}};」則「printf(「%d\n」,d[0].y/d[0].x*d[1].x);」輸出的是( D )。

A.0          B.1         C.3           D.6

8.已知:  struct  sk

            {  int a; 

float b;

            }data, *p;

    若有p=&data,則對data中的成員a的正確引用是( C   )。

    A、(*p).data.a   B、p->data.a    C、(*p).a    D、p.data.a

9.設有如下定義:

struck sk

{   int a;

float b;

}data;

int *p;

若要使P指向data中的a域,正確的賦值語句是  C    

A) p=&a;          B) p=data.a; C) p=&data.a;     D)*p=data.a;

10.設有以下說明語句:

           typedef  struct  stu

           {  int  a;

              float  b;

           } stutype;

    則下面敘述中錯誤的是( D  )。

    A、struct是結構類型的關鍵字  

B、struct stu是用戶定義的結構類型 

    C、a和b都是結構成員名

D、stutype是用戶定義的結構體變量名

 

八.指針

1. 語句int *p;說明了   C   。

A)p是指向一維數組的指針   

B)p是指向函數的指針,該函數返回一int型數據

C)p是指向int型數據的指針 

D)p是函數名,該函數返回一指向int型數據的指針

2. 變量的指針,其含義是指該變量的:( B  )

   A. 值          B. 地址       C. 名         D.一個標誌

3.若x是整型變量,pb是基類型為整型的指針變量,則正確的賦值表達式是(  A  )

A) pb=&x       B) pb=x      C) *pb=&x        D) *pb=*x

4、已知:int a, *p=&a; 則下列函數調用中錯誤的是(  D  )。

   A、scanf(「%d」,&a);     B、scanf(「%d」,p);

   C、printf(「%d」,a);     D、printf(「%d」,p);

5.對於同類型的指針變量,不可能進行的運算是( C )。

A.-              B.=               C.+             D.==

6. 對於基類型相同的兩個指針變量之間,不能進行的運算是   C   

A) <            B) =            C) +             D) -

7.下列不正確的定義是( A  )。

A.  int *p=&i,i;                  B.int *p,i;

C.int i,*p=&i;                  D.int i,*p;

8. 若有說明:int n=2,*p=&n,*q=p,則以下非法的賦值語句是: ( D  )

A)p=q        B)*p=*q     C)n=*q      D)p=n

9. int  *p,a=10,b=1;  p=&a;  a=*p+b;

執行該程序段後,a的值為  C    

    A) 編譯出錯     B) 10           C) 11            D) 12

10.有語句:int a[10],;則  B   是對指針變量p的正確定義和初始化。

A)int p=*a;  B)int *p=a;   C)int p=&a;  D)int *p=&a;

11.若有說明語句「int a[5],*p=a;」,則對數組元素的正確引用是( C )。

A.a[p]            B.p[a]              C.*(p+2)         D.p+2

12. 若指針變量p指向整型數組a[10]的首地址, 即p=a ; 則下列數組元素a[i](0<i<10)的表示方法中正確的是:( C )

A. p+i    B.&( a+i)    C. *(a+i)    D. *(p+i*2)

13. 有如下程序

int  a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;

則數值為9的表達式是  B    

A) *P+9            B) *(P+8)          C) *P+=9         D) P+8

14.若有以下定義,則不能表示a數組元素的表達式是( B  )。

     int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

A.*p         B.a[10]              C.*a          D.a[p-a]

 

*15.已知int a[5],*p=a;下面的敘述中正確的是   A    。

A) p+1與a+1等價             B) p[1]與*p等價  

C) *(p+1)與a+1等價         D) p[1]與a++等價

16. 若有以下說明:

      int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

      則數值為4的表達式是(  C    )

A) *p+4        B) *(p+4)      C) *(p+3)      D) p+3

17. 下面程序的輸出結果是   C   

A) 0                     B) 1            C) 2         D) 輸出錯誤

main()

{  int  a[ ]={1,2,3,4,5,6,7,8,9,0},*p;

   p=a;

   printf(「%d\n」,*p+1);

}

18. 執行語句 char c[10]={ 」abcd」},*pc=c; 後,*(pc+4)的值是( B )

A) 「abcd」    B)』\0』     C) 『d』   D) 不確定

19.下列函數的功能是   A     。

 void fun(int *p1,int *p2)

{ int p;

p=*p1;*p1=*p2;*p2=p;

}

A) 交換*p1和*p2的值       B) 語法正確,但無法交換*p1和*p2的值

C) 交換*p1和*p2的地址     D)有語法錯誤

*20. 有如下程序

main()

{    char s[]=「ABCD」, *P;

for(p=s+1; p<s+4; p++)   printf (「%s\n」,p);  }

該程序的輸出結果是  D    

A) ABCD           B) A            C) B           D) BCD

BCD               B               C              CD

CD                C               D              D

D                 D

*21.  請讀程序,輸出結果為:       ( A   )

#include<stdio.h>

int a[]={2,4,6,8};

main()

{ int i,b[4];

int *p=a;

for(i=0;i<4;i++) {b[i]=*p;p++;}

printf("%d\n",b[2]);

}

A) 6              B) 8              C) 4              D) 2

*22.內存空間被分成不同區域,其中用函數void* malloc(unsigned int size);

申請的內存在  C   分配。

A) 程序區   B)靜態存儲區  C)動態存儲區

 

九、字符串

1. 在C語言中,以   D   作為字符串結束標誌

A)』\n』      B)』 』      C) 』0』    D)』\0』

2.下列數據中屬於「字符串常量」的是( A )。

A.「a」         B.{ABC}         C.『abc\0』         D.『a』

3.字符串 「ABCD」在內存佔用的字節數是( D )。

A.4    B.6     C.1     D.5

4. 下面不正確的字符串常量是:(  A  )

     A. 『PROGRAM』       B 「12』12」    C 「0」    D 「  」

5.設有數組定義: char array [ ]="abcd"; 則數組array所佔的空間為  B    

     A) 4個字節      B) 5個字節     C) 6個字節      D) 7個字節

*6.下述對C語言中字符數組的描述錯誤的是  C   。

A)字符數組可以存放字符串

B)字符數組中的字符串可以整體輸入和輸出

C)可在賦值語句中通過賦值運算符「=」對字符數組整體賦值

D)可在對字符數組定義時通過賦值運算符「=」對字符數組整體初始化

7.已知char x[]="hello", y[]={'h','e','a','b','e'};, 則關於兩個數組長度的正確描述是   B   .

A)相同     B)x大於y    C)x小於y   D)以上答案都不對

8.給出以下定義:

char x[ ]="abcdefg";

char y[ ]={'a','b','c','d','e','f','g'};

則正確的敘述為  C  

A) 數組x和數組y等價               B) 數組x和數組y的長度相同

C) 數組x的長度大於數組y的長度     D) 數組x的長度小於數組y的長度

9、若有以下語句,則正確的描述是(  D  )。

        static char x[  ]=」12345」 ;

        static char y[  ]={『1』,『2』,『3』,『4』, 5』,』\0』} ;

   A、x數組長度大於y數組長度   B、x數組和y數組不相同  

   C、x數組長度小於y數組長度   D、x數組等價於y數組

10、已知:char s[20]= 」programming」, *ps=s; 則不能引用字母o的表達式是( C  )。

   A、ps[2]     B、s[2]     C、ps+2    D、ps+=2,  *ps

*11.判斷兩字符串s1,s2是否相等,應使用( D  ).

        A)if(s1==s2)        B)if(s1=s2)

C)if(strcpy(s1,s2))     D)if(strcmp(s1,s2)==0)

*12.以下printf語句的輸出結果為:    A     

printf(「%d\n」,strlen(「school」));

A) 7    B)  6   C)存在語法錯誤    D)不定值

13. 對字符數組s賦值,不合法的一個是(  C )

A. char s[]="Beijing";       

B. char s[20]={"beijing"};

C. char s[20];s="Beijing";  

D. char s[20]={'B','e','i','j','i','n','g'};

14. 對字符數組str賦初值,str不能作為字符串使用的一個是( D )

A. char str[]="shanghai";             

B. char str[]={"shanghai"};

C. char str[9]={'s','h','a','n','g','h','a','i',』\0』};

D. char str[8]={ 's','h','a','n','g','h','a','i'};

15. 合法的數組定義是     C         

A)int a[]={「string」};    B) int a[5]={0,1,2,3,4,5};

C)char a[]= 「string」;     D) char a[5]={0,1,2,3,4,5};

16. 對字符數組s賦值,不合法的是: ( C )

A) char s[]="china";                  

B) char s[20]={" china "};

C) char s[20];s=" china";             

D) char s[20]={'c','h','i','n','a'};

17. 下面初始化與此初始化charc[ ]=「I am happy」;等價的是( A  )

A) char c[ ]={『I』,』』,』a』,’m』,』』,』h』,』a』,』p』,』p』,』y』,』\0』};

B) char c[ ]={『I』,』am』,』happy』};

C) char c[ ]={『I』, 』』,』a』,’m』,』』,』h』,』a』,』p』,』p』,』y』};

D)char c[ ]={『I』,』am』,』happy』,』\0』};

18.下面各語句中,能正確進行賦字符串操作的語句是( C )。

A.  char s[5]={「ABCDE」};

B.  char s[5]={『A』,『B』,『C』,『D』,『E』,』\0』};

C.  char *s;s=「ABCDE」;

D.  char *s;scanf(「%s」,&s);

19.下列字符串賦值方式不正確的是(  A  )

A).char str[20];                B). char *str ;       

    str=」I am a boy!」;              str=」I am a boy!」;

C).  char *str=」I am a boy!」;         D). char str[20]=」 I am a boy!」;

 

十、文件

*1.在C語言中,文件由( A )。

A.字符(字節)序列組成               B.記錄組成

C.數據行組成                       D.數據塊組成

2. 下面各函數中能實現打開文件功能的是   A   

A) fopen       B) fgetc            C) fputc             D) fclose

*3.若文件型指針fp指向某文件的末尾,則函數feof(fp)的返回值是( B )。

A.0        B. 1        C.非0值           D.NULL

4. 下列語句中,把變量fp說明為一個文件型指針的是( A ) 。

A) FILE  *fp;        B) FILE  fp;

C) file  *fp;         D) file  fp;

5、在進行文件操作時,寫文件的一般含義是( B   )。

    A、將磁碟中的信息存入計算機內存

B、將計算機內存中的信息存入磁碟

    C、將計算機CPU中的信息存入磁碟

    D、將磁碟中的信息存入計算機CPU

*6.以讀寫方式打開一個已有的文本文件file1,並且FILE *fp,下面fopen函數正確的調用方式是( B )。

A.fp=fopen(「file1」,「r」)

B.fp=fopen(「file1」,「r+」)

C.fp=fopen(「file1」,「rb」)

D.fp=fopen(「file1」,「w」)

*7.標準庫函數fputs(p1,p2)的功能是( C )。

A.從p1指向的文件中讀一個字符串存入p2指向的內存

B.從p2指向的文件中讀一個字符串存入p1指向的內存

C.從p1指向的內存中讀一個字符串寫到p2指向的文件中

D.從p2指向的內存中讀一個字符串寫到p1指向的文件中

 

十一、編譯預處理

*1.在C語言程序中,以#號帶頭的行是預編譯處理( A )。

     A.命令             B.語句            C.函數           D.字符串

2.下列正確的預編譯命令是( D )。

     A. define PI 3.14159

     B. #define P(a,b)=strcpy(a,b)

     C. #define stdio.h

     D. #define PI 3.14159;

3.下列命令或語句中,正確的是( C  )。

     A. #define MYNAME=」ABC」

     B. #include stdio.h

     C. for(i=0;i<10;i++);

     D. struct int stu{int name};

*4.下列命令或語句中,錯誤的是( C )。

     A.#define PI 3.14159              B.#include <math.h>;

     B.if(2);                          D.for(;;) if(1) break;

相關焦點

  • c語言程序設計自學教程
    如果您不甘落後,那麼請自製自控,自學c語言程序設計也是完全可能的。c語言十分依賴於計算機思維,而思維的培養不是一日之功,而是一個日積月累的過程一:準確把握語法語句概念1、編譯預處理不是C語言的一部分,不佔運行時間,不要加分號。
  • 2020計算機二級Visual Basic語言程序設計網課視頻輔導班
    章 資料庫設計基礎(3)00:16:5419第4章 資料庫設計基礎(4)00:47:0520第4章 資料庫設計基礎(5)00:38:5321第4章 資料庫設計基礎(6)00:28:562020年9月全國計算機等級考試二級《Visual Basic語言程序設計》網授精講班【共34課時】序號名稱課時1第1章 Visual Basic程序開發環境00:33:232第2章 對象及其操作00:37
  • c語言程序設計是什麼概念?及其作用與產生原因
    c語言程序設計什麼是c語言程序設計?它的作用是什麼?因為什麼而產生?首先,c語言是一門計算機高級語言,就是除了0011101這樣的二進位代碼這些基本語言外。人類用適合自己一般邏輯的方便的,字符,詞組,字母等等來設計的語言。
  • 全國計算機等級考試二級C語言程序設計歷年真題與模擬試題詳解
    目錄 第一部分歷年真題及詳解2016年9月全國計算機等級考試《二級C語言程序設計》真題及詳解2016年3月全國計算機等級考試《二級C語言程序設計》真題及詳解2015年9月全國計算機等級考試《二級C語言程序設計》真題及詳解
  • C語言視頻教程/零基礎C語言程序設計
    新版C語言視頻教程/零基礎C語言程序設計/小白自學編程計算機二級Java面向對象程序設計教程(微課視頻版微課版21世紀高等學校計算機類課程創新規劃教材) 博庫網Java Web程序設計及項目實戰(微課視頻版21世紀高等學校計算機類課程創新規劃教材) 博庫網20AP微積分物理心理統計宏觀微觀經濟化學歷史計算機網課課程視頻大學計算機專業視頻教程
  • 2018年自考《C語言程序設計》試題七
    2018年自考《C語言程序設計》試題七二、 閱讀程序題閱讀程序對於初學者來說很重要,一方面可以鞏固所學的語法知識,另一方面通過閱讀別人寫好的程序來打開自己的思路,就所謂見多識廣。如果選擇有誤,就要認真分析原因,是概念方面的錯誤還是對程序邏輯理解不對,從而加深對語法規則的理解,提高程序設計能力。程序設計語言是開發程序的一個工具,學習語言的目的是為了編寫程序來解決實際問題,所以特別提倡通過實際上機來檢驗備選答案,增強動手能力。1.下面程序的輸出結果是____。
  • C 語言程序設計---入門篇
    從本篇文章開始,我將分享 C 系列,將 C 語言的方方面面,從最基礎的語法帶領大家入門
  • c語言入門之安裝code::blocks
    C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。
  • 【計算機二級c語言】重點+題庫
    ,用於考查應試人員計算機應用知識與技能的全國性計算機水平考試。 級別分為一二三四級,二級考試科目有C語言程序設計,MS Office高級應用,Java語言程序設計等等。 今天主要介紹C語言程序設計考試相關內容及備考方法。
  • C+的老豆C語言,C#的林北的C+,C語言的面向過程
    C、C++ 、C# C語言是一種面向過程的電腦程式設計語言; C++是一種靜態數據類型檢查的,支持多種編程範式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、製作圖標等泛型程序設計等多種程序設計風格。
  • 華東理工大學電腦程式設計競賽--2018級招新
    目的:宣傳和招收程序設計競賽隊員。競賽目標:(1)ACM/ICPC國際大學生程序設計競賽;(2)CCPC中國大學生程序設計競賽;(3)「藍橋杯」全國軟體和信息技術專業人才大賽;(4)中國大學生計算機設計大賽;(5)上海大學生計算機應用能力競賽。
  • 【好課傳送】C++語言程序設計基礎入門視頻
    【機器學習之美導讀】C/C++語言發展至今已有40多年的歷史,在全世界應用非常廣泛,是主流的開發語言。
  • 《電腦程式設計基礎》課程思政教學案例分享
    「電腦程式設計基礎」是一門重要的公共基礎課,涉及的專業面廣,學生人數多。課程以C++或Python語言作為程序實現工具,重點講授程序設計的基礎知識與基本方法,在使學生掌握利用計算機解決實際問題的基本過程和思維規律的同時,課程團隊強調將聯合國教科文組織倡導的「學會做事、學會做人、學會學習和學會與人相處」的教育貫穿於課程教學過程,承擔起全員育人的責任。
  • 計算機二級《Python語言程序設計 最新版》電子教案PDF,請收下
    今天給大家整理了電子版的全國計算機等級考試二級教程,Python 語言程序設計 ,後面有電子版截圖和下載。
  • 單片機C語言程序設計:ADC0809數模轉換與顯示
    打開APP 單片機C語言程序設計:ADC0809數模轉換與顯示 發表於 2018-01-05 15:36:36 本文分享ADC0809數模轉換與顯示的單片機C語言程序設計與電路圖。
  • 《Python語言程序設計基礎》第2版本(電子版課本)
    本部分包括3章內容(第1、2章和附錄A),分別如下:第1章程序設計基本方法第2章 Python程序實例解析附錄A極簡計算機基礎第1章主要面向初學程式語言的讀者,重點講解編寫程序最基本的IPO方法,介紹Python語言安裝和運行過程,說明Python語言的版本更選和選擇。
  • 第九屆電腦程式設計競賽
    競賽全稱:中南林業科技大學第九屆電腦程式設計競賽    你,敢來嗎?為激發我校大學生對電腦程式設計的興趣,培養大學生的實踐與創新能力,提升大學生的邏輯思維水平,同時選拔參加湖南省大學生程序設計競賽與國際大學生程序設計大賽(ACM/ICPC)的後備優秀人才,我校計算機與信息學院決定舉辦大學生電腦程式設計競賽。
  • C++語言程序設計
    雖然實質是C語言課程,但引入了C++語言的一些特性(不包括龐雜的面向對象部分)。這些特性易於掌握,且對提高編程效率極為有用。花費比學習C語言多百分之十的時間,就能同時享受到C++帶來的方便與效率。此外還介紹遞歸、枚舉等基本算法思想。適用於包括中學生在內的所有零基礎學習者。
  • 想學C語言程序設計?那還不快來!
    那麼,其次又一大福利來啦~黨哥接下來想推薦的是一本書~c primer plus,非常全的一本書,講的很完(luo)整(suo),很適合入門,再配上一些OJ上的練習(很多OJ都有題的難度分類的,找那種不帶算法的純語言題做)。學語言主要是要實踐,要花時間編程書的封面是這樣的:然後再為大家推薦一個OJ看看!
  • C語言程序設計試題1
    學年期末考試級專業()《C語言程序設計A.包含1個字符 B.包含2個字符 C.包含3個字符 D.是非法表示4.設long i=65539;,執行語句printf("%d",i);後的輸出結果是(   )A.-3 B.3 C.65539 D.數據不確定5.設float c,