第2章 數據類型_第1頁
第2章 數據類型_第2頁
第2章 數據類型_第3頁
第2章 數據類型_第4頁
第2章 數據類型_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 第2章 數據類型、運算符和表達式一. 選擇題(1)以下選項中,能用作用戶標識符的是(      )。A)voidB) 8_8C)_0_D)unsigned(2)以下選項中合法的標識符是(      )。A)1_1B)1_1C)_11D)1_ _(3)以下選項中不合法的標識符是(      )。A)printB)FORC)&aD)_00(4)可在C程序中用作用戶標識符的一組標識符是( &#

2、160;    )。A)and   _2007B)Date   y-m-dC)Hi   Dr.TomD)case   Bigl(5)可用作C語言用戶標識符的是(      )。A)void,define,WORDB)a3_b3,_123,IFC)FOR,-abc,CaseD)2a,Do,Sizeof(6)下面四個選項中,均是不合法的用戶標識符的選項是(  &

3、#160;   )。A)A P_0 doB)float la0 _AC)b-a goto intD)_123 temp int(7)下面各選項中,均是C語言合法標識符的選項組是(      )。A)33   we   autoB)_23   me   _3ew C)_43   3e_    else D)ER -DF 

4、  32(8)以下不合法的用戶標識符是(      )。A)j2_KEYB)DoubleC)4dD)_8_(9)下列是用戶自定義標識符的是(      )。A)_w1B)3_xyC)intD)LINE-3(10)以下選項中可用作C程序合法實數的是(      )。A).1e0B)3.0e0.2C)E9D)9.12E (11)以下選項中能表示合法常量的是(   

5、0;  )。A)1,200B)1.5E2.0C)''D)"007"(12)以下關于C語言的敘述中正確的是(      )。A)C語言中的注釋不可以夾在變量名或關鍵字的中間B)C語言中的變量可以在使用之前的任何位置進行定義C)在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致D)C語言的數值常量中夾帶空格不影響常量值的正確表示(13) 以下選項中,能用作數據常量的是(      )。A)o115B)0118C)15

6、e15D)115L(14)以下選項中不能作為C語言合法常量的是(      )。A) 'cd'B)0.1e+6C) "a"D) '011'(15)C源程序中不能表示的數制是(      )。A)二進制B)八進制C)十進制D)十六進制(16)以下選項中不屬于字符常量的是(      )。A) 'C'B)"C"C) 'xCC&

7、#39;D) '072'(17)以下選項中,合法的一組C語言數值常量是(      )。A)028   .5e-3   .0xfB)12.   0Xa23   4.5e0C).177   4e1.5   0abcD)0x8A   10,000   3.e5(18) 以下正確的字符串常

8、量是(      )。A)""B) 'abc'C)Olympic GamesD)""(19)以下關于字符串的敘述中正確的是(      )。A)C語言中有字符串類型的常量和變量B)兩個字符串中的字符個數相同時才能進行字符串大小的比較C)可以用關系運算符對字符串的大小進行比較D)空串一定比空格打頭的字符串小(20)以下選項中,不能作為合法常量的是(      )。

9、A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0(21)下列選項可以正確表示字符型常量的是(      )。A) 'r'B)"a"C)"897"D)296(22)以下合法的字符型常量是(      )。A) 'x13'B) '081'C) '65'D)"n"(23)下面四個選項中,均是不正確的八進制數或十六進制數的選項是(

10、      )。A)016    0x8f    018B)0abc    017    0xaC)010    -0x11    0x16D)0a12    7ff    -123(24)下列選項中C語言中不合法的字符串常量的是(     

11、0;)。A)"121"B) 'y'C)"nn"D)"ABCDx6d"(25)以下合法的十六進制數是(      )。A)0xB)0x4deC)0x1hD)oX77(26)有以下程序:#include<stdio.h> main()      int s,t,A=10;double B=6;      s=sizeof(A); t=

12、sizeof(B);      printf("%d,%dn",s,t);在VC6平臺上編譯運行,程序運行后的輸出結果是(      )。A)2,4B)4,4C)4,8D)10,6(27)以下關于C語言數據類型使用的敘述中錯誤的是(      )。A)若要準確無誤差地表示自然數,應使用整數類型B)若要保存帶有多位小數的數據,應使用雙精度類型C)若要處理如"人員信息"等含有不同類

13、型的相關數據,應自定義結構體類型D)若只處理"真"和"假"兩種邏輯值,應使用邏輯類型(28)閱讀以下程序:#include<stdioh>main()   int case;float printf;      printf("請輸入兩個數:");      scanf("%d%f",&case,&printf);  &

14、#160;   printf("%d%fn",case,printf);該程序在編譯時產生錯誤,其出錯原因是(      )。A)定義語句出錯,case是關鍵字,不能用作用戶自定義標識符B)定義語句出錯,printf不能用作用戶自定義標識符C)定義語句無錯,scanf不能作為輸入函數使用D)定義語句無錯,printf不能輸出case的值(29) 若函數中有定義語句:int k;,則(      )。A)系統將自動給k賦初值0B

15、)這時k中的值無定義C)系統將自動給k賦初值-1D)這時k中無任何值(30)以下選項中正確的定義語句是(      )。A)double a;b;B)double a=b=7;C)double a=7,b=7;D)double,a,b;(31) 以下關于long、int和short類型數據占用內存大小的敘述中正確的是(      )。A)均占4個字節B)根據數據的大小來決定所占內存的字節數C)由用戶自己定義D)由C語言編譯系統決定(32)以下不正確的敘述是( 

16、60;    )。A)在C程序中,逗號運算符的優先級最低B)在C程序中,APH和aph是兩個不同的變量C)若a和b類型相同,在計算了賦值表達式a=b后b中的值將放入a中,而b中的值不變D)當從鍵盤輸入數據時,對于整型變量只能輸入整型數值,對于實型變量只能輸入實型數值(33)以下不能正確表示代數式2ab/cd的C語言表達式是(      )。A)2*a*bcdB)a*bcd*2C)acd*b*2D)2*a*bc*d(34)在C語言中,運算對象必須是整型數的運算符是(  

17、0;   )。A)%B)C)%和D)*(35)現有定義int a;double b;float c;char k;,則表達式a/b+c-k值的類型為(      )。A)intB)double C)float D)char(36)已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉換為對應小寫字母的語句是(      )。A)c=(c-'A')26+'a'B)c=c+3

18、2C)c=c-'A'+'a'D)c=('A'+c)26-'a'(37)設變量a是int型,f是float型,i是double型,則表達式10+'a'+i*f值的數據類型為(      )。A)intB)floatC)doubleD)不確定(38)表達式:(int)(double)9/2)-(9)%2的值是(      )。A)0B)3C)4D)5(39)若有定義語句:int a=3,b=2,c=1

19、;,以下選項中錯誤的賦值表達式是(      )。A)a=(b=4)=3;B)a=b=c+1;C)a=(b=4)+c;D)a=1+(b=c=4);(40)有以下定義:int a;long b;double x,y;,則以下選項中正確的表達式是(      )。A)a(int)(x-y)B)a=x!=y;C)(a*y)bD)y=x+y=x(41)表達式a+=a-=a=9的值是(      )。A)9B)-9C)18D)

20、0(42)若有定義:double a=22;int i=0,k=18;,則不符合C語言規定的賦值語句是(      )。A)a=a+,i+;B)i=(a+k) <=(i+k);C)i=a11;D)i=!a;(43)若有定義語句:int x=10;,則表達式x-=x+x的值為(      )。A)-20B)-10C)0D)10(44)設變量已正確定義并賦值,以下正確的表達式是(      )。A)x=y*5=x+

21、zB)int(15.85)C)x=y+z+5,+yD)x=25%5.0(45) 若變量均已正確定義并賦值,以下合法的C語言賦值語句是(      )。A)x=y=5;B)x=n%2.5;C)x+n=i;D)x=5=4+1;(46)若變量已正確定義并賦值,以下符合C語言語法的表達式是(      )。A)a:=b+1B)a=b=c+2C)int 18.5%3D)a=a+7=c+b (47)在執行下述程序時,若從鍵盤輸入6和8,則結果為(   

22、60;  )。main()   int a,b,s;scanf("%d%d",&a,&b);s=a;if(a<b)s=b;s*=s;printf("%d",s); A)36B)64C)48D)以上都不對(48)下列程序的輸出結果是(      )。main() double d=3.2; int x,y;   x=1.2; y=(x+3.8)/ 5.0;   pri

23、ntf("%dn", d*y); A)3B)3.2C)0D)3.07(49)有以下程序,其中k的初值為八進制數:#include<stdio.h>main()int k=011;   printf("%dn",k+);程序運行后的輸出結果是(      )。A)12B)11C)10D)9(50)設有定義:int a=1,b=2,c=3;,以下語句中執行效果與其他三個不同的是(      )。A)

24、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;(51) 設有定義:int x=2;,以下表達式中值不為6的是(      )。A)x*=x+1B)x+,2*x C)x*=(1+x)D)2*x,x+=2二. 填空題(1)以下程序運行后的輸出結果是_【1】_。#include<stdio.h>main()int a;      

25、a=(int)(double)(3/ 2)+0.5+(int)1.99*2);      printf("%d",a);(2)表達式(int)(double)(5/2)+2.5)的值是_【2】_。 (3)設變量a和b已正確定義并賦初值,請寫出與a-=a+b等價的賦值表達式_【3】_。(4)若有定義語句:int a=5;,則表達式a+的值是_【4】_。(5)設變量已正確定義為整型,則表達式n=i=2,+i,i+的值為_【5】_。(6)執行以下程序后的輸出結果是_【6】_。main()   

26、;int a=10;      a=(3*5,a+4);printf("a=dn",a);(7)定義int a=5,b;,則執行表達式b=+a*-a之后,變量b的值為_【7】_。參考答案及解析一. 選擇題1.      答案:C【解析】 C語言的標識符命名規則為:只能由字母、數值和下劃線3種字符組成;第一個字符必須是字母或下劃線;不能與C語言中的關鍵字或保留字相同。2.      答案:C【解析】

27、 標識符命名規則:標識符必須由字母(az或AZ)或下劃線(_)開頭;標識符的其他部分可以用字母、下劃線或數字(09)組成;大小寫字母表示不同意義,如cout和Cout代表不同的標識符;在定義標識符時,雖然語法上允許用下劃線開頭,但是,我們最好避免定義用下劃線開頭的標識符,因為編譯器常常定義一些下劃線開頭的標識符。因此,本題正確答案為C)。3.      答案:C【解析】C語言合法標識符的命名規則是:標識符只能由字母、數字和下劃線組成,并且第一個字符必須為字母或下劃線。因為選項C)中的標識符的第一個字符為"&"

28、;,所以選項C)為本題的正確答案。4.      答案:A【解析】在C語言中,合法標識符的命名規則是:標識符可以由字母、數字和下劃線3種字符組成,且第一個字符必須為字母或下劃線。C語言的標識符可以分為關鍵字、預定義標識符和用戶標識符。選項B)和C)中的橫線以及點都不合法,選項D)中的case為C語言關鍵字,故本題答案為A)。5.      答案:B【解析】C語言規定用戶標識符由字母、數字和下劃線組成,且第一個字符必須是字母或下劃線,可見選項C),D)是錯誤的;此外,C語言不允

29、許用戶將關鍵字作為標識符,而選項A)中的void正是C語言的關鍵字。6.      答案:C【解析】C語言規定的標識符只能由字母、數字和下劃線3種字符組成,第一個字符必須為字母或下劃線,并且不能使用C語言中的關鍵字作為標識符。選項C)中goto和int是關鍵字,b-a中"-"不是組成標識符的3種字符之一;選項D)中int是關鍵字,所以,均是不合法用戶標識符的選項是C)。7.      答案:B【解析】合法的標識符是由字母、數字和下劃線組成,并且第一個字符必

30、須為字母或下劃線,用戶定義的標識符不能與關鍵字相同。選項A),數字不能為第一個字母,auto為關鍵字;選項C)中,也是數字不能為第一個字母,else為關鍵字;選項D)中負號不合法。8.      答案:C【解析】C語言規定,標志符由字母、數字或下劃線組成,它的第一個字符必須是字母或下劃線。9.      答案:A【解析】C語言規定用戶標識符由英文字母、數字和下劃線組成,且第一個字符必須是字母或下劃線,由此可見選項B)、D)是錯的;此外,C語言不允許用戶將關鍵字作為標識符,而選

31、項C)中的int是C語言的關鍵字。10.      答案:A【解析】C程序的合法實數有兩種表示形式,一種是小數形式,另一種是指數形式,對于用指數形式表示的實數來說,需要注意的是字母e或E之前必須要有數字,且字母e或E后面的指數必須為整數,所以選項A)為正確答案。11.      答案:D【解析】A)選項中1,200不能表示整數1200。B)選項中應表示為1.5E2。在C語言中,反斜杠是轉義符,其后必須跟有其他字符,所以選項C)也是錯誤的。D)選項正確。12. 

32、60;    答案:A【解析】C語言中注釋可以放在任何位置,但不能夾在變量名或關鍵字中間,選項A)正確;C語言中的變量要在使用之前定義,C標準規定定義位置在相關程序塊的首部,選項B)錯誤;C語言中兩側數據類型可以不一致,系統可進行強制類型轉換,選項C)錯誤;C語言數值常量中不允許存在空格,選項D)錯誤。13.      答案:D【解析】 整型常量和實型常量統稱為數值型常量。本題中A)項是數字和字符的組合,不能構成數值型常量。B)項以0開頭代表該常量是一個8進制數,但其后面的數字中又出現了&quo

33、t;8",因此不正確。C)項用指數形式表示實型常量,但e后面必須為整數,不正確。D)項中一個常量后面加字母L表示長整型數據。因此,本題答案為D)。14.      答案:A【解析】選項B)是實型常量,選項C)是字符串常量,選項D)是轉義字符常量,都是合法的常量。15.      答案:A【解析】C語言中整型常量可用十進制、八進制和十六進制3種形式表示。16.      答案:B【解析】在C語言程序中,用單引

34、號把一個字符或反斜線后跟一個特定的字符括起來表示一個字符常量。選項A)、C)和D)為正確的字符常量;而選項B)是用雙引號括起來的字符,表示一個字符串常量,所以正確答案為選項B)。17.      答案:B【解析】本題考查的是各個進制數值常量的表示方法,八進制數據是以0開頭的常量,其數字包括,選項A)錯誤。浮點數據的指數表示中,e的右側必須為整數,選項C)錯誤。在選項D)中,10,000顯然是錯誤的。故本題的答案為B)。18.      答案:D【解析】字符串常量是一對雙引號括

35、起來的字符序列。選項A)中第二個雙引號"""被編譯系統解釋為轉義字符,選項A)錯誤,選項B)和C)顯然也不是字符串常量。故本題答案為D)。19.      答案:D【解析】C語言中沒有字符串類型,選項A)錯誤。比較任意兩個字符串的大小要通過字符串操作函數strcmp(      )來進行,而不能直接用關系運算符進行比較。選項B)和C)錯誤。空串是最小的字符串。故本題答案為D)。20.     &#

36、160;答案:B【解析】C語言的語法規定,字母e(E)之前必須有數字,且e(E)后面的指數必須是整數,而選項B)中,e(E)后面的指數是小數,所以不合法。21.      答案:A【解析】C語言中,一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號括起來作為字符常量,字符常量的的范圍是0127。由于字符常量用單引號括起來,所以選項B)、C)錯誤,選項D)超過了字符常量的表示范圍。22.      答案:A【解析】C語言的字符常量是用單引號(即撇號)括起來的一個字符

37、。除此之外,在C語言中還允許用一個""開頭的字符序列來表示字符常量。其中,形式"ddd"表示13位八進制數所代表的字符;形式"xhh"表示12位十六進制數所代表的字符。在本題中,'x13'表示回車符,是一個字符常量;'081'用八進制數所代表的字符,但形式不正確,因為八進制數所代表的字符中不會出現數字"8";'65'不是一個字符,而是一個十進制數字;"n"是用雙引號括起來的一個字符,表示一個字符串,而不是字符常量。23.  &#

38、160;   答案:D【解析】八進制中,不可能包括8以上的數字,它的范圍只在07之間,以0開頭。同樣,十六進制是以0x開頭,數字在09和AF之間。24.      答案:B【解析】字符串常量是由雙引號括起來的一串字符,其中的雙引號不可缺少。由此可知,選項A)、C)、D)都是合法的字符串常量,而選項B)是一個字符常量。25.      答案:B【解析】十六進制數以0x開頭,后面跟著若干位1f的數,所以正確答案為B)。26.  &

39、#160;   答案:C【解析】sizeof的作用就是返回一個對象或者類型所占的內存字節數。在VC6中整型占4個字節,雙精度實型占8個字節,所以選C)。27.      答案:D【解析】C語言中沒有邏輯類型,若只處理"真"或"假"兩種邏輯值,可以使用整型數"1"或"0"表示,故選D)。28.      答案:A【解析】 標識符不能與C編譯系統已經預定義的、具有特殊用途

40、的保留標識符(即關鍵字)同名,否則程序在編譯時會出現錯誤。題目源程序中使用了已經預定義的關鍵字case,所以將出現錯誤。29.      答案:B【解析】 用int方法定義變量時,編譯器僅為變量開辟存儲單元,并沒有在存儲單元中存放任何值,此時變量中的值是無確定的,稱變量值"無意義"。因此,本題正確答案為B)。30.      答案:C【解析】定義變量a和變量b為double類型,并對其賦初值。變量之間應以"," 分隔,定義關鍵字與變量名

41、之間應以空格分隔,語句應以";"結尾。31.      答案:D【解析】在ANSI標準中,long、int和short分別占用4、2和2個字節。但實際上對于某些C編譯系統,int和short卻都實際占用4個字節。所以說各種類型數據占用內存大小是由選擇何種C編譯系統決定的。故本題答案為D)。32.      答案:D【解析】在C語言所有的運算符中,逗號運算符的優先級最低。C語言中區分大小寫,所以APH和aph是兩個不同的變量。賦值表達式a=b表示將b的值付給

42、a,而b本身的值保持不變;通過鍵盤可以向計算機輸入允許的任何類型的數據。選項D)中當從鍵盤輸入數據時,對于整型變量可以輸入整型數值和字符,對于實型變量可以輸入實型數值和整型數值等。33.      答案:D【解析】C語言中算術運算符的結合性均為自左向右。選項D)中表達式計算結果是2*a*b*d/c,和題目要求的代數式不一致,因此選項D)不能正確表示題目所給的代數式內容。34.      答案:A【解析】在C語言中,"%"運算符兩側的運算數必須是整型。35.

43、      答案:B【解析】為了滿足運算,表達式需要轉化類型,此表達式的轉化結果是double型。36.      答案:D【解析】C語言中,字符數據參加運算時,實際上是其ASCII碼參與運算。大寫字母的ASCII碼比其對應的小寫字母的ASCII碼小32。因此大寫字母轉化為小寫字母只需將其加上32即可。所以選項B)、C)都符合條件,因為變量c中存儲的是大寫字母,所以"c-'A'"的值一定小于26,故選項A)與選項C)的含義相同。37.

44、60;     答案:C【解析】根據混合運算規則,如果有一個數據是float型或double型,則其他數據類型先轉化為double型,運算的結果最終也是double型。38.      答案:B【解析】 (int)(double)9/2)的值為4,(9)%2的值為1,因此(int)(double)9/2)(9)%2的值為3。39.      答案:A【解析】這道題目主要考查賦值表達式,對于賦值表達式來說,賦值號"=&

45、quot;的左邊一定為變量名,右邊為一個C語言合法的表達式。40.      答案:B【解析】A)選項中如果x與y的值相等那么取余時就會有除數為0的情況。C)選項中取余的兩個數據都應為整數,不能有一方為實型變量,而a*y的結果為double型。D)選項表達式本身就錯誤,不能給表達式賦值。所以,本題答案為B)。41.      答案:D【解析】題干中的表達式可以分解為以下表達式: a=9; a=a-a 即a=9-9,此時a的值為0; a=a+a 即a=0+0,此時a的值為0。故

46、本題的答案為D)。42.      答案:C【解析】C語言中取余運算符兩側的操作數只能是整型(若為char型,則會自動轉換成整型)。43.      答案:B【解析】 x-=x+x可化為:x=x-(x+x),由于x初始值為10,所以計算后,x=10-20=-10,因此選B)。44.      答案:C【解析】求余運算符"%"兩邊的運算對象必須是整型,而選項B)和D)中 "%"兩

47、邊的運算對象有浮點整數據,所以選項B)和D)是錯誤的表達式;在選項A)中賦值表達式的兩邊出現相同的變量x,也是錯誤的;選項C)是一個逗號表達式,所以正確答案為C)。45.      答案:A【解析】賦值運算符左側的操作數必須是一個變量,而不能是表達式或者常量,選項C)和D)錯誤。"%"運算符兩側都應當是整型數據,選項B)錯誤。故本題答案為A)。46.      答案:B【解析】選項A)中包含一個不合法的運算符":=";選項C)應改為(int)18.5%3;選項D)可理解為兩個表達式:a+7=c+b和a=a+7,其中第一個是錯的,因為C語言規定賦值號的左邊只能是單個變量,不能是表達式或常量等。因此,正確答案是選項B),它實際上相當于a=(b=c+2),進而可分解為兩個表達式:b=c+2和a=b。47.      答案:B【解析】本題中a的值為6,b的值為8,最后s的值為8,s*=s等價于ss*s。48.      答案:C【解析】本題中,程序先執行語句

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論