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

下載本文檔

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

文檔簡(jiǎn)介

2.1數(shù)據(jù)類型2.2常量與變量2.3運(yùn)算符與表達(dá)式2.4標(biāo)準(zhǔn)輸入/輸出2.5數(shù)學(xué)函數(shù)2.6隨機(jī)數(shù)發(fā)生器函數(shù)2.7案例應(yīng)用第2章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式1數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)計(jì)算機(jī)內(nèi)部的信息都是用二進(jìn)制表示計(jì)算機(jī)存儲(chǔ)器是用半導(dǎo)體集成電路構(gòu)成的有兩種穩(wěn)定的工作狀態(tài):“導(dǎo)”與“截止”,即電脈沖的“有”與“無(wú)”分別用“1”和“0”表示一、數(shù)據(jù)在計(jì)算機(jī)中是以二進(jìn)制形式存儲(chǔ)的2數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)若相鄰的8個(gè)二極管元件中第1,3,5,7個(gè)元件處于“導(dǎo)通”狀態(tài),第2,4,6,8個(gè)元件處于“截止”狀態(tài),用“10101010”表示。導(dǎo)通截止導(dǎo)通截止導(dǎo)通截止導(dǎo)通截止101010103數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)十進(jìn)制數(shù)二進(jìn)制數(shù)001121031141005101十進(jìn)制數(shù)二進(jìn)制數(shù)6110711181000910011010104數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)位(bit),又稱“比特”

。每一個(gè)二極管元件稱為一個(gè)“二進(jìn)制位”,是存儲(chǔ)信息的最小單位。它的值是“1”或“0”。字節(jié)(byte),又稱“拜特”

。一般將8個(gè)“二進(jìn)制位”組織成一組,稱為“字節(jié)”。這是人們最常用的存儲(chǔ)單位。二、位、字節(jié)和地址5數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)二、位、字節(jié)和地址200120022003200420052006地址:計(jì)算機(jī)的存儲(chǔ)器包含許多存儲(chǔ)單元,操作系統(tǒng)把所有存儲(chǔ)單元以字節(jié)為單位編號(hào)。345789┆61.1數(shù)據(jù)類型枚舉類型(enum)基本類型數(shù)據(jù)類型構(gòu)造類型指針類型空類型(void)整型(int)實(shí)型(浮點(diǎn)型)字符型(char)結(jié)構(gòu)體(struct)共用體(union)單精度實(shí)型(float)雙精度實(shí)型(double)數(shù)組7一、整型類型名稱類型說(shuō)明符所占字節(jié)數(shù)取值范圍有符號(hào)基本整型[signed]int4-2147483648~2147483647-232-1~232-1-1有符號(hào)短整型[signed]short[int]2-32768~32767-216-1~216-1-1有符號(hào)長(zhǎng)整型[signed]long[int]4-2147483648~2147483647-232-1~232-1-1無(wú)符號(hào)基本整型unsigned[int]40~42949672950~232-1無(wú)符號(hào)短整型unsignedshort[int]20~655350~216-1-1無(wú)符號(hào)長(zhǎng)整型unsignedlong[int]40~42949672950~232-18一、整型數(shù)據(jù)存儲(chǔ)時(shí)在內(nèi)存中所占字節(jié)數(shù)與具體的機(jī)器及系統(tǒng)有關(guān)。如int類型,在32位系統(tǒng)中VisualC++下所占4個(gè)字節(jié),但是在TurboC下int只占2個(gè)字節(jié),表示范圍就是:-32768~32767。編程時(shí),可以用運(yùn)算符sizeof()求出所使用環(huán)境中int類型究竟占用幾個(gè)字節(jié)。

整數(shù)類型是以二進(jìn)制數(shù)據(jù)形式存儲(chǔ)的,確切地說(shuō)是以二進(jìn)制補(bǔ)碼形式。9一、整型整數(shù)的存儲(chǔ)方式一個(gè)十進(jìn)制整數(shù),先轉(zhuǎn)換為二進(jìn)制形式如整數(shù)15,以二進(jìn)制形式表示是1111000011110000000000001111用一個(gè)字節(jié)存放用兩字節(jié)存放負(fù)數(shù)按補(bǔ)碼形式存放請(qǐng)問(wèn):-15又是如何存儲(chǔ)的呢?10二、實(shí)型C語(yǔ)言中實(shí)型也稱為浮點(diǎn)型,包括單精度實(shí)型和雙精度實(shí)型。實(shí)型與整型的區(qū)別在于是否包含小數(shù)部分,比如6是整數(shù)類型,6.00是實(shí)數(shù)類型。類型名稱類型說(shuō)明符所占字節(jié)數(shù)有效數(shù)字取值范圍(絕對(duì)值)單精度實(shí)型float4約6~7位3.4×10-38~3.4×1038雙精度實(shí)型double8約15~16位1.7×10-308~1.7×1030811二、實(shí)型實(shí)數(shù)的存儲(chǔ)形式實(shí)型數(shù)據(jù)按指數(shù)形式存儲(chǔ),分為小數(shù)部分(尾數(shù))和指數(shù)部分(階碼)分別存放。123.456標(biāo)準(zhǔn)化指數(shù)形式為0.123456103+.12345+3數(shù)符數(shù)值部分指數(shù)符號(hào)指數(shù)12三、字符型類型說(shuō)明符為char。字符型數(shù)據(jù)只占1個(gè)字節(jié),只能存放1個(gè)字符,無(wú)法存放多個(gè)字符組成的字符串,字符串的概念將在后面章節(jié)中介紹。為了處理字符,計(jì)算機(jī)使用一種數(shù)字編碼,用特定的整數(shù)表示特定的字符。應(yīng)用最廣泛的是編碼是ASCII碼(AmericaStandardCordforInformationInterchange,美國(guó)信息交換標(biāo)準(zhǔn)碼)大寫字母A的ASCII碼為65,小寫字母a的ASCII碼為97,字符‘0’為48。13三、字符型字符的存儲(chǔ)方式對(duì)于字符,按ASCII代碼存放A的ASCII代碼是65(1000001)01000001用一個(gè)字節(jié)存放由于這種與整型數(shù)據(jù)類似的存儲(chǔ)方式,在1個(gè)字節(jié)(0~255)范圍內(nèi),字符型數(shù)據(jù)和整形數(shù)據(jù)可以通用。14四、枚舉型如果一個(gè)數(shù)據(jù)對(duì)象只有幾種可能的取值,可以將這些值一一列舉出來(lái),即定義為枚舉類型。定義的格式為:enum枚舉類型名{枚舉常量1,枚舉常量2,...,枚舉常量n};15五、構(gòu)造數(shù)據(jù)類型C語(yǔ)言的基本數(shù)據(jù)類型并不能滿足實(shí)際應(yīng)用中的所有需求,用戶可以利用整型、實(shí)型、字符型這些基本數(shù)據(jù)類型構(gòu)造滿足需要的數(shù)據(jù)類型,即構(gòu)造類型。數(shù)組類型構(gòu)造類型結(jié)構(gòu)體類型共用體類型16六、其他數(shù)據(jù)類型指針類型。

指針是一種特殊的數(shù)據(jù)類型,也是很重要的一種數(shù)據(jù)類型,指針的值指的是內(nèi)存中的地址值??疹愋?/p>

C語(yǔ)言中空類型用void表示,一般用于描述指針以及作為不返回值的函數(shù)的返回值類型。172.2常量與變量在程序所處理的各種數(shù)據(jù)中,有些數(shù)據(jù)的值在程序使用前可以預(yù)先設(shè)定并在程序運(yùn)行過(guò)程中不會(huì)發(fā)生變化,稱為常量。有的數(shù)據(jù)在程序運(yùn)行過(guò)程中可能會(huì)變化,稱為變量。

兩者的區(qū)別在于數(shù)據(jù)在程序運(yùn)行過(guò)程中其值是否變化。182.2.1常量在程序運(yùn)行過(guò)程中,其值不變的量稱為常量。常量區(qū)分為不同的類型:整型常量100,125,-100,0實(shí)型常量3.14,0.125,-3.789字符型常量‘a(chǎn)’,‘b’,‘2’字符串常量“a”,“ab”,”1232”以上四種稱為字面常量。還有一種叫符號(hào)常量。19一、整型常量整型常量即整常數(shù)。在C語(yǔ)言中,整常數(shù)可用以下三種形式表示:十進(jìn)制整數(shù):用10個(gè)數(shù)字0~9表示,如369,9652。八進(jìn)制整數(shù):以數(shù)字0開(kāi)頭,用8個(gè)數(shù)字0~7表示。如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83,-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。十六進(jìn)制整數(shù):以0X或0x開(kāi)頭(注意是數(shù)字0加字母X或x),用10個(gè)數(shù)字0~9和6個(gè)字母A~F(或a~f)表示。如:0x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù)

291。-0x12等于十進(jìn)制數(shù)10。注意:正整數(shù)前面的“+”號(hào)可以省略。20一、整型常量常量的后綴表示列舉如下:常量類型

十進(jìn)制數(shù)

八進(jìn)制

十六進(jìn)制

十進(jìn)制的值長(zhǎng)整型

12L 014L0XCL 12無(wú)符號(hào)整型

15u 017u 0xfu15注意:C把大多數(shù)整數(shù)常量識(shí)別為int類型,如果整數(shù)特別大,將會(huì)有不同的處理。比如,在程序中使用254時(shí),通常會(huì)識(shí)別為int類型。當(dāng)使用的整數(shù)超出了int類型的范圍時(shí),則識(shí)別為long類型。21二、實(shí)型常量實(shí)型常量的表示形式:十進(jìn)制形式:由數(shù)字0~9和小數(shù)點(diǎn)組成(必須有小數(shù)點(diǎn))。

如:0.123

指數(shù)形式:由尾數(shù)、E(或e)和整數(shù)指數(shù)(階碼)組成。

如:3e-3注意:整數(shù)或小數(shù)部分的數(shù)字可以省略,但二者不能同時(shí)省略并且小數(shù)點(diǎn)不能省略。字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)。22二、實(shí)型常量在實(shí)型常量中不能有空格。默認(rèn)狀態(tài)下,實(shí)型常量被識(shí)別為雙精度(double)類型。可以使用后綴F或f表示單精度(float)類型,后綴L或l表示長(zhǎng)雙精度(longdouble)類型。比如123.56是double類型,123.56f是float類型,1.2356E2L是longdouble類型。1.2、7.、.36、1e3、1.8e-3、-.1e-30、1.2、3、e3、2.1e3.5、.e3、e

23三、字符常量(1)用單引號(hào)括起來(lái)的一個(gè)字符是字符型常量。(2)只能包含一個(gè)字符。注意:使用字符常量時(shí)要注意數(shù)字字符和數(shù)字的區(qū)別,例如,寫法'5'表示符號(hào)5,而不是數(shù)值5,字符5的ASCII碼值是53。例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”24三、字符常量

有些以“\”開(kāi)頭的特殊字符稱為轉(zhuǎn)義字符。\n換行\(zhòng)t橫向跳格\r回車\\反斜杠\dddddd表示1到3位八進(jìn)制數(shù)字\xhhhh表示1到2位十六進(jìn)制數(shù)字例:字母A有3種表示,’A’,’\101’,’\x41’‘\0’與‘0’是有區(qū)別的字符類型的數(shù)據(jù)也可參與四則運(yùn)算25四、字符串常量字符串常量是一對(duì)雙撇號(hào)括起來(lái)的字符序列.合法的字符串常量:

"Howdoyoudo.","CHINA","a",

"$123.45"可以輸出一個(gè)字符串,如printf("Howdoyoudo.");注意:"a"表示的是一個(gè)字符串常量

'a'表示的是一個(gè)字符常量26四、字符串常量字符串常量與字符常量的區(qū)別:(1)字符常量是由單引號(hào)括起來(lái),而字符串常量則是由雙引號(hào)括起來(lái)。(2)字符常量只能表示一個(gè)字符,而字符串常量則可以包含1個(gè)或多個(gè)字符。(3)可以將1個(gè)字符常量賦值給一個(gè)字符變量,但不能將1個(gè)字符串常量賦予一個(gè)字符變量。(4)字符常量在存儲(chǔ)中只占一個(gè)字節(jié),字符串常量占用的存儲(chǔ)空間的字節(jié)數(shù)等于雙引號(hào)中所包含字符個(gè)數(shù)加1(結(jié)束符‘\0’)。27四、字符串常量字符串常量與字符常量的區(qū)別:(5)字符串中可以有轉(zhuǎn)義字符。(6)單引號(hào)和雙引號(hào)只是字符和字符串的定界符,如果字符常量本身是單引號(hào),則要用轉(zhuǎn)義字符,如‘\’’??兆址鳛樽址A康慕Y(jié)束'a'是一個(gè)字符常量"a"是一個(gè)字符串常量aa\028五、符號(hào)常量用一個(gè)標(biāo)識(shí)符來(lái)代表一個(gè)常量,稱為符號(hào)常量。符號(hào)常量在使用前必須先定義,用宏定義的形式,其一般定義格式為:

#define標(biāo)識(shí)符常量例:#definea20定義符號(hào)常量名時(shí)應(yīng)盡量做到“見(jiàn)名知意”,#definePRICE2029五、符號(hào)常量#include<stdio.h>#definePRICE10//定義價(jià)格符號(hào)常量PRICE為10voidmain(){intnum,total;scanf(“%d”,&num); //輸入購(gòu)買數(shù)量total=num*PRICE; //計(jì)算總金額printf(“total=%d”,total);}30五、符號(hào)常量符號(hào)常量的性質(zhì)和使用方法:1、#define不是C語(yǔ)句,該行的末尾沒(méi)有分號(hào)。它是一個(gè)“預(yù)編譯命令”。2、不要把符號(hào)常量與變量混淆,符號(hào)常量只是一個(gè)符號(hào),不占存儲(chǔ)單元。它只是簡(jiǎn)單地進(jìn)行字符置換(如把字符PRICE置換為字符10)。不論置換的字符是否有含義都進(jìn)行置換。3、習(xí)慣上,符號(hào)常量名用大寫,變量名用小寫,以示區(qū)別。4、使用符號(hào)常量的好處

含義清楚在需要改變一個(gè)常量時(shí)能做到“一改全改”。

31變量是指在程序運(yùn)行過(guò)程中其值可以變化的量。C語(yǔ)言要求在使用變量之前必須先進(jìn)行聲明。給變量指定一個(gè)標(biāo)識(shí)符,這個(gè)標(biāo)識(shí)符稱為變量名;變量名(標(biāo)識(shí)符)的命名規(guī)則:只能由字母、數(shù)字或下劃線組成;第一個(gè)字符必須是字母或下劃線。2.2.2變量32聲明一個(gè)變量包括:指定該變量的數(shù)據(jù)類型,該類型決定了變量值的類型、表現(xiàn)形式和占用內(nèi)存空間,以及對(duì)該變量能執(zhí)行的運(yùn)算;指定變量的存儲(chǔ)類型和變量的作用域。1、變量的聲明變量聲明的一般形式:[存儲(chǔ)類型說(shuō)明符]數(shù)據(jù)類型說(shuō)明符變量名1[,變量名2,變量名3,…]331、變量的聲明☆變量名必須是一個(gè)合法的標(biāo)識(shí)符,還應(yīng)考慮“見(jiàn)名知意”的原則?!铑愋驼f(shuō)明符后聲明多個(gè)相同類型的變量,各變量之間用逗號(hào)分隔?!钭兞柯暶鞅仨毞旁谧兞渴褂弥埃聪嚷暶?,后使用。//變量聲明示例#include<stdio.h>voidmain(){

inta,b;

//聲明兩個(gè)整型變量a和bcharc;

//聲明一個(gè)字符變量c

floatf1,f2;

//聲明兩個(gè)浮點(diǎn)型變量f1,f2}數(shù)據(jù)類型說(shuō)明符34聲明變量,只是給變量分配內(nèi)存空間,存儲(chǔ)空間中存放的值是隨機(jī)的,變量值不確定的。C語(yǔ)言允許在聲明變量的同時(shí)給變量賦值即初始化變量,這個(gè)值為變量的初值。2、變量的初始化在變量聲明中初始化賦值的一般格式為:[存儲(chǔ)類型說(shuō)明符]數(shù)據(jù)類型說(shuō)明符變量名1=值1[,變量名2=值2,…];☆多個(gè)變量初始化賦值必須將其分別賦值,即使所賦的值相同也是如此。inti=j=20;(錯(cuò)誤)應(yīng)寫成:inti=20,j=20;352、變量的初始化//變量聲明及初始化#include<stdio.h>voidmain(){charc1=‘a(chǎn)’,c2=‘b’;/*聲明c1和c2為字符類型變量,c1初始化值分別為字符'a'、'b‘*/inti=20,j=20,k;/*聲明i,j和k為基本整型變量,i和j初始化值為20*/ floatf1=3.6,f2;/*聲明f1和f2為單精度類型變量,f1初始化值為3.6*/} 362、變量的初始化要注意區(qū)別變量名和變量值:intk=26;26k3000存儲(chǔ)單元變量名變量地址變量值37(1)整型變量

有基本整型、短整型、長(zhǎng)整型、無(wú)符號(hào)基本整型、無(wú)符號(hào)短整型、無(wú)符號(hào)長(zhǎng)整型6種。3、變量的使用

☆在程序中使用變量,要考慮程序運(yùn)行的環(huán)境和變量的取值范圍,當(dāng)變量的取值超出變量類型所規(guī)定的范圍時(shí),會(huì)出現(xiàn)錯(cuò)誤的運(yùn)算結(jié)果。//整型變量的定義與使用#include<stdio.h>voidmain(){inta=-10,b=20,c;

//聲明基本整型變量a、b、c,//并對(duì)a,b初始化

unsignedk;

//聲明無(wú)符號(hào)基本整型變量k

scanf("%u",&k);

//用scanf()函數(shù)給k輸入一個(gè)值

c=a+b;

//將a、b的和賦值給c

printf("c=%d,k=%u\n",c,k);

//用printf()函數(shù)輸出c、k的值} 38

☆使用整型變量時(shí)要注意它獲取的值不要超過(guò)變量的取值范圍,否則會(huì)發(fā)生“溢出”。3、變量的使用//整型數(shù)據(jù)的溢出#include<stdio.h>voidmain(){shortx=32767,y;y=x+1;

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

☆因?yàn)橐粋€(gè)短整型變量所能表示數(shù)的范圍是-32768-32767,將無(wú)法表示大于32767的數(shù),這種情況叫溢出。而程序在運(yùn)行過(guò)程中并沒(méi)有報(bào)錯(cuò)。39(1)實(shí)型變量

分為單精度實(shí)型和雙精度實(shí)型,兩者的區(qū)別在于精度即有效數(shù)字位數(shù)。3、變量的使用//實(shí)型變量的有效位數(shù)#include<stdio.h>voidmain(){

float a=33.3333333333;doubleb=12.123456789012345678;printf("a=%21.18f\n",a);

//格式符%21.18f,輸出a時(shí)總長(zhǎng)度21位,小數(shù)位數(shù)占18位

printf("b=%21.18f\n",b);

} float類型的數(shù)據(jù)只接收7位有效數(shù)字

double類型的數(shù)據(jù)接收16位有效數(shù)字

40在使用實(shí)型變量時(shí)應(yīng)該注意以下兩種情況:①實(shí)型常量沒(méi)有加后綴F(或f)時(shí),系統(tǒng)默認(rèn)為double類型進(jìn)行處理,具有較高精度,把該實(shí)型常量賦值給一個(gè)float類型的變量時(shí),系統(tǒng)會(huì)截取相應(yīng)的有效位數(shù)進(jìn)行賦值。②應(yīng)避免將很大的數(shù)和一個(gè)很小的數(shù)進(jìn)行加減運(yùn)算,否則會(huì)丟失“較小”的數(shù)。3、變量的使用//實(shí)型數(shù)據(jù)的舍入誤差。#include<stdio.h>voidmain(){floata=123456789.0,b;b=a+1;

printf("a=%f\n",a);printf("b=%f\n",b);}

只能保證前7位是準(zhǔn)確的,后面幾位是無(wú)效數(shù)字,把1加在無(wú)效數(shù)字上,是無(wú)意義的。

41(1)字符型變量每個(gè)字符變量占一個(gè)字節(jié)的內(nèi)存空間,存放一個(gè)字符,即字符變量的取值是一個(gè)字符常量??梢园炎址蛿?shù)據(jù)作為整型數(shù)據(jù)進(jìn)行處理。允許對(duì)整型變量賦以字符值,也允許對(duì)字符變量賦以整型值。在輸出時(shí),允許把字符變量按整型形式輸出,也允許把整型數(shù)據(jù)按字符形式輸出。注意,整型為4個(gè)字節(jié),字符為1個(gè)字節(jié),當(dāng)整型按字符型量處理時(shí),只有低八位參與處理。3、變量的使用//字符型變量示例#include<stdio.h>voidmain(){

chara,b;a='x';b='y';a=a-32;b=b-32;

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

422.3運(yùn)算符與表達(dá)式2.3.1運(yùn)算符2.3.2表達(dá)式2.3.3類型轉(zhuǎn)換432.3.1運(yùn)算符C語(yǔ)言的運(yùn)算符有以下幾類:⑴算術(shù)運(yùn)算符(+-*/%)⑵關(guān)系運(yùn)算符(><==>=<=!=)⑶邏輯運(yùn)算符(?。Γ|)⑷位運(yùn)算符(<<>>~|∧&)⑸賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)⑹條件運(yùn)算符(?:)⑺逗號(hào)運(yùn)算符(,)(8)指針運(yùn)算符(*和&)(9)求字節(jié)數(shù)運(yùn)算符(sizeof)(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符((類型))(11)分量運(yùn)算符(.->)(12)下標(biāo)運(yùn)算符([])(13)其他(如函數(shù)調(diào)用運(yùn)算符())442.3.1運(yùn)算符使用運(yùn)算符需要注意以下幾點(diǎn):⑴運(yùn)算符的功能⑵對(duì)操作數(shù)(即運(yùn)算對(duì)象)的要求操作數(shù)的個(gè)數(shù);操作數(shù)的數(shù)據(jù)類型。⑶運(yùn)算符的優(yōu)先級(jí)別⑷運(yùn)算符的結(jié)合方向⑸運(yùn)算結(jié)果參見(jiàn)附錄B451、算術(shù)運(yùn)算符+

(加法運(yùn)算符,或正值運(yùn)算符。如:3+5、+3)-(減法運(yùn)算符,或負(fù)值運(yùn)算符。如:5-2、-3)*(乘法運(yùn)算符。如:3*5)/(除法運(yùn)算符。兩個(gè)整數(shù)相除的結(jié)果為整數(shù),如:5/3結(jié)果為1)%(模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3)。注:1、/:如果兩個(gè)整數(shù)相除,結(jié)果為整數(shù)(整除),結(jié)果“向零取整”。例:8/5=1,8/-5=-1,-8/5=-1,8.0/5=1.6。2、%:結(jié)果的符號(hào)與被除數(shù)符號(hào)相同。例:8%5=3,-8%5=-3,8%-5=3。462、自增、自減運(yùn)算符作用是使變量的值增1或減1++i,--i:在使用i之前,先使i的值加(減)1i++,i--:在使用i之后,使i的值加(減)1注:由于自增和自減可以改變操作數(shù)自身的值,因此其運(yùn)算對(duì)象只能是一個(gè)變量。整型、實(shí)型、字符型、指針類型變量均可作為其運(yùn)算對(duì)象。變量x初值表達(dá)式運(yùn)算后x的值運(yùn)算后表達(dá)式的值2++x332x++322--x112x--12472、自增、自減運(yùn)算符//自增自減綜合應(yīng)用#include<stdio.h>voidmain(){

inti=8;printf(“%d\n”,++i);printf("%d\n",--i);printf(“%d\n”,i++);printf(“%d\n”,i--);printf("%d\n",-i++);printf(“%d\n”,-i--);printf("%d\n",i);}

//輸出9//輸出8//輸出8,但i的值為9//輸出9,但i的值為8//輸出-8,但i的值為9//輸出-9,相當(dāng)于-(i--)//此時(shí)輸出多少呢?483、賦值運(yùn)算符

“=”是賦值運(yùn)算符作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量例:a=20;的作用是“將值20賦給變量a”。

賦值表達(dá)式一般形式為:

變量賦值運(yùn)算符表達(dá)式對(duì)賦值表達(dá)式求解的過(guò)程:求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值賦給賦值運(yùn)算符左側(cè)的變量493、賦值運(yùn)算符賦值運(yùn)算符左側(cè)的標(biāo)識(shí)符稱為“左值”

出現(xiàn)在賦值運(yùn)算符右側(cè)的表達(dá)式稱為“右值”注意:并不是任何對(duì)象都可以作為左值的,表達(dá)式和常變量就不能作為左值。任何左值都可做右值。賦值表達(dá)式“a=3*5”的值為15,對(duì)表達(dá)式求解后,變量a的值和表達(dá)式的值都是15“a=(b=5)”和“a=b=5”等價(jià)“a=b”和“b=a”含義不同503、賦值運(yùn)算符兩側(cè)類型一致時(shí),直接賦值兩側(cè)類型不一致,但都是數(shù)值型或字符型,自動(dòng)將右側(cè)的類型轉(zhuǎn)換為左側(cè)類型后賦值定義變量時(shí)要防止數(shù)據(jù)溢出實(shí)型→整型:直接取整,舍棄小數(shù)部分。整型→實(shí)型:數(shù)值不變,但要補(bǔ)足相應(yīng)的有效位數(shù)。字符型→整型:將ASCII碼值賦給最低的8位。整型→字符型:只截取最低的8位賦給字符型變量。

513、賦值運(yùn)算符復(fù)合的賦值運(yùn)算符

在賦值符“=”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符a+=3等價(jià)于a=a+3復(fù)合賦值運(yùn)算符使用一般形式為:<變量><雙目運(yùn)算符>=<表達(dá)式>等價(jià)于:<變量>=<變量><雙目運(yùn)算符><表達(dá)式>//例如:n+=1 等價(jià)于n=n+1x*=y+1 等價(jià)于x=x*(y+1)k%=i+k 等價(jià)于k=k%(i+k)要加括號(hào)523、賦值運(yùn)算符賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。

例:

a+=a-=a*a求解步驟如下:(設(shè)置a的初值為12)①先進(jìn)行“a-=a*a”的運(yùn)算,它相當(dāng)于:a=a-a*a,a的值為12-144=-132。②再進(jìn)行“a+=-132”的運(yùn)算,相當(dāng)于:a=a+(-132),a的值為-132-132=-264。如果變成:

a+=a-=a*=a

結(jié)果又如何呢?534、關(guān)系運(yùn)算符關(guān)系運(yùn)算符及其優(yōu)先次序<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)說(shuō)明:關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符544、關(guān)系運(yùn)算符關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式起來(lái)的式子,稱關(guān)系表達(dá)式。例:a>b,a+b>b+c,(a=3)>(b=5),’a’<‘b’,(a>b)>(b<c)關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。例:關(guān)系表達(dá)式”a>b”的值為“真”,表達(dá)式的值為1。C語(yǔ)言中沒(méi)有專用的邏輯值,1代表真,0代表假554、關(guān)系運(yùn)算符#include<stdio.h>voidmain(){

inta=1,b=2,c=3,d=4;

/*聲明變量a,b,c,d并初始化*/printf(“%d\n”,a+b>c+d); printf(“%d\n”,a<=2*b); printf(“%d\n”,'a'<'d'); printf(“%d\n”,a!=(c==d));}

//結(jié)果為假,輸出0//結(jié)果為真,輸出1//結(jié)果為真,輸出1//結(jié)果為真,輸出1printf(“%d\n”,a<b<c);

輸出什么?有時(shí)判斷的條件是一個(gè)復(fù)合的條件,如:是中國(guó)公民,且在18歲以上,如何表達(dá)?565、邏輯運(yùn)算符邏輯運(yùn)算符及其優(yōu)先次序1、&&(邏輯與)相當(dāng)于其他語(yǔ)言中的AND2、||(邏輯或)相當(dāng)于其他語(yǔ)言中的OR3、!(邏輯非)相當(dāng)于其他語(yǔ)言中的NOT例:a&&b若a,b為真,則a&&b為真。a||b若a,b之一為真,則a||b為真。!a若a為真,則!a為假。優(yōu)先次序:!(非)->&&(與)->||(或)邏輯運(yùn)算符中的“&&”和“||”低于關(guān)系運(yùn)算符,“!”高于算術(shù)運(yùn)算符575、邏輯運(yùn)算符//邏輯運(yùn)算示例#include<stdio.h>voidmain(){

charch;printf(“inputaletter:”);scanf(“%c”,&ch); /*輸入一個(gè)字母*/if(!(ch>=’A’&&ch<=’Z’||ch>=’a’&&ch<=’z’))printf(“inputerror!\n”);

/*如果輸入的不是字母則提示錯(cuò)誤*/}

不能改成:’A’<=ch<=’Z’

585、邏輯運(yùn)算符邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)的式子就是邏輯表達(dá)式邏輯表達(dá)式的值應(yīng)該是一個(gè)邏輯量“真”或“假”。例:設(shè)a=4,b=5:!a的值為0a&&b的值為1a||b的值為1!a||b的值為14&&0||2的值為1任何非零的數(shù)值被認(rèn)作“真”,非零即為真595、邏輯運(yùn)算符例:5>3&&8<4-!0

自左向右運(yùn)算

1&&0邏輯值為08<3邏輯值為04-1值為3!0邏輯值為15>3邏輯值為1表達(dá)式值為0605、邏輯運(yùn)算符邏輯運(yùn)算的“短路”特性:(1)a&&b&&c

只有a為真時(shí),才需要判斷b的值,只有a和b都為真時(shí),才需要判斷c的值。(2)a||b||c

只要a為真,就不必判斷b和c的值,只有a為假,才判斷b。a和b都為假才判斷c。例:(m=a>b)&&(n=c>d)當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時(shí),由于“a>b”的值為0,因此m=0,而“n=c>d”不被執(zhí)行,因此n的值不是0而仍保持原值1。616、逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符:將兩個(gè)表達(dá)式連接起來(lái),又稱為“順序求值運(yùn)算符”。如:3+5,6+8一般形式:

表達(dá)式1,表達(dá)式2…,表達(dá)式n求解過(guò)程:先求解表達(dá)式1,再求解表達(dá)式2,依次。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式n的值。626、逗號(hào)運(yùn)算符例:逗號(hào)表達(dá)式x=a=2*3,a*4,a+5;

分析:賦值運(yùn)算符優(yōu)先級(jí)高于逗號(hào)運(yùn)算符,先計(jì)算子表達(dá)式x=a=2*3,a和x被賦值為6,再計(jì)算子表達(dá)式a*4,值為24,最后計(jì)算子表達(dá)式a+5,值為11,整個(gè)表達(dá)式的結(jié)果取子表達(dá)式a+5的值,即11。例:逗號(hào)表達(dá)式x=(a=2*3,a*4,a+5);

分析:先計(jì)算括號(hào)中的逗號(hào)表達(dá)式a=2*3,a*4,a+5,其中先計(jì)算子表達(dá)式a=2*3,a被賦值為6,再計(jì)算子表達(dá)式a*4,值為24,最后計(jì)算子表達(dá)式a+5,值為11,整個(gè)逗號(hào)表達(dá)式的結(jié)果取子表達(dá)式a+5的值11,再賦給x。637、條件運(yùn)算符條件運(yùn)算符是三目運(yùn)算符,由兩個(gè)符號(hào)“?:”組成,需要3個(gè)運(yùn)算對(duì)象。

一般形式:表達(dá)式1?表達(dá)式2:表達(dá)式3求解過(guò)程:若表達(dá)式1的值為真(非0),則執(zhí)行表達(dá)式2,其結(jié)果作為整個(gè)條件表達(dá)式的值,否則執(zhí)行表達(dá)式3,其結(jié)果作為整個(gè)條件表達(dá)式的值。647、條件運(yùn)算符說(shuō)明:(1).3個(gè)操作數(shù)可以是任意類型表達(dá)式。

(2).條件運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符,低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符,位于第13優(yōu)先級(jí)。

(3).條件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆薄?/p>

(4).“表達(dá)式2”和“表達(dá)式3”不僅可以是數(shù)值表達(dá)式,還可以是賦值表達(dá)式或函數(shù)表達(dá)式。(5).如果表達(dá)式1為真,只計(jì)算表達(dá)式2,否則只計(jì)算表達(dá)式3。657、條件運(yùn)算符//輸入兩個(gè)數(shù),求其中較大的數(shù)和較小的數(shù)。#include<stdio.h>voidmain(){inta,b,max,min;printf(“inputa=”);scanf(“%d”,&a);/*輸入變量a*/printf(“inputb=”);scanf(“%d”,&b);/*輸入變量b*/max=a>b?a:b;min=a<b?a:b;printf(“max=%d,min=%d\n”,max,min);

}

求a,b,c三個(gè)數(shù)的最大數(shù)m:

m=a>b?a:b>c?b:c;

()668、位運(yùn)算符由于C語(yǔ)言可直接對(duì)硬件編程,在系統(tǒng)軟件設(shè)計(jì)中要求能對(duì)位進(jìn)行運(yùn)算,因此,C語(yǔ)言提供了6種位運(yùn)算符,支持位運(yùn)算等匯編操作。運(yùn)算符功能運(yùn)算對(duì)象個(gè)數(shù)優(yōu)先級(jí)結(jié)合方向~按位取反單目2從右至左<<左移位雙目5從左至右>>右移位雙目5從左至右&按位與雙目8從左至右^按位異或雙目9從左至右|按位或雙目10從左至右678、位運(yùn)算符位邏輯運(yùn)算符是以數(shù)據(jù)的二進(jìn)制數(shù)位進(jìn)行運(yùn)算,位移動(dòng)運(yùn)算是按二進(jìn)制位數(shù)進(jìn)行左移和右移。(1)位邏輯運(yùn)算ab~

a(按位取反)a&b(按位與)a|b(按位或)a^b(按位異或)110110100011011011001000688、位運(yùn)算符1)按位取反按位取反,運(yùn)算符為“~”。把該運(yùn)算對(duì)象的每個(gè)二進(jìn)制位取反。例如,~5,運(yùn)算如下(只列出了最低的8個(gè)二進(jìn)制位):~0000010111111010698、位運(yùn)算符2)按位與按位與,運(yùn)算符為“&”。兩個(gè)運(yùn)算對(duì)象中對(duì)應(yīng)的二進(jìn)制位都是1,則該位結(jié)果為1;否則,結(jié)果為0。按位與運(yùn)算通常用來(lái)對(duì)某些二進(jìn)制位清0或保留某些二進(jìn)制位。在需要清0的位置上,將與它進(jìn)行與運(yùn)算的運(yùn)算對(duì)象的對(duì)應(yīng)的二進(jìn)制位置0,需要保留原值的位置,則將對(duì)應(yīng)的二進(jìn)制位置1。例如,要保留155的最低3位不變,其余置0,可用155&7來(lái)實(shí)現(xiàn),運(yùn)算如下(只列出了最低的8個(gè)二進(jìn)制位):10011011(155的二進(jìn)制形式)&00000111(7的二進(jìn)制形式)00000011(結(jié)果為3)708、位運(yùn)算符3)按位或運(yùn)算符為“|”。兩個(gè)運(yùn)算對(duì)象中對(duì)應(yīng)的二進(jìn)制位有一個(gè)是1,則該位結(jié)果為1;否則,結(jié)果為0。按位或運(yùn)算通常用來(lái)對(duì)某些二進(jìn)制位置1或保留某些二進(jìn)制位。在需要置1的位置上,將與它進(jìn)行或運(yùn)算的運(yùn)算對(duì)象的對(duì)應(yīng)的二進(jìn)制位置1,需要保留原值的位置,則將對(duì)應(yīng)的二進(jìn)制位置0。例如,要保留129的最低3位不變,其余置1,可用129|248來(lái)實(shí)現(xiàn),運(yùn)算如下(只列出了最低的8個(gè)二進(jìn)制位):10000001(129的二進(jìn)制形式)|11111000(248的二進(jìn)制形式)11111001(結(jié)果為249)718、位運(yùn)算符4)按位異或按位異或,運(yùn)算符為“^”。兩個(gè)運(yùn)算對(duì)象中對(duì)應(yīng)的二進(jìn)制位相同(都是1或都是0),則該位結(jié)果為0;不相同則結(jié)果為1。例如,155^129,運(yùn)算如下(只列出了最低的8個(gè)二進(jìn)制位):10011011(155的二進(jìn)制形式)^10000001(129的二進(jìn)制形式)00011010(結(jié)果為26)728、位運(yùn)算符(2)位移動(dòng)運(yùn)算位移動(dòng)運(yùn)算表達(dá)式的語(yǔ)法格式:運(yùn)算數(shù)據(jù)位移動(dòng)運(yùn)算符移動(dòng)位數(shù)①左移位,運(yùn)算符為“<<”。把左邊的運(yùn)算數(shù)據(jù)的全部向左移指定的位數(shù),高位丟棄,低位補(bǔ)0。例如,a的值為5,a<<2則是把a(bǔ)的二進(jìn)制位全部向左移動(dòng)2位,即5的二進(jìn)制00000101左移2位后為00010100(十進(jìn)制數(shù)為20),相當(dāng)于a乘以22。738、位運(yùn)算符(2)位移動(dòng)運(yùn)算②右移位,運(yùn)算符為“>>”。把左邊的運(yùn)算數(shù)據(jù)的全部向右移指定的位數(shù),低位丟棄,對(duì)于正數(shù),高位補(bǔ)0,負(fù)數(shù)的符號(hào)位為1,最高位補(bǔ)1還是補(bǔ)0取決于編譯器,多數(shù)情況是補(bǔ)1。例如,a的值為15,a>>2則是把a(bǔ)的二進(jìn)制位全部向右移動(dòng)2位,即15的二進(jìn)制00001111右移2位后為00000011(十進(jìn)制數(shù)為3),相當(dāng)于a除以22取整。749、其他運(yùn)算符

sizeof()運(yùn)算符,單目運(yùn)算,第2優(yōu)先級(jí),結(jié)合方向是從右至左。一般形式:sizeof(變量名|數(shù)據(jù)類型標(biāo)識(shí)符|表達(dá)式)功能:計(jì)算該數(shù)據(jù)類型變量所占的字節(jié)數(shù)。例:

inta=5;floatx=3.2,y=6.4;

sizeof(a)值為:4(在TURBOC中為2)

sizeof(char)值為:1

sizeof(x+y)值為:4

sizeof(double)值為:8 752.3.2表達(dá)式表達(dá)式:用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來(lái)的、符合C語(yǔ)法規(guī)則的式子,稱為C表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。其中,單個(gè)的常量、變量、函數(shù)也稱為表達(dá)式。表達(dá)式運(yùn)算后只會(huì)產(chǎn)生一個(gè)結(jié)果,該結(jié)果是具有某種數(shù)據(jù)類型的數(shù)值。C語(yǔ)言中,運(yùn)算是自左向右的,運(yùn)算符執(zhí)行順序通常由運(yùn)算符的優(yōu)先級(jí)和結(jié)合方向控制。優(yōu)先級(jí)較高的運(yùn)算符先于優(yōu)先級(jí)較低的執(zhí)行,如生活中常說(shuō)的先乘除后加減。結(jié)合方向則控制具有相同優(yōu)先級(jí)的多個(gè)運(yùn)算符的執(zhí)行順序。762.3.3類型轉(zhuǎn)換C語(yǔ)言提供了3種類型轉(zhuǎn)換方式:自動(dòng)轉(zhuǎn)換、強(qiáng)制轉(zhuǎn)換和賦值轉(zhuǎn)換。1、自動(dòng)轉(zhuǎn)換(也稱隱式類型轉(zhuǎn)換)說(shuō)明:這種類型轉(zhuǎn)換是由系統(tǒng)自動(dòng)進(jìn)行的。必定的轉(zhuǎn)換轉(zhuǎn)換的方向772.3.3類型轉(zhuǎn)換例如,設(shè)folatx=7.5;則x%3顯然不符合要求,因?yàn)橹荒軐?duì)整型數(shù)據(jù)進(jìn)行取余運(yùn)算,所以需要用到強(qiáng)制類型轉(zhuǎn)換,(int)x%3即7%3。2、強(qiáng)制類型轉(zhuǎn)換(也稱顯式轉(zhuǎn)換)是用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將運(yùn)算對(duì)象轉(zhuǎn)換為需要的數(shù)據(jù)類型。

一般形式:

(目標(biāo)類型說(shuō)明符)(表達(dá)式)說(shuō)明:表達(dá)式應(yīng)該用括號(hào)括起來(lái)。在強(qiáng)制類型轉(zhuǎn)換時(shí),得到一個(gè)所需類型的中間變量,原來(lái)變量的類型未發(fā)生變化。782.3.3類型轉(zhuǎn)換3、賦值時(shí)的類型轉(zhuǎn)換當(dāng)左右類型不一致時(shí),需要進(jìn)行類型轉(zhuǎn)換,將右邊的類型轉(zhuǎn)換為左邊的類型,這種轉(zhuǎn)換系統(tǒng)自動(dòng)進(jìn)行。實(shí)型數(shù)據(jù)→整型:直接取整,舍棄小數(shù)部分。字符型或整型數(shù)據(jù)→實(shí)型:數(shù)值不變,補(bǔ)足相應(yīng)的有效位數(shù)。單精度實(shí)型→雙精度實(shí)型:數(shù)值不變,有效位數(shù)擴(kuò)展到16位,以8個(gè)字節(jié)存儲(chǔ);雙精度實(shí)型賦值給單精度實(shí)型時(shí),只截取前面7位有效數(shù)字,以4個(gè)字節(jié)存儲(chǔ)。字符型→整型:將ASCII碼值賦給最低的8位。整型→字符型:只截取最低的8位賦給字符型變量。占位數(shù)多的→位數(shù)少的:截取低位賦值。占位數(shù)少的→位數(shù)多的:數(shù)據(jù)直接賦給低位,高位符號(hào)擴(kuò)充。792.4標(biāo)準(zhǔn)輸入/輸出(一)所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的。輸出:從計(jì)算機(jī)向外部輸出設(shè)備(顯示器,打印機(jī))輸出數(shù)據(jù)。輸入:從輸入設(shè)備(鍵盤,鼠標(biāo),掃描儀)向計(jì)算機(jī)輸入數(shù)據(jù)。(二)C語(yǔ)言本身不提供輸入輸出語(yǔ)句,輸入和輸出操作是由C函數(shù)庫(kù)中的函數(shù)來(lái)實(shí)現(xiàn)的。(三)在使用系統(tǒng)庫(kù)函數(shù)時(shí),要用預(yù)編譯命令#include將有關(guān)的“頭文件”包括到用戶源文件中。

#include<stdio.h>或#include“stdio.h”802.4.1printf()函數(shù)

printf()函數(shù)稱為格式化輸出函數(shù),它能夠按用戶指定的格式輸出多種類型的數(shù)據(jù)。

一般格式為:printf(”格式控制字符串”,輸出列表);

例如:printf(”i=%d,c=%c\n”,i,c);普通字符可以是常量、變量或表達(dá)式812.4.1printf()函數(shù)printf函數(shù)的參數(shù)包括兩部分:(1)“格式控制”是用雙撇號(hào)括起來(lái)的字符串,也稱“轉(zhuǎn)換控制字符串”,它包括三種信息。①格式說(shuō)明。格式說(shuō)明由“%”和格式字符組成,如%d、%f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。格式說(shuō)明總是由“%”字符開(kāi)始的。

②普通字符。普通字符即需要原樣輸出的字符。例如上面printf函數(shù)中雙撇號(hào)內(nèi)的逗號(hào)、空格和換行符。

③轉(zhuǎn)義字符:無(wú)法用單個(gè)字符描述的一些特定操作,如\n(換行)、\t(跳到下一個(gè)水平制表位)等。(2)“輸出表列”是需要輸出的一些數(shù)據(jù),可以是常量、變量或表達(dá)式。822.4.1printf()函數(shù)//printf()函數(shù)的使用示例。#include<stdio.h>voidmain(){charch=’a’;

printf("ch=%d,thecapital:%c\n",ch,ch-32);

}

運(yùn)行結(jié)果:ch=97,thecapital:A832.4.1printf()函數(shù)格式字符含義d以十進(jìn)制形式輸出帶符號(hào)整數(shù)(默認(rèn)正數(shù)不輸出符號(hào))o以八進(jìn)制形式輸出無(wú)符號(hào)整數(shù)(默認(rèn)不輸出前綴0)x或X以十六進(jìn)制形式輸出無(wú)符號(hào)整數(shù)(默認(rèn)不輸出前綴0x)u以十進(jìn)制形式輸出無(wú)符號(hào)整數(shù)f以小數(shù)形式輸出單、雙精度實(shí)數(shù)e或E以指數(shù)形式輸出單、雙精度實(shí)數(shù)g或G以%f或%e中輸出寬度較短的形式輸出單、雙精度實(shí)數(shù)c輸出單個(gè)字符s輸出字符串842.4.1printf()函數(shù)基本的格式字符有以下幾種:⑴d格式符。按十進(jìn)制整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。

⑵i格式符。作用與d格式符相同,按十進(jìn)制整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。一般習(xí)慣用%d而少用%i。⑶c格式符。用來(lái)輸出一個(gè)字符。

一個(gè)值在0~255范圍內(nèi)的整數(shù),也可以用“%c”使之按字符形式輸出。

852.4.1printf()函數(shù)⑷s格式符,用來(lái)輸出一個(gè)字符串。

例:printf(″%s″,″CHINA″);輸出字符串“CHINA”(不包括雙引號(hào))⑸f格式符。用來(lái)輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出,不指定整個(gè)字段的長(zhǎng)度,由系統(tǒng)自動(dòng)指定。一般的處理方法是:整數(shù)部分全部輸出,并輸出6位小數(shù)。注意:在輸出的數(shù)字中并非全部數(shù)字都是有效數(shù)字。單精度實(shí)數(shù)的有效位數(shù)一般為6-7位,雙精度實(shí)數(shù)的有效位數(shù)一般為15-16位。862.4.1printf()函數(shù)(6)e格式符,用格式說(shuō)明%e指定以指數(shù)形式輸出實(shí)數(shù)。例:printf(″%e″,123.456);輸出如下

1.23460

e+0026列5列C編譯系統(tǒng)自動(dòng)指定給出數(shù)字部分的小數(shù)位數(shù)為6位,指數(shù)部分占5位。872.4.1printf()函數(shù)完整的格式說(shuō)明部分還可以加入一些修飾符,形式為:

%[標(biāo)志][域?qū)抅[.精度][長(zhǎng)度]格式字符(1)標(biāo)志:可使用-、+、空格、#和0共5種標(biāo)志字符

標(biāo)志字符含義-結(jié)果左對(duì)齊,數(shù)據(jù)長(zhǎng)度小于域?qū)挄r(shí)右邊補(bǔ)充空格+輸出符號(hào)(正號(hào)或負(fù)號(hào))空格輸出值為正數(shù)且沒(méi)有輸出正號(hào)時(shí)冠以空格#只對(duì)部分類型格式字符有影響;對(duì)o類,在輸出時(shí)加前綴0;對(duì)x類,在輸出時(shí)加前綴0x;對(duì)e,g,f類當(dāng)結(jié)果有小數(shù)時(shí)才顯示出小數(shù)點(diǎn)0數(shù)據(jù)長(zhǎng)度小于域?qū)挄r(shí),不足位數(shù)用0補(bǔ)充882.4.1printf()函數(shù)(2)域?qū)挘褐付〝?shù)據(jù)顯示在輸出設(shè)備上所占的總寬度。若數(shù)據(jù)的實(shí)際位數(shù)多于指定寬度,則按實(shí)際位數(shù)輸出;若實(shí)際位數(shù)少于指定寬度,則數(shù)據(jù)通常會(huì)在指定寬度內(nèi)右對(duì)齊,不足部分以空格補(bǔ)齊。(3)精度:以“.”開(kāi)頭,其意義是:如果輸出值為整數(shù),則輸出數(shù)字的最少個(gè)數(shù),若位數(shù)少于指定精度,就在整數(shù)前面加0,補(bǔ)齊指定的最小數(shù)字個(gè)數(shù);如果輸出值為實(shí)數(shù),則表示小數(shù)的位數(shù),默認(rèn)為6位;如果輸出的是字符串,則只取字符串中左端n個(gè)字符。注意,若實(shí)際位數(shù)大于所定義的精度數(shù),則截去超過(guò)的部分,對(duì)小數(shù)部分四舍五入。(4)長(zhǎng)度:長(zhǎng)度格式符為h,l兩種,h表示按短整型輸出,l表示按長(zhǎng)整型輸出。892.4.1printf()函數(shù)//格式輸出示例。{inta=123;floatb=123.1234567;doublec=12345678.1234567;charch='f';

printf("a=%d,%8.5d,%08d,%o,%#x\n",a,a,a,a,a,a);printf("b=%f,%-10.3f,%e,%g\n",b,b,b,b);printf("c=%f,%8.4f,%g\n",c,c,c);printf("ch=%c,%8c\n",ch,ch);printf("%s,%.4s\n","abcdef","abcdef");}

902.4.1printf()函數(shù)注意:使用printf()函數(shù)時(shí)輸出順序是從左到右,但是輸出列表中的各輸出項(xiàng)的求值順序,不同的編譯器不一定相同,VisualC++是按從右到左進(jìn)行的。printf()函數(shù)還可以只有格式控制字符串而沒(méi)有輸出項(xiàng)。

//輸出項(xiàng)求值順序示例{

inta=5;printf("a=%d,a=%d\n",a=a+1,a=a+2);}

運(yùn)行結(jié)果:a=8,a=7912.4.2scanf()函數(shù)scanf()函數(shù)稱為格式化輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量中。一般格式為:

scanf(“格式控制字符串”,地址列表);

含義同printf函數(shù)可以是變量的地址,或字符串的首地址inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);345↙a=3,b=4,c=5922.4.2scanf()函數(shù)格式字符串由%和格式字符組成,還可以加入一些可選項(xiàng)。一般形式為:

%[*][輸入數(shù)據(jù)寬度][長(zhǎng)度]格式字符(1)格式字符:指定輸入數(shù)據(jù)的類型。格式字符含義(輸入類型)d輸入十進(jìn)制整數(shù)o輸入八進(jìn)制整數(shù)(可以以0開(kāi)頭,也可以不以0開(kāi)頭)u輸入無(wú)符號(hào)十進(jìn)制整數(shù)x輸入十六進(jìn)制整數(shù)(可以以0x或0X開(kāi)頭,也可以不以此開(kāi)頭)f、e、g輸入實(shí)數(shù)(用小數(shù)形式或指數(shù)形式,符號(hào)和小數(shù)部分可選)c輸入單個(gè)字符(輸入時(shí)不加單引號(hào))s輸入字符串(輸入時(shí)不加雙引號(hào))932.4.2scanf()函數(shù)(2)*:表示該輸入項(xiàng),讀入后不賦予相應(yīng)的變量,即跳過(guò)該輸入值。例如:scanf("%d%*d%d",&a,&b);當(dāng)輸入為:123時(shí),把1賦予a,2被跳過(guò),3賦予b。(3)輸入寬度:用十進(jìn)制整數(shù)指定輸入的寬度(即字符數(shù))。例如:scanf("%5d",&a);輸入:12345678只截取前5位12345賦予變量a。又如:scanf("%4d%4d",&a,&b);輸入:12345678將把1234賦予a,而5678賦予b。(4)長(zhǎng)度:長(zhǎng)度格式符為l和h,l表示輸入長(zhǎng)整型數(shù)據(jù)(如%ld)和雙精度實(shí)型數(shù)(如%lf)。h表示輸入短整型數(shù)據(jù)。942.4.2scanf()函數(shù)使用scanf()函數(shù)容易與printf()函數(shù)混淆,注意以下:scanf()函數(shù)中沒(méi)有精度控制。如:scanf(“%5.2f”,&a);是非法的。scanf()函數(shù)中要求給出變量地址,如給出變量名則不會(huì)正確賦值。如:scanf(“%d”,a);是錯(cuò)誤的,應(yīng)改為scnaf(“%d”,&a);在輸入多個(gè)數(shù)值數(shù)據(jù)時(shí),若格式控制串中沒(méi)有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車作間隔。在輸入字符數(shù)據(jù)時(shí),若格式控制串中無(wú)非格式字符,則認(rèn)為所有輸入的字符均為有效字符。

952.4.2scanf()函數(shù)例如:scanf("%c%c%c",&a,&b,&c);當(dāng)輸入為:def(即d空

溫馨提示

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

評(píng)論

0/150

提交評(píng)論