大一各種試題-c語言課件第三講_第1頁
大一各種試題-c語言課件第三講_第2頁
大一各種試題-c語言課件第三講_第3頁
大一各種試題-c語言課件第三講_第4頁
大一各種試題-c語言課件第三講_第5頁
已閱讀5頁,還剩134頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C高級語言程序設(shè)計(jì)

計(jì)算機(jī)學(xué)院許可

3.1順序程序設(shè)計(jì)舉例3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.3C語句3.4數(shù)據(jù)的輸入輸出第3章最簡單的C程序設(shè)計(jì)——順序程序設(shè)計(jì)3.1順序程序設(shè)計(jì)舉例例3.1P37例3.2P383.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量3.2.2數(shù)據(jù)類型3.2.3整型數(shù)據(jù)3.2.4字符型數(shù)據(jù)3.2.5浮點(diǎn)型數(shù)據(jù)3.2.5怎樣確定常量的類型3.2.7運(yùn)算符和表達(dá)式3.2.1常量和變量數(shù)據(jù)有兩種表現(xiàn)形式:常量和變量常量:在程序運(yùn)行過程中,其值不能被改變的量稱為常量。變量:在程序運(yùn)行過程中,其值可以改變的量稱為變量。3.2.1常量和變量——常量常量區(qū)分為不同的類型:整型常量:12,0,-3實(shí)型常量:4.6,-1.23字符常量:’a’,’d’,’n’,’\n’字符串常量:”Helloworld\n”符號常量:#defineprice303.2.1常量和變量——常量

——實(shí)型常量實(shí)數(shù)有兩種表示形式:十進(jìn)制形式:123.456指數(shù)形式:12.34e3(代表12.34x)e或E之前必須有數(shù)字,如e4錯(cuò)誤!e或E后面必須為整數(shù),如12e2.5錯(cuò)誤!3.2.1常量和變量——常量

——字符常量普通字符:單撇括起來的一個(gè)字符,如‘a(chǎn)’‘Z’,不能是’ab’字符在內(nèi)存里面是一個(gè)編碼(ASCII)3.2.1常量和變量——常量

——字符常量轉(zhuǎn)義字符:表示將\后面的字符轉(zhuǎn)換成另外的意義‘\r’回車;‘\n’換行;‘\101’‘\x41’相當(dāng)于‘A’試驗(yàn)一下:printf("hello\nworld\12");八進(jìn)制十六進(jìn)制3.2.1常量和變量——常量

——符號常量例3.1符號常量的使用。

#definePRICE30//宏定義main(){intnum,total;num=10;total=num*PRICE;printf(“price=%d\n”,PRICE); printf("total=%d",total);}toal=num*30;//編譯預(yù)處理后……printf(“price=%d\n”,30);//編譯預(yù)處理后……使用符號常量的意義習(xí)慣上,符號常量(宏)名用大寫,變量用小寫,以示區(qū)別。使用符號常量(宏)的好處是:(1)含義清楚。如上面的程序中,看程序時(shí)從price就可知道它代表價(jià)格。因此定義符號常量名時(shí)應(yīng)考慮“見名知意”。在一個(gè)規(guī)范的程序中不提倡使用很多的常數(shù),如:sum=15*30*23.5*43。(2)在需要改變一個(gè)常量時(shí)能做到“一改全改”。例如在程序中多處用到某物品的價(jià)格,如果價(jià)格用常數(shù)表示,則在價(jià)格調(diào)整時(shí),就需要在程序中作多處修改,若用符號常量price代表價(jià)格,只需改動(dòng)一處即可。如: #definePRICE35

在程序中所有以PRICE代表的價(jià)格就會一律自動(dòng)改為35。3.2.1常量和變量——變量其值可以改變的量稱為變量。一個(gè)變量應(yīng)該有一個(gè)名字,在內(nèi)存中占據(jù)一定的存儲單元。在該存儲單元中存放變量的值。區(qū)分變量名和變量值這兩個(gè)不同的概念3.2.1常量和變量——變量

——變量標(biāo)識符C語言變量標(biāo)識符規(guī)則:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。大寫字母和小寫字母被認(rèn)為是兩個(gè)不同的字符。變量標(biāo)識符不能是C語言的關(guān)鍵字,見P378附錄C下面列出的是合法的標(biāo)識符,也是合法的變量名:sum,average,_total,class,day,month,

student-name,tan,lotus-1-2-3,basic,li-ling下面是不合法的標(biāo)識符和變量名:

M.d.John,

¥123,#33,3d64,a>b3.2.1常量和變量——變量

——常變量在生存期內(nèi)不改變其值的變量稱常變量constinta=3常變量與符號常量的區(qū)別#definePi3.14159constfloat

Pi=3.14159;編譯前預(yù)處理將符號常量(宏)替換成常數(shù),不占據(jù)內(nèi)存空間常變量需要申請內(nèi)存空間變量命名規(guī)范在選擇變量名和其他標(biāo)識符時(shí),應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標(biāo)識符如count、name、day、month、total、country等除了數(shù)值計(jì)算程序外,一般不要用代數(shù)符號(如a、b、c、x1、y1等)作變量名參考《編程規(guī)范》文檔變量和常量知識點(diǎn)如何定義一個(gè)變量常變量和符號常量的區(qū)別變量標(biāo)識符的合法性判斷(必考)概念比較:常量變量不占內(nèi)存空間占用內(nèi)存空間整型常量:123整型變量:inta;浮點(diǎn)型常量:3.14浮點(diǎn)型變量:floata;字符型常量:’a’字符型變量:chara;符號常量:#defineA123常變量:constinta=123習(xí)題1、C語言中的標(biāo)識符只能由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符()A)必須為字母

B)必須為下劃線C)必須為字母或下劃線D)可以是字母、數(shù)字和下劃線中的任一種字符2、下面四個(gè)選項(xiàng)中,均是不合法的變量標(biāo)識符的選項(xiàng)是A) AB)float C)b-a D)一123 P_0la0 goto temp do一A int INT習(xí)題1、C語言中的標(biāo)識符只能由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符(C)A)必須為字母

B)必須為下劃線C)必須為字母或下劃線D)可以是字母、數(shù)字和下劃線中的任一種字符2、下面四個(gè)選項(xiàng)中,均是不合法的變量標(biāo)識符的選項(xiàng)是(C)A) AB)float C)b-a D)一123 P_0la0 goto temp do一A int INT3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量3.2.2數(shù)據(jù)類型3.2.3整型數(shù)據(jù)3.2.4字符型數(shù)據(jù)3.2.5浮點(diǎn)型數(shù)據(jù)3.2.5怎樣確定常量的類型3.2.7運(yùn)算符和表達(dá)式數(shù)據(jù)類型所謂類型,就是對數(shù)據(jù)分配存儲單元的安排,包括存儲單元的長度(占多少字節(jié))以及數(shù)據(jù)的存儲形式。不同類型分配不同的長度和存儲形式。C語言數(shù)據(jù)類型3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量3.2.2數(shù)據(jù)類型3.2.3整型數(shù)據(jù)3.2.4字符型數(shù)據(jù)3.2.5浮點(diǎn)型數(shù)據(jù)3.2.5怎樣確定常量的類型3.2.7運(yùn)算符和表達(dá)式3.2.3整型數(shù)據(jù)進(jìn)制轉(zhuǎn)換c整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。如123,-456,0。(2)八進(jìn)制整數(shù)。以0開頭的數(shù)是八進(jìn)制數(shù)。如0123表示八進(jìn)制數(shù)123,即(123)8,其值為:1×82+2×81+3×80,等于十進(jìn)制數(shù)83。-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。(3)十六進(jìn)制整數(shù)。以0x開頭的數(shù)是十六進(jìn)制數(shù)。如0x123,代表十六進(jìn)制數(shù)123,即(123)16=1×162+2×161+3×160=256+32+3=291。-0x12等于十進(jìn)制數(shù)-18。3.2.3整型數(shù)據(jù)整型變量的保存

整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。如果定義了一個(gè)整型變量i:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/十進(jìn)制數(shù)10的二進(jìn)制形式為1010,在VC編譯系統(tǒng),每一個(gè)整型變量在內(nèi)存中占4個(gè)字節(jié)3.2.3整型數(shù)據(jù)整型的補(bǔ)碼表示(complement)正數(shù)的補(bǔ)碼和其原碼的形式相同。例如求10的補(bǔ)碼:…00001010負(fù)數(shù)的補(bǔ)碼是將該數(shù)的絕對值的二進(jìn)制形式,按位取反再加1。例如求-10的補(bǔ)碼:①取-10的絕對值10;②10的絕對值的二進(jìn)制形式為1010;③對1010取反得…11110101(一個(gè)整數(shù)占32位);④再加1得…11110110。3.2.3整型數(shù)據(jù)整型變量的存儲空間和取值范圍參見P45VC中整型變量的取值范圍和存儲空間3.2.3整型數(shù)據(jù)整型變量的溢出在vc中一個(gè)int型變量的最大允許值為2147483647,如果再加1,會出現(xiàn)什么情況? main()

{ inta,b;

a=2147483647; b=a+1; printf("%d,%d",a,b);}整型溢出a01111111111111112147483647b1000000000000000-2147483648分析:b的首位是1,說明是負(fù)數(shù),補(bǔ)碼是取反加1,即(000000000000000)反+1=111111111111111+1得到1000000000000000,即-21474836483.2.3整型數(shù)據(jù)整型變量的符號屬性(1)基本整型,以int表示。(2)短整型,以shortint表示,或以short表示。(3)長整型,以longint表示,或以long表示。對以上三種都可以加上修飾符unsigned,以指定是“無符號數(shù)”。如果加上修飾符signed,則指定是“有符號數(shù)”。如果既不指定為signed,也不指定為unsigned,則隱含為有符號(signed)。實(shí)際上signed是完全可以不寫的。變量值在存儲單元中以補(bǔ)碼形式存儲,存儲單元中第一個(gè)二進(jìn)制位代表符號無符號型變量只能存放不帶符號的整數(shù),如123、4687等,而不能存放負(fù)數(shù),如-123、-3。一個(gè)無符號整型變量中可以存放的正數(shù)的范圍比一般整型變量中正數(shù)的范圍擴(kuò)大一倍。3.2.3整型數(shù)據(jù)整型變量的符號屬性如果在程序中定義a和b兩個(gè)變量(若int16位)則:

inta;

unsignedintb;a數(shù)值范圍為-32768~32767b數(shù)值范圍為0~655353.2.3整型數(shù)據(jù)整型變量的符號屬性以int16位系統(tǒng)為例,列舉有符號與無符號數(shù)據(jù)只有整型(包括字符型)數(shù)據(jù)可以加signed或unsigned整型數(shù)據(jù)知識點(diǎn)會定義整型變量整型數(shù)據(jù)的三種主要類型:intshortlong整型數(shù)據(jù)在內(nèi)存中的存儲形式——補(bǔ)碼無符號整數(shù)與有符號整數(shù)的存儲形式和取值范圍,溢出的概念(P45頁表格)習(xí)題1.在C語言中,int類型的數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)()

由用戶自己定義

B為2個(gè)字節(jié)

C 為4個(gè)字節(jié) D由編譯系統(tǒng)決定2.如果一個(gè)int型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),則unsignedint型數(shù)據(jù)的取值范圍為

() A0~255B0~32767C0~65535D0~21474836473、下面四個(gè)選項(xiàng)中,均是合法整型常量的選項(xiàng)是:A)160 B)一0xcdf C)一01 D)一0x48a

一0xffff 01a 986,012 2e5011 0xe 0668 0x習(xí)題1.在C語言中,int類型的數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)(D)

由用戶自己定義

B為2個(gè)字節(jié)

C 為4個(gè)字節(jié)

D由編譯系統(tǒng)決定2.如果一個(gè)int型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),則unsignedint型數(shù)據(jù)的取值范圍為

(C) A0~255B0~32767C0~65535D0~21474836473、下面四個(gè)選項(xiàng)中,均是合法整型常量的選項(xiàng)是(A)A)160 B)一0xcdf C)一01 D)一0x48a

一0xffff 01a

986,012

2e5011 0xe 0668

0x3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量3.2.2數(shù)據(jù)類型3.2.3整型數(shù)據(jù)3.2.4字符型數(shù)據(jù)3.2.5浮點(diǎn)型數(shù)據(jù)3.2.5怎樣確定常量的類型3.2.7運(yùn)算符和表達(dá)式字符型數(shù)據(jù)字符常量C的字符常量是用單引號(即撇號)括起來的一個(gè)字符。如‘a(chǎn)’,‘x’,‘d’,‘?’,‘’等都是字符常量ASCII碼字符與字符代碼并不是任意一個(gè)字符程序都能識別的。只能使用系統(tǒng)的字符集中的字符,目前大多數(shù)系統(tǒng)采用ASCII字符集,包括127個(gè)字符。字符型數(shù)據(jù)轉(zhuǎn)義符字符型數(shù)據(jù)字符變量字符型變量用來存放字符常量,請注意只能放一個(gè)字符,不要以為在一個(gè)字符變量中可以放一個(gè)字符串(包括若干字符)。字符變量的定義形式如下:

char

c1,c2;它表示c1和c2為字符型變量,各可以放一個(gè)字符,因此在本函數(shù)中可以用下面語句對c1、c2賦值:

c1='a';c2='b';在所有的編譯系統(tǒng)中都規(guī)定以一個(gè)字節(jié)來存放一個(gè)字符,或者說一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法將一個(gè)字符常量放到一個(gè)字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中。例如字符’a’的ASCII代碼為97,’b’為98,在內(nèi)存中變量c1、c2的值如圖(a)所示。實(shí)際上是以二進(jìn)制形式存放的,如圖(b)所示。字符型數(shù)據(jù)字符型數(shù)據(jù)字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法

一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。以字符形式輸出時(shí),需要先將存儲單元中的ASCII碼轉(zhuǎn)換成相應(yīng)字符,然后輸出。以整數(shù)形式輸出時(shí),直接將ASCII碼作為整數(shù)輸出。也可以對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)相當(dāng)于對它們的ASCII碼進(jìn)行算術(shù)運(yùn)算。例

向字符變量賦以整數(shù)。main(){ charc1,c2;c1=97;c2=98;printf("%c%c\n",c1,c2);/*以字符形式輸出*/printf("%d%d\n",c1,c2);/*轉(zhuǎn)換為整數(shù)形式輸出*/} c1、c2被指定為字符變量。但在第3和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當(dāng)于以下兩個(gè)賦值語句:c1='a';c2='b'; c1=‘a(chǎn)’和c2=‘b’是先將字符'a'和'b'化成ascii碼97和98,然后放到內(nèi)存單元中。c1='a';c2='b';‘a(chǎn)’和’b’的ASCII碼為97和98。第3和第4行是把97和98兩個(gè)整數(shù)直接存放到c1和c2的內(nèi)存單元中。輸出兩個(gè)字符a和b。“%c”是以字符的格式輸出數(shù)據(jù)。輸出兩個(gè)整數(shù)97和98。%d是以整型的格式輸出數(shù)據(jù)。printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2)字符型數(shù)據(jù)例

大小寫字母的轉(zhuǎn)換。

main(){ charc1,c2;

c1='a';

c2='b'; c1=c1-32; c2=c2-32; printf("%c

%c",c1,c2);}運(yùn)行結(jié)果為

ABc語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算,即:'a'+32會得到整數(shù)97,'a'-32會得到整數(shù)65。字符型數(shù)據(jù)字符型數(shù)據(jù)的取值范圍類型

字節(jié)數(shù)取值范圍signedchar(有符號)1-128~127unsignedchar(無符號)10~255VC中默認(rèn)當(dāng)作signedchar0~127為基本字符集,128~255部分為擴(kuò)展字符集,參見附錄B字符型數(shù)據(jù)知識點(diǎn)會表示合法的字符常量理解ASCII碼的概念字符型變量的內(nèi)存分配會字符變量的兩種賦值方式(’字符’,編碼)習(xí)題1、下面正確的字符常量是: A)"a"B)'\\''C)'W'D)'‘2、在C語言中,char型數(shù)據(jù)在內(nèi)存中的存儲形式是 A)補(bǔ)碼B)反碼C)原碼D)ASCⅡ碼3、已知字母A的ASCⅡ碼為十進(jìn)制數(shù)65,且定義c2為字符型變量,則執(zhí)行語句c2=ˊAˊ+ˊ6ˊ-ˊ3ˊ;后,c2中的值為: A)DB)68C)不確定的值D)C習(xí)題1、下面正確的字符常量是(C) A)"a"B)'\\''C)'W'D)'‘2、在C語言中,char型數(shù)據(jù)在內(nèi)存中的存儲形式是(D) A)補(bǔ)碼B)反碼C)原碼D)ASCⅡ碼3、已知字母A的ASCⅡ碼為十進(jìn)制數(shù)65,且定義c2為字符型變量,則執(zhí)行語句c2=ˊAˊ+ˊ6ˊ-ˊ3ˊ;后,c2中的值為(A)65+54-51 A)DB)68C)不確定的值D)C3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量3.2.2數(shù)據(jù)類型3.2.3整型數(shù)據(jù)3.2.4字符型數(shù)據(jù)3.2.5浮點(diǎn)型數(shù)據(jù)3.2.5怎樣確定常量的類型3.2.7運(yùn)算符和表達(dá)式3.2.5浮點(diǎn)型數(shù)據(jù)在常用的微機(jī)系統(tǒng)中,一個(gè)實(shí)型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié)(32位)。與整型數(shù)據(jù)的存儲方式不同,實(shí)型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個(gè)實(shí)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。實(shí)數(shù)3.14159在內(nèi)存中的存放形式可以用圖示意。3.2.5浮點(diǎn)型數(shù)據(jù)實(shí)型變量的分類 C實(shí)型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類教材P503.2.5浮點(diǎn)型數(shù)據(jù)有效位數(shù)是怎么來的?

0.314159x10

float共4字節(jié): 32位=8位(指數(shù)位)+23位(小數(shù)位)+1位(符號) 2=8388608,所以有效數(shù)字是七位,但是只能保證6位,因?yàn)?位表示不了全部,即有效數(shù)字是0~999999 28=256指數(shù)范圍為-127~128,取值范圍為2-127~2128,也即1.20E-38~+3.40E+381有效位數(shù),即小數(shù)位為6位233.2.5浮點(diǎn)型數(shù)據(jù)規(guī)范化指數(shù)形式3.14159的規(guī)范化指數(shù)形式:

0.314159X10在程序中可表示為:0.314159e001.314159e0011注意:小數(shù)點(diǎn)前的0可以省略3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量3.2.2數(shù)據(jù)類型3.2.3整型數(shù)據(jù)3.2.4字符型數(shù)據(jù)3.2.5浮點(diǎn)型數(shù)據(jù)3.2.5怎樣確定常量的類型3.2.7運(yùn)算符和表達(dá)式如何確定常量的類型整型常量不帶小數(shù)點(diǎn)的都是整型常量系統(tǒng)根據(jù)數(shù)值的大小決定其類型(int;long;longlong…)浮點(diǎn)型常量以小數(shù)或指數(shù)形式出現(xiàn)的實(shí)數(shù)是浮點(diǎn)型常量浮點(diǎn)型默認(rèn)按照雙精度處理doublefloata=3.14159;//作為雙精度處理,編譯告警可在常量末尾加專用字符,強(qiáng)制指定類型floata=3.14159f;//作為單精度處理,編譯不告警習(xí)題下面4個(gè)選項(xiàng)中,均是合法浮點(diǎn)數(shù)的選項(xiàng)是

A+1e+15e-9.403e2

B-.6012e-4-8e5

C123e1.2e-.4+2e-1 D-e3.8e-45.e-0習(xí)題下面4個(gè)選項(xiàng)中,均是合法浮點(diǎn)數(shù)的選項(xiàng)是B

A+1e+15e-9.403e2

B-.6012e-4-8e5

C123e1.2e-.4+2e-1 D-e3.8e-45.e-0規(guī)律: e的前面必須有數(shù);e的后面必須是整數(shù);3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量3.2.2數(shù)據(jù)類型3.2.3整型數(shù)據(jù)3.2.4字符型數(shù)據(jù)3.2.5浮點(diǎn)型數(shù)據(jù)3.2.5怎樣確定常量的類型3.2.7運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式1.基本算術(shù)運(yùn)算符+ (加法運(yùn)算符,或正值運(yùn)算符。如3+5、+3)- (減法運(yùn)算符,或負(fù)值運(yùn)算符。如5-2、-3)* (乘法運(yùn)算符。如3*5)/ (除法運(yùn)算符。如5/3)% (模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如 7%4的值為3)。兩個(gè)整數(shù)相除的結(jié)果為整數(shù),如5/3的結(jié)果值為1,舍去小數(shù)部分。但是,如果除數(shù)或被除數(shù)中有一個(gè)為負(fù)值,則舍入的方向是不固定的。例如,-5/3在有的機(jī)器上得到結(jié)果-1,有的機(jī)器則給出結(jié)果-2。多數(shù)機(jī)器采取“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠攏。如果參加+,-,*,/運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為實(shí)數(shù),則結(jié)果是double型,因?yàn)樗袑?shí)數(shù)都按double型進(jìn)行運(yùn)算。習(xí)題C表達(dá)式18/4*sqrt(4.0)/8值的數(shù)據(jù)類型為: A)int B)float C)double D)不確定在C語言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是

A、/ B、&& C、!= D、%習(xí)題C表達(dá)式18/4*sqrt(4.0)/8值的數(shù)據(jù)類型為:C A)int B)float C)double D)不確定在C語言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是

D

A、/ B、&& C、!= D、%運(yùn)算符和表達(dá)式2.自增、自減運(yùn)算符例如:i++++ii----i++、--運(yùn)算符的位置可以在操作數(shù)的前面,亦可在后面運(yùn)算符和表達(dá)式2.自增、自減運(yùn)算符例如:++i

前置運(yùn)算表示在使用i之前,先將i的值自動(dòng)加1運(yùn)算符和表達(dá)式2.自增、自減運(yùn)算符例如:i++

后置運(yùn)算表示先使用i再將i的值加1運(yùn)算符和表達(dá)式2.自增、自減運(yùn)算符如果i=3,則執(zhí)行下面的語句:j=++i;(i的值先自增變成4,再把4賦給j)

得到:i=4j=4j=i++;(先將i的值3賦給j,然后i自增變?yōu)?)

得到:i=4j=3口訣: ++在前就先加加再賦值; ++在后就后加加先賦值;運(yùn)算符和表達(dá)式2.自增、自減運(yùn)算符注意:自增運(yùn)算符(++)和自減運(yùn)算符(--),只能用于變量,而不能用于常量或表達(dá)式,如5++或(a+b)++都是不合法的。因?yàn)?是常量,常量的值不能改變。(a+b)++也不可能實(shí)現(xiàn),假如a+b的值為5,那么自增后得到的6放在什么地方呢?無變量可供存放。避免歧義,增加括號。

如:i+++j是(i++)+j還是i+(++j)?直接寫成(i++)+j習(xí)題求下列代碼執(zhí)行后x和y的值是多少?代碼2: intx=1; inty=(x++)*2; x=?y=?代碼1: intx=1; inty=(++x)*2;

x=?y=?intx=1;inty=(++x)*2;運(yùn)行后得到x=2,y=4如果把表達(dá)式改為:intx=1;inty=(x++)*2;運(yùn)行后得到x=2,y=2x自增后的新的x值與2相乘表達(dá)式使用x原始的數(shù)值1與2相乘把結(jié)果賦給y后,x再加1,得2運(yùn)算符和表達(dá)式3.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性用算術(shù)運(yùn)算符和括號將運(yùn)算對象(也稱操作數(shù))連接起來的、符合c語法規(guī)則的式子,稱c算術(shù)表達(dá)式C語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性。在表達(dá)式求值時(shí):1)先按運(yùn)算符的優(yōu)先級別高低次序執(zhí)行

如表達(dá)式a-b*c

相當(dāng)于a-(b*c)2)在同優(yōu)先級的情況下,按結(jié)合順序,

如a-b+c

相當(dāng)于(a-b)+c左結(jié)合

如a=b=c

相當(dāng)于a=(b=c)右結(jié)合運(yùn)算符和表達(dá)式4.不同類型數(shù)據(jù)間的混合運(yùn)算整型、實(shí)型、字符型數(shù)據(jù)間可以混合運(yùn)算例如: 10+'a'+1.5-8765.1234*'b'在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換的規(guī)則按圖所示。例:

假設(shè)已指定i為整型變量,f為float變量,d為double型變量,e為long型,有下面式子:

10+'a'+i*f-d/e在計(jì)算機(jī)執(zhí)行時(shí)從左至右掃描,運(yùn)算次序?yàn)椋孩龠M(jìn)行10+‘a(chǎn)’的運(yùn)算,先將‘a(chǎn)’轉(zhuǎn)換成整數(shù)97,運(yùn)算結(jié)果為107。

②由于“*”比“+”優(yōu)先,先進(jìn)行i*f的運(yùn)算。先將i與f都轉(zhuǎn)成double型,運(yùn)算結(jié)果為double型。

③整數(shù)107與i*f的積相加。先將整數(shù)107轉(zhuǎn)換成雙精度數(shù)(小數(shù)點(diǎn)后加若干個(gè)0,即107.000…00),結(jié)果為double型。④將變量e轉(zhuǎn)換成double型,d/e結(jié)果為double型。⑤將10+'a'+i*f的結(jié)果與d/e的商相減,結(jié)果為double型。上述的類型轉(zhuǎn)換是由系統(tǒng)自動(dòng)進(jìn)行的。運(yùn)算符和表達(dá)式5.強(qiáng)制類型轉(zhuǎn)換可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。例如:(double)a(將a轉(zhuǎn)換成double類型)(int)(x+y)(將x+y的值轉(zhuǎn)換成整型)(float)(5%3)(將5%3的值轉(zhuǎn)換成float型)一般形式為(類型名)(表達(dá)式)注意,表達(dá)式應(yīng)該用括號括起來。如果寫成

(int)x+y則只將x轉(zhuǎn)換成整型,然后與y相加。應(yīng)寫成(int)(x+y)運(yùn)算符和表達(dá)式6.C運(yùn)算符優(yōu)先級別描述

運(yùn)算符結(jié)合性1最高優(yōu)先級[]()左/右2單目運(yùn)算-!++--強(qiáng)制類型轉(zhuǎn)換符右3算術(shù)乘除運(yùn)算*/%左4算術(shù)加減運(yùn)算+-左5移位運(yùn)算>><<>>>左6大小關(guān)系運(yùn)算<<=>>=左7相等關(guān)系運(yùn)算==!=左8按位與&左運(yùn)算符和表達(dá)式6.C運(yùn)算符優(yōu)先級別描述

運(yùn)算符結(jié)合性9按位異或^左/右10按位或|右11邏輯與&&左12邏輯或||左13三目條件運(yùn)算?:左14賦值=+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=右運(yùn)算符和表達(dá)式6.C運(yùn)算符說明:兩個(gè)實(shí)數(shù)相除的結(jié)果是雙精度實(shí)數(shù);兩個(gè)整數(shù)相除的結(jié)果為整數(shù);

如:5/3的結(jié)果為1(靠近0取整)%運(yùn)算要求參加運(yùn)算的運(yùn)算對象為整數(shù),結(jié)果也為整數(shù);

如:8%2的結(jié)果為2除%以外的運(yùn)算符的操作數(shù)可以是任何算術(shù)類型;習(xí)題以下表達(dá)式值為3的是A16-13%10 B2+3/2C14/3-2 D(2+6)/(12-9)設(shè)變量a是整型,f是實(shí)型,i是雙精度型,則表達(dá)式10+ˊaˊ+i*f值的數(shù)據(jù)類型為AintBfloatCdoubleD不確定若定義語句:inta=7;floatx=2.5;y=4.7;則表達(dá)式x+a%3*(int)(x+y)%2/4的值是A、2.500000B、2.750000C、3.500000D、0.000000習(xí)題以下表達(dá)式值為3的是(B)A16-13%10 B2+3/2C14/3-2 D(2+6)/(12-9)設(shè)變量a是整型,f是實(shí)型,i是雙精度型,則表達(dá)式10+ˊaˊ+i*f值的數(shù)據(jù)類型為(C)AintBfloatCdoubleD不確定若定義語句:inta=7;floatx=2.5;y=4.7;則表達(dá)式x+a%3*(int)(x+y)%2/4的值是(A)A、2.500000B、2.750000C、3.500000D、0.0000003.1順序程序設(shè)計(jì)舉例3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.3C語句3.4數(shù)據(jù)的輸入輸出第3章最簡單的C程序設(shè)計(jì)——順序程序設(shè)計(jì)3.3C語句3.3.1C語句的作用和分類3.3.2賦值語句3.3.1C語句的作用和分類c語言的語句用來向計(jì)算機(jī)系統(tǒng)發(fā)出操作指令。一個(gè)實(shí)際的程序應(yīng)當(dāng)包含若干語句。一個(gè)語句經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。應(yīng)當(dāng)指出,c語句都是用來完成一定操作任務(wù)的。一個(gè)函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分即由語句組成。聲明部分的內(nèi)容不應(yīng)稱為語句,它不產(chǎn)生機(jī)器操作,而只是對有關(guān)數(shù)據(jù)的聲明。3.3.1C語句的作用和分類C語句可以分為以下5類:控制語句。函數(shù)調(diào)用語句。表達(dá)式語句??照Z句。復(fù)合語句。3.3.1C語句的作用和分類1、控制語句完成一定的控制功能。c只有9種控制語句,它們是:①if()~else~ (條件語句)②for()~ (循環(huán)語句)③while()~ (循環(huán)語句)④do~while() (循環(huán)語句)⑤continue (結(jié)束本次循環(huán)語句) ⑥break (中止執(zhí)行switch或循環(huán)語句) ⑦switch (多分支選擇語句) ⑧goto (轉(zhuǎn)向語句) ⑨return(從函數(shù)返回語句)

3.3.1C語句的作用和分類2、函數(shù)調(diào)用語句由一次函數(shù)調(diào)用加一個(gè)分號構(gòu)成一個(gè)語句,例如:printf("thisisacstatement.");

注意區(qū)分概念:

函數(shù)的聲明、函數(shù)的定義、函數(shù)的調(diào)用3.3.1C語句的作用和分類3、表達(dá)式語句由一個(gè)表達(dá)式構(gòu)成一個(gè)語句,最典型的是,由賦值表達(dá)式構(gòu)成一個(gè)賦值語句。

a=3 (賦值表達(dá)式)

a=3;

(賦值語句)一個(gè)表達(dá)式的最后加一個(gè)分號就成了一個(gè)語句。一個(gè)語句必須在最后出現(xiàn)分號,分號是語句中不可缺少的一部分。

i=i+1

(是表達(dá)式,不是語句)

i=i+1;

(是語句)2011年10月13日,在眾多的國際互動(dòng)論壇上,計(jì)算機(jī)愛好者們以分號“;”這種特有的方式紀(jì)念這位編程語言的重要奠基人。在C語言中,分號標(biāo)志著一行指令語句的結(jié)束,網(wǎng)友們以此來悼念“C語言之父”丹尼斯·里奇所引領(lǐng)的時(shí)代悄然遠(yuǎn)去C語言是使用最廣泛的語言之一,可以說,C語言的誕生是現(xiàn)代程序語言革命的起點(diǎn),是程序設(shè)計(jì)語言發(fā)展史中的一個(gè)里程碑。自C語言出現(xiàn)后,以C語言為根基的C++、Java和C#等面向?qū)ο笳Z言相繼誕生,并在各自領(lǐng)域大獲成功。但今天C語言依舊在系統(tǒng)編程、嵌入式編程等領(lǐng)域占據(jù)著統(tǒng)治地位。3.3.1C語句的作用和分類4、空語句下面是一個(gè)空語句:;即只有一個(gè)分號的語句,它什么也不做。有時(shí)用來做被轉(zhuǎn)向點(diǎn),或循環(huán)語句中的循環(huán)體(循環(huán)體是空語句,表示循環(huán)體什么也不做)。

3.3.1C語句的作用和分類5、復(fù)合語句可以用{}把一些語句括起來成為復(fù)合語句,又稱分程序。如下面是一個(gè)復(fù)合語句。{ z=x+y;

t=z/100;

printf("%f",t);}注意:復(fù)合語句中最后一個(gè)語句中最后的分號不能忽略不寫C語言允許一行寫幾個(gè)語句,也允許一個(gè)語句拆開寫在幾行上,書寫格式無固定要求(fortran、cobol有嚴(yán)格要求)。

3.3C語句3.3.1C語句的作用和分類3.3.2賦值語句3.3.2賦值語句1.賦值運(yùn)算符=a=3將常量3賦值給變量a2.復(fù)合的賦值運(yùn)算符a+=3 等價(jià)于a=a+3x*=y+8 等價(jià)于x=x*(y+8)x%=3 等價(jià)于x=x%33.3.2賦值語句3.賦值表達(dá)式賦值表達(dá)式加上分號

;等價(jià)于賦值語句一般形式:<變量><賦值運(yùn)算符><表達(dá)式>左值=右值左值(leftvalue,簡寫為lvalue):可以出現(xiàn)在賦值運(yùn)算符左側(cè)的值,它是可以改變的。變量可以作為左值;算術(shù)表達(dá)式如a+b、a=b不能作為左值;常量不能作為左值;賦值運(yùn)算符是右結(jié)合的a=b=5 等價(jià)于 a=(b=5)3.3.2賦值語句3.賦值表達(dá)式下面是賦值表達(dá)式的例子:

a=b=c=5 (賦值表達(dá)式值為5,a、b、c值均為5)

a=5+(c=6) (表達(dá)式值為11,a值為11,c值為6)

a=(b=4)+(c=6)(表達(dá)式值為10,a值為10,b等于4,c等于6)

a=(b=10)/(c=2)(表達(dá)式值為5,a等于5,b等于10,c等于2)賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。

如:

a+=a-=a*a

也是一個(gè)賦值表達(dá)式。

如果a的初值為12,此賦值表達(dá)式的求解步驟如下:①先進(jìn)行“a-=a*a”的運(yùn)算,它相當(dāng)于a=a-a*a=12-144=-132。②再進(jìn)行“a+=-132”的運(yùn)算,相當(dāng)于a=a+(-132)=-132-132=-264。3.3.2賦值語句4.賦值過程中的類型轉(zhuǎn)換如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值型或字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。(1)將實(shí)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),舍棄實(shí)數(shù)的小數(shù)部分。

如:

inti=3.56;

結(jié)果是使i的值為3,在內(nèi)存中以整數(shù)形式存儲。3.3.2賦值語句4.賦值過程中的類型轉(zhuǎn)換(2)將整型數(shù)據(jù)賦給單、雙精度變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲到變量中,如: floatf=23; //則先將23轉(zhuǎn)換成23.00000,再以浮點(diǎn)數(shù)形式存儲在f中如: doubled=23; //則先將23補(bǔ)足有效位數(shù)字為23.00000000000000,然后以雙精度浮點(diǎn)數(shù)形式存儲到d中

3.3.2賦值語句4.賦值過程中的類型轉(zhuǎn)換(3)將一個(gè)double型數(shù)據(jù)賦給float變量時(shí),截取其前面7位有效數(shù)字,存放到float變量的存儲單元(32位)中。但應(yīng)注意數(shù)值范圍不能溢出。如: floatf; doubled=123.456789e100; f=d;

就出現(xiàn)溢出的錯(cuò)誤。

將一個(gè)float型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到16位,在內(nèi)存中以64位(bit)存儲。

3.3.2賦值語句4.賦值過程中的類型轉(zhuǎn)換(4)字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占1個(gè)字節(jié),而整型變量為2(4)個(gè)字節(jié),因此將字符數(shù)據(jù)(8位)放到整型變量低8位中。

如inti=‘A’;

則i的值為65,即’A’的ASCII碼

3.3.2賦值語句4.賦值過程中的類型轉(zhuǎn)換(5)將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)char型變量時(shí),只將其低8位原封不動(dòng)地送到char型變量(即截?cái)?。

例如: inti=289; charc='a'; c=i;

賦值情況見圖。c的值為33,

如果用“%c”輸出c,將得到

字符“!”(其ascii碼為33)。

3.3.2賦值語句4.賦值過程中的類型轉(zhuǎn)換(6)將帶符號的整型數(shù)據(jù)(int型)賦給long型變量時(shí),要進(jìn)行符號擴(kuò)展,將整型數(shù)的16位送到long型低16位中,如果int型數(shù)據(jù)為正值(符號位為0),則long型變量的高16位補(bǔ)0;如果int型變量為負(fù)值(符號位為1),則long型變量的高16位補(bǔ)1,以保持?jǐn)?shù)值不改變。反之,若將一個(gè)long型數(shù)據(jù)賦給一個(gè)int型變量,只將long型數(shù)據(jù)中低16位原封不動(dòng)地送到整型變量(即截?cái)?。例如:

int

a;

long

b=8;

a=b;例如:int

a;long

b=65536;a=b;例如:int

a;long

b=8;a=b;3.3.2賦值語句4.賦值過程中的類型轉(zhuǎn)換(7)將unsignedint型數(shù)據(jù)賦給longint型變量時(shí),不存在符號擴(kuò)展問題,只需將高位補(bǔ)0即可。

將一個(gè)unsigned類型數(shù)據(jù)賦給一個(gè)占字節(jié)數(shù)相同的整型變量(例如:unsignedint=>int,unsignedlong=>long,unsignedshort=>short),將unsigned型變量的內(nèi)容原樣送到signed型變量中,但如果數(shù)據(jù)范圍超過相應(yīng)整型的范圍,則會出現(xiàn)數(shù)據(jù)錯(cuò)誤。3.3.2賦值語句4.賦值過程中的類型轉(zhuǎn)換(8)將signed(有符號)型數(shù)據(jù)賦給長度相同的unsigned(無符號)型變量,也是原樣照賦(連原有的符號位也作為數(shù)值一起傳送)。例有符號數(shù)據(jù)傳送給無符號變量。

main()

{unsigneda;

intb=-1;

a=b;

printf("%u",a);}

運(yùn)行結(jié)果為:65535問題:還原-32768的補(bǔ)碼(1000000000000000)二是補(bǔ)碼,最高位1,表示是負(fù)數(shù),轉(zhuǎn)換成對應(yīng)原碼是用下面的方法:補(bǔ)碼轉(zhuǎn)換成原碼時(shí):把補(bǔ)碼的反碼再加1,就是原碼。 (1000000000000000)二反碼是:(0111111111111111)二,再加1為:(1000000000000000)二=32768(絕對值原碼)所以 (1000000000000000)二=(-32768)十教材P63運(yùn)算符和表達(dá)式4.賦值過程中的類型轉(zhuǎn)換

以下基本數(shù)據(jù)類型按精度從“低”到“高”排列順序如下:byteshortintlongfloatdouble當(dāng)把級別低的變量的值賦給級別高的變量時(shí),系統(tǒng)自動(dòng)完成數(shù)據(jù)類型的轉(zhuǎn)換。例如:floatx=100;即把int賦值給float,系統(tǒng)自動(dòng)完成轉(zhuǎn)換如果輸出x值,結(jié)果將是100.00。運(yùn)算符和表達(dá)式4.賦值過程中的類型轉(zhuǎn)換

以下基本數(shù)據(jù)類型按精度從“低”到“高”排列順序如下:byteshortintlongfloatdouble轉(zhuǎn)換后x的值將是23強(qiáng)制轉(zhuǎn)換運(yùn)算導(dǎo)致精度的損失例如:intx=(int)23.89;當(dāng)把級別高的變量賦給級別低的變量時(shí),必須使用顯式類型轉(zhuǎn)換運(yùn)算。轉(zhuǎn)換的格式:運(yùn)算符和表達(dá)式4.賦值過程中的類型轉(zhuǎn)換

以下基本數(shù)據(jù)類型按精度從“低”到“高”排列順序如下:byteshortintlongfloatdouble又如:longy=(long)34.98F;轉(zhuǎn)換后y的值將是34強(qiáng)制轉(zhuǎn)換運(yùn)算導(dǎo)致精度的損失當(dāng)把級別高的變量賦給級別低的變量時(shí),必須使用顯式類型轉(zhuǎn)換運(yùn)算。轉(zhuǎn)換的格式:習(xí)題以下正確的敘述是()A在C語言中,每行只能寫一條語句B若a是double變量,C程序中允許賦值a=10,因此double變量中允許存放整型數(shù)C在C程序中,無論整數(shù)還是實(shí)數(shù),都能被準(zhǔn)確無誤的表示

D在C程序中,%是只能用于整數(shù)運(yùn)算的運(yùn)算符x,y均為float型變量,則不合法的賦值語句是

A++x;By=(x%2)/10;C;Dx=y=0;習(xí)題以下正確的敘述是(D)A在C語言中,每行只能寫一條語句B若a是實(shí)型變量,C程序中允許賦值a=10,因此實(shí)型變量中允許存放整型數(shù)C在C程序中,無論整數(shù)還是實(shí)數(shù),都能被準(zhǔn)確無誤的表示

D在C程序中,%是只能用于整數(shù)運(yùn)算的運(yùn)算符x,y均為float型變量,則不合法的賦值語句是(B)

A++x;By=(x%2)/10;C;Dx=y=0;3.1順序程序設(shè)計(jì)舉例3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.3C語句3.4數(shù)據(jù)的輸入輸出第3章最簡單的C程序設(shè)計(jì)——順序程序設(shè)計(jì)3.4數(shù)據(jù)的輸入輸出數(shù)據(jù)輸入輸出的概念用printf輸出數(shù)據(jù)用scanf輸入數(shù)據(jù)用putchar輸出一個(gè)字符用getchar輸入一個(gè)字符數(shù)據(jù)輸入輸出的概念所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的。從計(jì)算機(jī)向外部輸出設(shè)備(如顯示屏、打印機(jī)、磁盤等)輸出數(shù)據(jù)稱為“輸出”,從外部向輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等)輸入數(shù)據(jù)稱為“輸入”

C語言本身不提供輸入輸出語句,在c標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸入輸出函數(shù),如,printf函數(shù)和scanf函數(shù)。不是C語言的關(guān)鍵字,而只是庫函數(shù)的名字。各種版本的C語言函數(shù)庫是各計(jì)算機(jī)廠商(或軟件開發(fā)公司)針對某一類型計(jì)算機(jī)的情況編寫的,并且已編譯成目標(biāo)文件(.obj文件)。它們在連接階段與由源程序經(jīng)編譯而得到的目標(biāo)文件相連接,生成一個(gè)可執(zhí)行的目標(biāo)程序。數(shù)據(jù)輸入輸出的概念在使用c語言庫函數(shù)時(shí),要用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中。在頭文件中包含了與用到的函數(shù)有關(guān)的信息。

文件開頭應(yīng)有以下預(yù)編譯命令: #include<stdio.h>

或 #include"stdio.h"<stdio.h>表示在系統(tǒng)目錄中查找 “stdio.h”表示先在用戶目錄查找,然后再在系統(tǒng)目錄查找stdio.h是standardinput&output的縮寫,它包含了與標(biāo)準(zhǔn)i/o庫有關(guān)的變量定義和宏定義??紤]到printf和scanf函數(shù)使用頻繁,系統(tǒng)允許在使用這兩個(gè)函數(shù)時(shí)可不加#include命令。3.4數(shù)據(jù)的輸入輸出數(shù)據(jù)輸入輸出的概念用printf輸出數(shù)據(jù)用scanf輸入數(shù)據(jù)用putchar輸出一個(gè)字符用getchar輸入一個(gè)字符用printf輸出數(shù)據(jù)printf函數(shù)(格式輸出函數(shù))

在前面各章節(jié)中已用到printf函數(shù),它的作用是向終端(或系統(tǒng)隱含指定的輸出設(shè)備)輸出若干個(gè)任意類型的數(shù)據(jù)printf函數(shù)的一般格式為

printf(格式控制,輸出表列)如: printf(“i=%d,c=%c\n",i,c)“格式控制”是用雙引號括起來的字符串,也稱“轉(zhuǎn)換控制字符串”它包括兩種信息: ①格式說明,由“%”和格式字符組成,如%d,%f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。格式說明總是由“%”字符開始的。 ②普通字符,即需要原樣輸出的字符。例如上面printf函數(shù)中雙引號內(nèi)的逗號、空格和換行符?!拜敵霰砹小笔切枰敵龅囊恍?shù)據(jù),可以是表達(dá)式。用printf輸出數(shù)據(jù)格式字符(1)d格式符。用來輸出十進(jìn)制整數(shù)。有以下幾種用法:①%d,按整型數(shù)據(jù)的實(shí)際長度輸出。②%md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。③%ld,輸出長整型數(shù)據(jù)。 inta=123,b=12345; printf(“a=%4d,b=%4d“,a,b); longa=135790;

printf("%ld“,a);用printf輸出數(shù)據(jù)格式字符——(2)c格式符用來輸出一個(gè)字符

char

aChar='a';

printf("%c",aChar);也可以指定輸出字?jǐn)?shù)寬度,如

printf(“%3c”,aChar);一個(gè)整數(shù),只要它的值在0~127范圍內(nèi),也可以用字符形式輸出,在輸出前,系統(tǒng)會將該整數(shù)作為ascii碼轉(zhuǎn)換成相應(yīng)的字符;反之,一個(gè)字符數(shù)據(jù)也可以用整數(shù)形式輸出。如:shorta=121;Printf(“%c”,a);輸出字符y用printf輸出數(shù)據(jù)格式字符——(3)s格式符用來輸出一個(gè)字符串%s

例如:printf("%s","china")

輸出“china”字符串(不包括雙引號)。用printf輸出數(shù)據(jù)格式字符——(4)f格式符用來輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出。有以下幾種用法:①%f,不指定字段寬度,由系統(tǒng)自動(dòng)指定,使整數(shù)部分全部如數(shù)輸出,并輸出6位小數(shù)。②%m.nf指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長度小于m,則左端補(bǔ)空格。③%-m.nf與%m.nf基本相同,只是使輸出的數(shù)值向左端靠,右端補(bǔ)空格。例子: doublea=1.0; printf(“%f\n”,a/3); printf(“%20.15f\n”,a/3); printf(“%-20.15f\n”,a/3);用printf輸出數(shù)據(jù)格式字符——(5)e格式符以指數(shù)形式輸出實(shí)數(shù)。①%e不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分的小數(shù)位數(shù),有的c編譯系統(tǒng)自動(dòng)指定給出6位小數(shù),指數(shù)部分占5位(如e+002),其中“e”占1位,指數(shù)符號占1位,指數(shù)占3位。數(shù)值按規(guī)范化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有而且只有1位非零數(shù)字)。例如

printf("%e",123.456);輸出:1.234560e+002

6列5列輸出的實(shí)數(shù)共占13列寬度。②%m.ne和%-m.ne。m、n和“-”字符含義與前相同。此處n指擬輸出的數(shù)據(jù)的小數(shù)部分(又稱尾數(shù))的小數(shù)位數(shù)。printf("%13.2e",123.456);輸出:1.23e+002用printf輸出數(shù)據(jù)格式字符幾點(diǎn)說明(1)除了x,e,g外,其他格式字符必須用小寫字母,如%d不能寫成%D。(2)可以在printf函數(shù)中的“格式控制”字符串內(nèi)包含“轉(zhuǎn)義字符”,如“\n”、“\t”、“\b”、“\r”、“\f”、“\377”等。(3)上面介紹的d、o、x、u、c、s、f、e、g等字符,如用在“%”后面就作為格式符號。一個(gè)格式說明以“%”開頭,以上述9個(gè)格式字符之一為結(jié)束,中間可以插入附加格式字符(也稱修飾符)。例如:(4)如果想輸出字符“%”,則應(yīng)該在“格式控制”字符串中用連續(xù)兩個(gè)%表示

例如:printf("%f%%",1.0/3);

輸出:0.333333%用printf輸出數(shù)據(jù)printf()的返回值返回一個(gè)int值,表示被打印的字符數(shù)例如: inta=104; printf(“%d",a); printf將返回3,再如: printf("123\n"); printf將返回4練習(xí)題1、以下程序的運(yùn)行結(jié)果是() intmain() { inti=43; printf("%d\n",printf("%d",printf("%d",i))); return0;}A1234 B4321 C43 D不確定2、以下程序的運(yùn)行結(jié)果是() #include<stdio.h>

main()

{ inta=201,b=012;

printf(“%2d,%2d\n”,a,b);}A01,12 B201,10 C01,10 D20,01練習(xí)題1、以下程序的運(yùn)行結(jié)果是(B) intmain() { inti=43; printf("%d\n",printf("%d",printf("%d",i))); return0;}A1234 B4321 C43 D不確定2、以下程序的運(yùn)行結(jié)果是(B) #include<stdio.h>

main()

{ inta=201,b=012;

printf(“%2d,%2d\n”,a,b);}A01,12 B201,10 C01,10 D20,013.4數(shù)據(jù)的輸入輸出數(shù)據(jù)輸入輸出的概念用printf輸出數(shù)據(jù)用scanf輸入數(shù)據(jù)用putchar輸出一個(gè)字符用getchar輸入一個(gè)字符用scanf輸入數(shù)據(jù)一般形式 scanf(格式控制,地址表列)main(){inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf("%d,%d,%d\n",a,b,c);}(1)&a、&b、&c中的“&”是“地址運(yùn)算符”,&a指a在內(nèi)存中的地址。上面scanf函數(shù)的作用是:按照a、b、c在內(nèi)存的地址將a、b、c的值存進(jìn)去。(2)“%d%d%d”表示按十進(jìn)制整數(shù)形式輸入數(shù)據(jù)。在兩個(gè)數(shù)據(jù)之間以一個(gè)或多個(gè)空格間隔,也可以用回車鍵、跳格鍵tab①3

4

5②3

45③3(按tab鍵)4

5用scanf輸入數(shù)據(jù)使用scanf函數(shù)時(shí)應(yīng)注意的問題(1)scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。例如,如果a、b為整型變量,則

scanf("%d%d",a,b);是不對的,應(yīng)將“a,b”改為“&a,&b”。這是c語言與其他高級語言不同之處。&a,&b用scanf輸入數(shù)據(jù)使用scanf函數(shù)時(shí)應(yīng)注意的問題(2)如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。

例如

scanf("%d,%d",&a,&b);

輸入時(shí)應(yīng)用如下形式:

3,4

如果是

scanf("%d%d",&a,&b);

輸入時(shí)兩個(gè)數(shù)據(jù)間應(yīng)空2個(gè)或更多的空格字符如: 1034或10

34

如果是

scanf("a=%d,b=%d,c=%d",&a,&b,

溫馨提示

  • 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

提交評論