第二章 計(jì)算
2.1變量
算找零
如何能在程序運(yùn)行時(shí)輸入那個(gè)數(shù)字23,然后計(jì)算輸出結(jié)果?
需要:1.有地方放輸入的數(shù)字;2.有辦法輸入數(shù)字;3.輸入的數(shù)字能參與計(jì)算。
?

2.1.1 變量定義
1、變量
變量是一個(gè)保存數(shù)據(jù)的地方,當(dāng)我們需要在程序里保存數(shù)據(jù)時(shí),比如上面的例子中要記錄用戶(hù)輸入的價(jià)格,就需要一個(gè)變量來(lái)保存它。用一個(gè)變量保存了數(shù)據(jù),它才能參加到后面的計(jì)算中,比如計(jì)算找零。
2、變量定義
?
3、變量的命名
變量需要一個(gè)名字,變量的名字是一種“標(biāo)識(shí)符”,意思是它是用來(lái)識(shí)別這個(gè)和那個(gè)的不同的名字。
標(biāo)識(shí)符有標(biāo)識(shí)符的構(gòu)造規(guī)則?;镜脑瓌t是:標(biāo)識(shí)符只能由字母、數(shù)字和下劃線(xiàn)組成,數(shù)字不可以出現(xiàn)在第一個(gè)位置上,C語(yǔ)言的關(guān)鍵字(有的地方叫它們保留字)不可以用做標(biāo)識(shí)符。
C語(yǔ)言的保留字
不需要背誦,隨著學(xué)習(xí)自然會(huì)了解
2.1.2 變量賦值與初始化
這一行定義了一個(gè)變量。變量的名字是price,類(lèi)型是int,初始值是0。
price=0是一個(gè)式子,這里的“=”是一個(gè)賦值運(yùn)算符,表示將“=”右邊的值賦給左邊的變量。
1、賦值
和數(shù)學(xué)不同,a=b在數(shù)學(xué)中表示關(guān)系,即a和b的值一樣;而在程序設(shè)計(jì)中,a=b表示要求計(jì)算機(jī)做一個(gè)動(dòng)作:將b的值賦給a。關(guān)系是靜態(tài)的,而動(dòng)作是動(dòng)態(tài)的。在數(shù)學(xué)中,a=b和b=a是等價(jià)的,而在程序設(shè)計(jì)中,兩者的意思完全相反。
2、初始化
當(dāng)賦值發(fā)生在定義變量的時(shí)候,就像程序I中的那樣,就是變量的初始化。雖然C語(yǔ)言并沒(méi)有強(qiáng)制要求所有的變量都在定義的地方做初始化,但是所有的變量在第一次被使用(出現(xiàn)在賦值運(yùn)算符的右邊)之前被應(yīng)該賦值一次
3、變量初始化
組合變量定義的時(shí)候,也可以在這個(gè)定義中單獨(dú)給單個(gè)變量賦初值,如:int price = 0, amount = 100;
4、表達(dá)式
“= "是賦值運(yùn)算符,有運(yùn)算符的式子就叫做表達(dá)式。
5、變量類(lèi)型
這一行,定義了一個(gè)變量。變量的名字是price,類(lèi)型是int,初始值是0。
C是一種有類(lèi)型的語(yǔ)言,所有的變量在使用之前必須定義或聲明,所有的變量必須具有確定的數(shù)據(jù)類(lèi)型。數(shù)據(jù)類(lèi)型表示在變量中可以存放什么樣的數(shù)據(jù),變量中只能存放指定類(lèi)型的數(shù)據(jù),程序運(yùn)行過(guò)程中也不能改變變量的類(lèi)型。
6、第二個(gè)變量
1、讀整數(shù)
要求scanf這個(gè)函數(shù)讀入下一個(gè)整數(shù),讀到的結(jié)果賦值給變量price
注意:小心price前面的&
2.1.4常量VS變量
1、常量
固定不變的數(shù),是常數(shù)。直接寫(xiě)在程序里,我們稱(chēng)作直接量(literal)。
更好的方式,是定義一個(gè)常量:
?

2、const
const是一個(gè)修飾符,加在int的前面,用來(lái)給這個(gè)變量加上一個(gè)const (不變的)的屬性。這個(gè)const的屬性表示這個(gè)變量的值一旦初始化,就不能再修改了。
int change = AMOUNT - price;
如果你試圖對(duì)常量做修改,把它放在賦值運(yùn)算符的左邊,就會(huì)被編譯器發(fā)現(xiàn),指出為一個(gè)錯(cuò)誤。

讓用戶(hù)輸入變量AMOUNT的值,而不是使用固定的初始值。這個(gè)變量在哪里定義合適呢?

?
plus

2.1.5 浮點(diǎn)數(shù)
例:身高5尺7寸
美國(guó)人固執(zhí)地使用英制計(jì)量單位,他們習(xí)慣用幾尺幾寸(英尺英寸)來(lái)報(bào)自己的身高。如果遇到一個(gè)美國(guó)人告訴你他是5英尺7,他的身高應(yīng)該是一米幾呢?
(5+7/12)x0.3048= 1.7018米
?



在這些結(jié)果里英寸并沒(méi)有起到作用
因?yàn)閮蓚€(gè)整數(shù)的運(yùn)算的結(jié)果只能是整數(shù)
10和10.0在C中是完全不同的數(shù)
10.0是浮點(diǎn)數(shù)
要把12改為12.0 ? ? ?
當(dāng)浮點(diǎn)數(shù)和整數(shù)放到一起運(yùn)算時(shí),C會(huì)將整數(shù)轉(zhuǎn)換成浮點(diǎn)數(shù),然后行浮點(diǎn)數(shù)的運(yùn)算。

帶小數(shù)點(diǎn)的數(shù)值。浮點(diǎn)這個(gè)詞的本意就是指小數(shù)點(diǎn)是浮動(dòng)的,是計(jì)算機(jī)內(nèi)部表達(dá)非整數(shù)(包含分?jǐn)?shù)和無(wú)理數(shù))的一種方式。另一種方式叫做定點(diǎn)數(shù),不過(guò)在C語(yǔ)言中你不會(huì)遇到定點(diǎn)數(shù)。人們借用浮點(diǎn)數(shù)這個(gè)詞來(lái)表達(dá)所有的帶小數(shù)點(diǎn)的數(shù)。
1、double
inch是定義為int類(lèi)型的變量,如果把int換成double,我們就把它改為double類(lèi)型的浮點(diǎn)數(shù)變量了。
double的意思是“雙”,它本來(lái)“雙精度浮點(diǎn)數(shù)”的第一一個(gè)單詞,人們用來(lái)表示浮點(diǎn)數(shù)類(lèi)型。除了double,還有float (意思就是浮點(diǎn)! )表示單精度浮點(diǎn)數(shù)。
2、數(shù)據(jù)類(lèi)型
整數(shù)
int
printf("%.",....) ?
scanf("%d",..) ?.....
帶小數(shù)點(diǎn)的數(shù)
double
printf("%f,...)
scanf(“%lf”,…)
2.2 表達(dá)式
表達(dá)式是一系列運(yùn)算符和算子的組合,用來(lái)計(jì)算一個(gè)值。
2.2.1.運(yùn)算符
運(yùn)算符(operator) 是指進(jìn)行運(yùn)算的動(dòng)作,比如加法運(yùn)算符“+”,減法運(yùn)算符“-”
算子(operand)是指參與運(yùn)算的值,這個(gè)值可能是常數(shù),也可能是變量,還可能是一個(gè)方法的返回值

例:計(jì)算時(shí)間差
輸入兩個(gè)時(shí)間,每個(gè)時(shí)間分別輸入小時(shí)和分鐘的值,然后輸出兩個(gè)時(shí)間之間的差,也以幾小時(shí)幾分表示。

2.2.2運(yùn)算符優(yōu)先級(jí)
寫(xiě)一個(gè)程序,輸入兩個(gè)整數(shù),輸出它們的平均值
?

1、運(yùn)算符優(yōu)先級(jí)

單目運(yùn)算,取負(fù),優(yōu)先級(jí)最高
2、賦值運(yùn)算符
賦值也是運(yùn)算,也有結(jié)果
a=6的結(jié)果是a被賦予的值,也就是6
a=b=6—> a=(b=6) ? ? ?
3、結(jié)合關(guān)系
一般自左向右
單目+-和賦值=自右向左 ? ? ?
例:計(jì)算復(fù)利
在銀行存定期的時(shí)候,可以選擇到期后自動(dòng)轉(zhuǎn)存,并將到期的利息計(jì)入本金合并轉(zhuǎn)存。如果1年期的定期利率是3.3%,那么連續(xù)自動(dòng)轉(zhuǎn)存3年后,最初存入的x元定期會(huì)得到多少本息余額?
本息合計(jì)= x(1+3.3%)}.
如果已經(jīng)有:
Int a = 6;
int b= 5;
如何交換a、b兩個(gè)變量的值? ? ? ? ? ?
程序是按步驟執(zhí)行的
程序表達(dá)的是順序執(zhí)行的動(dòng)作,而不是關(guān)系
?a=b;
?b=a;
是依次執(zhí)行的,結(jié)果使得a和b都得到b原來(lái)的值
像交換兩杯水,需要第三個(gè)杯子
?int c;
?c=b;
?b=a;
?a=c;
1、復(fù)合賦值
5個(gè)算術(shù)運(yùn)算符,+ - * / %,可以和賦值運(yùn)算符”="結(jié)合起來(lái),形成復(fù)合賦值運(yùn)算符:“+=”、”-=”、“*=”、“/=”和“%=”
total +=5;
total = total + 5;
注意兩個(gè)運(yùn)算符中間不要有空格
2、遞增遞減運(yùn)算符
“++”和“--”是兩個(gè)很特殊的運(yùn)算符,它們是單目運(yùn)算符,這個(gè)算子還必須是變量。這兩個(gè)運(yùn)算符分別叫做遞增和遞減運(yùn)算符,他們的作用就是給這個(gè)變量+ 1或者-1。
?count++;
?count += 1;
?count=count+1;
前綴后綴
++和--可以放在變量的前面,叫做前綴形式,也可以放在變量的后面,叫做后綴形式。
a++的值是a加1以前的值,而++a的值是加了1以后的值,無(wú)論哪個(gè),a自己的值都加1了。
