第三章數(shù)據(jù)類型,運(yùn)算符,表達(dá)式_第1頁
第三章數(shù)據(jù)類型,運(yùn)算符,表達(dá)式_第2頁
第三章數(shù)據(jù)類型,運(yùn)算符,表達(dá)式_第3頁
第三章數(shù)據(jù)類型,運(yùn)算符,表達(dá)式_第4頁
第三章數(shù)據(jù)類型,運(yùn)算符,表達(dá)式_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第三章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式【例題3-1】下列哪些是c語言提供的合法的數(shù)據(jù)關(guān)鍵字 A. Float B. signed C. integer D. Char 解析:此題的選項(xiàng)A和D中有一個(gè)字母是大寫字母,c語言的關(guān)鍵字不允許用大寫字母,所以是不正確的,c也不對,在c語言中,用int 而不用 integer做為整形數(shù)據(jù)定義的關(guān)鍵字,只有B是對的,signed是有符號的意思,是c語言中的一個(gè)關(guān)鍵字。答案:B【例題3-2】下面標(biāo)識符中,合法的用戶標(biāo)識符為A變量a B. fast+1 c. printf D. 2ab 解析:標(biāo)識符只能由字母、數(shù)字、下劃線三種字符組成。且第一個(gè)字符必須為字母或下劃線

2、。A是漢字不是上述三種情況之一,不能用做用戶標(biāo)識符。而B含有加號,加號不能用做標(biāo)識符。D是以數(shù)字開頭,不符合標(biāo)識符命名規(guī)則。C選項(xiàng)是c語言的庫函數(shù),可以做用戶標(biāo)識符。答案:C【例題3-3】下列屬于整形常量的是A0X12A B12x C-12. D1E2解析:十六進(jìn)制整數(shù)是以0x開頭,所以選項(xiàng)B不合法。選項(xiàng)C有小數(shù)點(diǎn)所以是實(shí)型常量的十進(jìn)制表示形式,D是實(shí)型常量的指數(shù)表示形式。c語言能用來表示整常數(shù)的有三種:十進(jìn)制、八進(jìn)制、十六進(jìn)制。A是整形常量的十六進(jìn)制表示形式。答案:A【例題3-4】下述四項(xiàng)中,合法的c語言整型常量是A. -087 B. 5L C. (long)123456 D. 1.23e+

3、2解析:選項(xiàng)A中087雖然是以0開頭的,但它不是一個(gè)八進(jìn)制數(shù),因?yàn)橐粋€(gè)八進(jìn)制數(shù)的數(shù)字字符在07之間,八進(jìn)制數(shù)前可以帶負(fù)號。選項(xiàng)C是一個(gè)表達(dá)式而不是一個(gè)常量。選項(xiàng)D是一個(gè)實(shí)形常量。選項(xiàng)B是在一個(gè)整數(shù)后加L構(gòu)成一個(gè)長整形常量。答案:B【例題3-5】以下不正確的實(shí)型常量是()A. 2. B.123E-2 C.-.543 D.2.1E3.5解析:1、實(shí)型常量的十進(jìn)制表示形式中,小數(shù)部分或整數(shù)部分可省略,但不能同時(shí)省略。2、在指數(shù)形式(fem或fEm)的表示中,f為十進(jìn)制整數(shù)或浮點(diǎn)數(shù),m必須是整數(shù),并且f和m都不能省略,“+”號可以省略,“-”號不能省略。)觀察以上A、B、C三個(gè)選項(xiàng)都是合法實(shí)型常量。選

4、項(xiàng)D中指數(shù)部分不是整數(shù),是錯誤的。答案:D【例題3-6】若有以下定義和語句: int u=010,v=0x10,w=10;printf(“%d,%d,%d”,u,v,w);則結(jié)果輸出為( )A8,16,10 B. 10,10,10 C. 8,8,10 D. 8,10,10解析:函數(shù)printf要求三個(gè)整形變量u,v,w按十進(jìn)制形式輸出,所以八進(jìn)制數(shù)“010”要轉(zhuǎn)換成十進(jìn)制數(shù)8,十六進(jìn)制數(shù)0x10要轉(zhuǎn)換成十進(jìn)制16。答案:A【例題3-7】下述常量中,哪些是不合法的常量A12 B“ ” C D“483”解析:顯然,B和D是字符串常量,A是字符常量。選項(xiàng)A是一個(gè)普通的八進(jìn)制轉(zhuǎn)義字符,ASCII值為1

5、0。B是空字符串。選項(xiàng)D初看起來是一個(gè)八進(jìn)制轉(zhuǎn)義序列。但因?yàn)?超過了八進(jìn)制范圍,系統(tǒng)自動將其識別為4、8和3組成,在輸出時(shí)顯示為“83”。選項(xiàng)c僅由兩個(gè)連續(xù)的單引號組成,是錯誤的字符常量。答案:C【例題3-8】以下不合法的常量是()A. 6 B. C.286 D.”286”解析:B選項(xiàng)是空字符串常量,此串僅占用一個(gè)字節(jié)。A選項(xiàng)為轉(zhuǎn)義字符。D選項(xiàng)為字符串常量,而C選項(xiàng)看似為轉(zhuǎn)義字符,但超過了后的八進(jìn)制的表示范圍,是不合法的。答案:C【例題3-9】字符串” ” A A A 1 2 3 x A A t”的長度為A.8 B.17 C.14 D.10解析:c語言對上述問題的處理方法是從左向右盡可能多的將

6、連續(xù)的字符組成一個(gè)有意義的項(xiàng)。所以為轉(zhuǎn)義字符,”為轉(zhuǎn)義字符輸出為”。AAA是三個(gè)普通字符。123也是轉(zhuǎn)義字符。XAA是轉(zhuǎn)義字符。 t為一個(gè)轉(zhuǎn)義字符。答案:A【例題3-10】下列選項(xiàng)中,( )是正確的轉(zhuǎn)義字符。A' xef' B' 082' C' xab ' D' '解析:B選項(xiàng)“”后應(yīng)為1-3位八進(jìn)制,但8超過了八進(jìn)制的表示范圍,故是錯誤的。C選項(xiàng)不是轉(zhuǎn)義字符的表示形式。D選項(xiàng)不是轉(zhuǎn)義字符的正確表示形式。A選項(xiàng)表示十六進(jìn)制ef所表示的字符。答案:A【例題3-11】下面程序段的結(jié)果是int i=65536;printf(“%dn”,

7、 i);A. 65536 B. 0 C. 有語法錯誤,無出結(jié)果 D. 1解析:c語言規(guī)定,int 類型變量占兩個(gè)字節(jié)的存儲單元,表示的數(shù)值范圍為-3276832767,題目中的i賦值為65536,已超過兩個(gè)字節(jié)所能表示的數(shù)值,c語言認(rèn)為這并不是出錯,而是自動取低位兩個(gè)字節(jié)的內(nèi)容。將該數(shù)減去整型數(shù)據(jù)類型的模,所以65536-65536=0答案:B【例題3-12】若int類型數(shù)據(jù)占兩個(gè)字節(jié),則執(zhí)行以下語句的輸出為()int k=-1;printf(“%d,%un”,k,k);A. 1,-1 B.-1,32767 C.-1,32768 D.-1,65535解析:c語言中,負(fù)數(shù)在內(nèi)存中是以補(bǔ)碼形式存在

8、的。k=-1在內(nèi)存中的存儲形式是1111 1111 1111 1111,當(dāng)把k的值按“%d”格式(有符號整數(shù))輸出時(shí)為-1。按“%u”格式(無符號整數(shù))輸出時(shí)為65535。答案:D補(bǔ)充:求負(fù)數(shù)的補(bǔ)碼(以-7為例) (1)寫出絕對值|-7|的二進(jìn)制表示形式 0000 0000 0000 0111(2)按位取反(即將0變?yōu)?,將1變?yōu)?) 1111 1111 1111 1000(3)末位加1即得到-7在內(nèi)存中的表示形式 1111 1111 1111 1001【例題3-13】在下述輸出語句的判定中,正確的是()int x=0x123456L;long int y=0xe;printf(“%x,%ld

9、”,x,y);A.輸出值為3456,14 B.非法賦值 C.輸出值不確定 D.輸出值為0x123456,0xe解析:Long型數(shù)據(jù)0x123456L賦給int 型變量x,系統(tǒng)自動對其進(jìn)行類型轉(zhuǎn)換,將數(shù)據(jù)中低16位3456賦值給x,舍棄高16位的0x0012。將0xe賦值給long型變量y,其值送到y(tǒng)的低16位,因?yàn)?xe是正數(shù),所以變量y 的高16位補(bǔ)0。十六進(jìn)制0xe的十進(jìn)制為14。故選項(xiàng)A是正確的。答案:A【例題3-14】下列程序的輸出是#include <stdio.h>main( )printf(“%d”,null);A. 0 B. 變量無定義 C. 1 D. 1解析:(1

10、)要把此處的null與c語言中預(yù)定義表標(biāo)識符NULL區(qū)分開。NULL是在頭文件stdio.h中定義的的標(biāo)識符,它代表0;而null是小寫拼音字母拼寫,因此不能將它當(dāng)做NULL,而是一般的用戶標(biāo)識符。(2)c語言規(guī)定,程序中用到的所有變量在使用前必須先進(jìn)行定義,而本題中的程序在對null做輸出處理之前對它沒有給出明確的變量定義答案:B【例題3-15】若k為整形變量,則以下語句int a=-2L;printf(“%dn”,a);A. 賦值不合法 B. 輸出值為-2 C. 輸出為不確定值 D.輸出值為2解析:本題的主要關(guān)鍵是要弄清c語言 中常量的表示方法和有關(guān)的賦值原則。在一個(gè)整形常量后面加一個(gè)L則

11、被認(rèn)為是長整形常量。一個(gè)整常量,如果其值在-32768-32767之間內(nèi),可以賦給一個(gè)int型或long int 型變量。但如果整常量的值超過了上述范圍,而在-2147483648-2147483674范圍內(nèi),則應(yīng)將其值賦給一個(gè)long int型變量。本例中-2L雖然為long int但是其值為-2,因此可以通過類型轉(zhuǎn)換把長整形轉(zhuǎn)換為短整形,然后賦給整形變量a,并按照%d格式輸出該值即為-2。答案:B【例題3-16】在c語言中,若下面的變量都是int類型 的,則輸出的結(jié)果是sum=pad=5;PAD=sum+,PAD+, +PAD;printf(“%dn”,pad);A. 7 B. 6 C.

12、5 D. 4 解析:在c語言中,標(biāo)識符的大小寫含義是不同的,因而本題中的pad和PAD分別代表兩個(gè)不同的變量名稱。由于pad已賦值為5,所以顯示pad的結(jié)果也是5。答案:C【例題3-17】已知ch是字符變量,以下不正確的賦值語句是()A. ch=“a”; B. ch=a; C. ch=141; D. ch=x61+3;解析:a是字符占用一個(gè)字節(jié)?!癮”是字符串占用兩個(gè)字節(jié),不能賦值給字符型變量,因?yàn)樽址妥兞恐荒艽娣乓粋€(gè)字節(jié)的內(nèi)容。所以A應(yīng)該是錯誤的。C選項(xiàng)和D選項(xiàng)是轉(zhuǎn)義字符分別用八進(jìn)制和十六進(jìn)制的ASCII碼表示字符常量a和d。答案:A【例題3-18】下面選項(xiàng)中,()是對字符變量不正確的賦值

13、方式Ach=$ Bch=7+3 Cch=t Dch=a+b解析:A選項(xiàng)是將字符$賦給字符變量。選項(xiàng)B 是數(shù)字字符7與整數(shù)3相加做算術(shù)運(yùn)算。C語言中字符型數(shù)據(jù)和整形數(shù)據(jù)間可以通用,一個(gè)字符型數(shù)據(jù)既可以按字符型數(shù)據(jù)處理也可以按整形數(shù)據(jù)處理。按整形數(shù)據(jù)處理時(shí)將ASCII值作為整數(shù)處理,故字符數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算。選項(xiàng)c為轉(zhuǎn)義字符。選項(xiàng)D單引號括起來三個(gè)字符。而字符常量是單引號括起來的一個(gè)字符,字符型變量用來存放一個(gè)字符型常量,且只能放一個(gè)字符。故選項(xiàng)D為錯誤。答案:D 【例題3-19】若有以下定義和語句char c1=b,c2=e;printf(“%d,%cn”,c2-c1,c2-a+A);則輸出結(jié)

14、果是A2,M B3,E C2,e D輸出項(xiàng)與對應(yīng)的格式控制不一致,輸出結(jié)果不穩(wěn)定解析:c語言中規(guī)定,字符型常量在內(nèi)存中占一個(gè)字節(jié),用于存放字符的ASCII值。所有字符型常量都作為整形量處理,其對應(yīng)的整數(shù)值就是ASCII字符集中該字符的序號。執(zhí)行表達(dá)式“c2-c1”相當(dāng)于字符e與字符b的ASCII碼值相減,即101-98得3。而“c2-a+A”即101-97+65得69,而ASCII碼值69對應(yīng)的字符是E。答案:B【例題3-20】請選出合法的c語言賦值語句Aa=b=58 Bi+; Ca=58,b=58 Dk=int(a+b); 解析:由于c語言規(guī)定,c程序中的任一語句都必須有一個(gè)分號做結(jié)束標(biāo)志,

15、分號是構(gòu)成任何語句的重要成分,所以答案A、C均錯。答案D中的書寫int(a+b)是完全錯誤的,根據(jù)c語言規(guī)定,使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的書寫形式為:(類型名)(表達(dá)式),所以答案D應(yīng)改寫為:k=(int)(a+b)。答案B 當(dāng)于語句i=i+1;由此可見,該語句是合法的賦值語句。答案:B【例題3-21】已知:a的ASC碼值為97,0的ASC碼值為48,下述程序的輸出結(jié)果是 #include<stdio.h>main()printf(“%s”,”tabc%L”064x41085”);A.abc%L”4A B.tabc%L”064x41085C.abc%L”0A D. abc%L”0A08

16、5解析:(1)轉(zhuǎn)義字符“t”的作用是使后面的輸出跳到下一個(gè)輸出區(qū)。一個(gè)輸出區(qū)為8列。(2)abc為三個(gè)普通字符,原樣輸出。(3)對應(yīng)“ ” 的輸出是單撇號和雙撇號。(4)“%”后面不是格式字符, 它作為普通字符輸出,即輸出一個(gè)“%”?!癓”是普通字符,原樣輸出。(5)轉(zhuǎn)義字符的ASCII碼表示一個(gè)字符,八進(jìn)制的轉(zhuǎn)義字符“064”為八進(jìn)制,轉(zhuǎn)換為十進(jìn)制為52,表示字符4。十六進(jìn)制的“x41”表示字符A。(6)“085”不是八進(jìn)制的ASCII碼表示的一個(gè)字符,而是0、8、 5字符,輸出時(shí)輸出到第一個(gè)空字符0時(shí)結(jié)束,所以,8、 5不輸出。答案:A【例題3-22】下列語句中,符合c語言語法的賦值語句是

17、Aa=7+b+c=a+c; Ba=7+b+=a+7; C a=7+b,b+,a+ D.a=7+b,c=a+7;解析:答案A 和B均錯,c語言中的賦值運(yùn)算符的左邊只能是變量或表示一個(gè)存儲單元的表達(dá)式。答案c錯,c 語言中規(guī)定任何語句都必須有一個(gè)分號來結(jié)束。答案D 正確,c語言允許用逗號運(yùn)算符把若干個(gè)表達(dá)式連接起來形成逗號表達(dá)式。答案:D【例題3-23】經(jīng)過下述賦值后,變量x的數(shù)據(jù)類型是()int x=3; double y; y=(double)x;A.int B.char C.float D.double解析:將變量x的值3強(qiáng)制轉(zhuǎn)換成double類型,再賦值給y,變量x的數(shù)據(jù)類型還是int型。

18、因?yàn)槿魏巫兞慷x后其數(shù)據(jù)類型不能改變。答案:A【例題3-24】以下程序的輸出結(jié)果( )main( )float x=3.6;int i;i=(int)x;printf(“x=%f,i=%d”,x,i);A.x=3.600000,i=4 B. x=3, i=3 C. x=3.600000,i=3 D. x=3 i=3.600000解析:變量被作強(qiáng)制類型轉(zhuǎn)換后,其類型不會改變,改變的只有表達(dá)式的值,因此,執(zhí)行語句i=(int )x 后,x的值仍為3.6 ,但i的值為3。答案:C【例題3-25】設(shè)x=2.5,a=7,y=4.7,算術(shù)表達(dá)式x+a%3*(int)(x+y)%2/4 的值A(chǔ)2.5 B7

19、C4.7 D2.25 解析:取模運(yùn)算只能在整形數(shù)據(jù)之間進(jìn)行,a為整形變量。因?yàn)?、*、/這三個(gè)運(yùn)算符的優(yōu)先級別相同,類型轉(zhuǎn)換符優(yōu)先于*、/運(yùn)算符,a的值為7,7%3=1,又因?yàn)椋╥nt)(2.5+4.7)=7,1*7=7,7%2=1,1/4=0,所以表達(dá)式 x+a%3*(int)(x+y)%2/4=x+0=2.5答案:A【例題3-26】下述程序的輸出結(jié)果main()int a=016;a%=6-1;printf(“%d,”,a);a+=a*=a/=3;printf(“%d,”,a+);printf(“%d”,+a);A.4,0,3 B.4,0,2 C. 4,2,4 D. 4,1,3解析:(1)

20、016是八進(jìn)制整形常量,十進(jìn)制表示為14。復(fù)合的賦值運(yùn)算符的優(yōu)先級別比算術(shù)運(yùn)算符“-”的優(yōu)先級別低,先計(jì)算6-1=5,在計(jì)算a%5(即14%5得4)賦值給a,所以a的值是4,先輸出4。(2)計(jì)算a/=3(即4/3等于1,賦值給a,a的值為1)。計(jì)算a*=1(a*1等于1*1,賦值給a,a的值為1),計(jì)算a+=1(a+1等于1+1=2,賦值給a,a的值為2)。(3)執(zhí)行printf(“%d,”,a+);語句,先輸出a的值為2,然后,變量a的值在自增1(a 的值為3)。(4)執(zhí)行printf(“%d,”,+a);語句,先將變量a的值自增1(a 的值為4),再輸出a的值4。答案:C【例題3-27】以

21、下程序的輸出結(jié)果是()main( )int a=1,b=2,c=3,k;k=a+b+c+;printf(“n%d,%d,%d,%d”,a,b,c,k);A.1,2,3,6 B.2,3,4,6 C.1,3,3,7 D.1,3,3,6解析:表達(dá)式a+b+c+應(yīng)理解為:(a+)+(b+)+(c+)所以執(zhí)行此語句后,k的值是6,a的值是2,b的值是3,c的值是4,輸出結(jié)果為:2,3,4,6。答案:B【例題3-28】下面正確的語句是()A. int x=y=25; B.int z=(x+y)+; C. x=+8= =7; D.x % =4.5;解析:在c 語言中,可以在定義變量時(shí)對變量初始化,例如:int x=25,但是,對幾個(gè)變量賦同一初值時(shí)不

溫馨提示

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

評論

0/150

提交評論