版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第3章 最簡單的C程序設(shè)計(jì),3.1 順序程序設(shè)計(jì)舉例 3.2 數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算 3.3 C語句 3.4 數(shù)據(jù)的輸入輸出,3.1順序程序設(shè)計(jì)舉例,例3.1 有人用溫度計(jì)測量出用華氏法表示的溫度(如 F),今要求把它轉(zhuǎn)換為以攝氏法表示的溫度(如 C) 。,解題思路:找到二者間的轉(zhuǎn)換公式,f代表華氏溫度,c代表攝氏溫度,3.1順序程序設(shè)計(jì)舉例,#include int main ( ) float f,c; f=64.0; c=(5.0/9)*(f-32); printf(f=%fnc=%fn,f,c); return 0; ,定義f和c為單精度浮點(diǎn)型變量,指定f的值,計(jì)算c的值,輸出f和c的
2、值,3.1順序程序設(shè)計(jì)舉例,例3.2 計(jì)算存款利息。有1000元,想存一年。有三種方法可選: (1)活期,年利率為r1 (2)一年期定期,年利率為r2 (3)存兩次半年定期,年利率為r3 請(qǐng)分別計(jì)算出一年后按三種方法所得到的本息和。,3.1順序程序設(shè)計(jì)舉例,解題思路:確定計(jì)算本息和的公式。 從數(shù)學(xué)知識(shí)可知:若存款額為p0,則: 活期存款一年后本息和為: p1=p0(1+r1) 一年期定期存款,一年后本息和為: p2=p0(1+r2) 兩次半年定期存款,一年后本息和為:,3.1順序程序設(shè)計(jì)舉例,#include int main ( ) float p0=1000, r1=0.0036,r2=0
3、.0225, r3=0.0198, p1, p2, p3; p1 = p0 * (1 + r1); p2 = p0 * (1 + r2); p3 = p0 * (1 + r3/2) * (1 + r3/2); printf(”%fn%fn%fn”,p1, p2, p3); return 0; ,定義變量同時(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.6 怎樣確定常量的類型 3.2.7 運(yùn)算符和表達(dá)式,3.2.1 常量和變量,1.常量:在程序運(yùn)行過程中,其值不能被改變的量 整
4、型常量:如1000,12345,0,-345,整型常量的三種表示形式,十進(jìn)制整數(shù)。 如:123, -456。 八進(jìn)制整數(shù)。以0開頭的數(shù)是八進(jìn)制數(shù)。 如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83; -011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。 十六進(jìn)制整數(shù)。以0 x開頭的數(shù)是16進(jìn)制數(shù)。 如:0 x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù) 291。 -0 x12等于十進(jìn)制數(shù)10。,3.2.1 常量和變量,1.常量:在程序運(yùn)行過程中,其值不能被改變的量 實(shí)型常量 十進(jìn)制小數(shù)形式:如0.34 -56.79 0.0 指數(shù)形式:如12.34e3 (代表12.34103),實(shí)型常量的表示方法,兩種表
5、 示形式,小數(shù) 指數(shù),0.123 3e-3,1e3、1.8e-3、-123e-6、-.1e-3 e3、2.1e3.5、.e3、e,注意:字母e(或E)之前必須有數(shù)字,且e (或E)后面的指數(shù)必須為整數(shù)。,字符常量,1.常量:在程序運(yùn)行過程中,其值不能被改變的量 (1)用單撇號(hào)括起來的一個(gè)字符,不包括單撇號(hào)。 a A ? 注意:字符常量在計(jì)算機(jī)存儲(chǔ)單元中,并不是存儲(chǔ)字符本身,而是以其代碼存儲(chǔ)的。 (2)轉(zhuǎn)義字符:以“”開頭的特殊字符。 n 換行 t 水平制表 r 回車 反斜杠 ddd ddd 1到3位八進(jìn)制數(shù)字(ASCII碼值) xhh hh表示1到2位十六進(jìn)制數(shù)字(ASCII碼值) 見P40
6、表3.1,P377 附錄B。,3.2.1 常量和變量,1.常量:在程序運(yùn)行過程中,其值不能被改變的量 字符串常量: 用雙撇號(hào)把若干個(gè)字符括起來,字符串常量是雙撇號(hào)中的全部字符(但不包括雙撇號(hào)) 如”boy” 符號(hào)常量:用#define指令,指定用一個(gè)符號(hào)名稱代表一個(gè)常量。 #define PI 3.1416,例 常量與符號(hào)常量的使用 #include #define PRICE 30 int main ( ) int num, total; num=10; total=num * PRICE; printf(total=%dn,total); return 0; ,3.2.1 常量和變量,2.
7、 變量:在程序運(yùn)行期間,變量的值是可以改變的 變量必須先定義,后使用 定義變量時(shí)指定該變量的名字和類型 變量名和變量值是兩個(gè)不同的概念 變量名實(shí)際上是以一個(gè)名字代表的一個(gè)存儲(chǔ)地址 從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù),3.2.1 常量和變量,3.常變量:const int a=3; 4.標(biāo)識(shí)符:一個(gè)對(duì)象的名字(變量,符號(hào)常量,函數(shù)等) 語言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符必須為字母或下劃線 合法的標(biāo)識(shí)符:如sum,average, _total, Class, day, BASIC, li_ling 不合法的標(biāo)識(shí)符:M.D.Jo
8、hn,¥123,33,3D64,ab,注意: 1.區(qū)別大小寫。 如sum與SUM為不同的變量名,但一般變量名用小寫字母,符號(hào)常量采用大寫字母。 2.標(biāo)識(shí)符必須先定義后使用。 分配單元、 確定類型、語法檢查 3.在一個(gè)程序單元中(分程序或函數(shù)中)不能重復(fù)定義。 4.關(guān)鍵字(P378 附錄C)不能作為標(biāo)識(shí)符。,3.2.2 數(shù)據(jù)類型,所謂類型,就是對(duì)數(shù)據(jù)分配存儲(chǔ)單元的安排,包括存儲(chǔ)單元的長度(占多少字節(jié))以及數(shù)據(jù)的存儲(chǔ)形式 不同的類型分配不同的長度和存儲(chǔ)形式,3.2.2 數(shù)據(jù)類型,C語言允許使用的數(shù)據(jù)類型: 基本類型 整型類型 基本整型 短整型 長整型 雙長整型 字符型 布爾型,浮點(diǎn)類型 單精度浮點(diǎn)
9、型 雙精度浮點(diǎn)型 復(fù)數(shù)浮點(diǎn)型,3.2.2 數(shù)據(jù)類型,C語言允許使用的數(shù)據(jù)類型: 基本類型 枚舉類型 空類型 派生類型 指針類型 數(shù)組類型 結(jié)構(gòu)體類型 共用體類型 函數(shù)類型,算術(shù)類型(存放的數(shù)值),純量類型(存放的數(shù)字),3.2.3 整型數(shù)據(jù),1. 整型數(shù)據(jù)的分類 最基本的整型類型 基本整型(int型):占2個(gè)或4個(gè)字節(jié) 在存儲(chǔ)單元中,用整數(shù)的補(bǔ)碼形式存放。 短整型(short int):VC+6.0中占2個(gè)字節(jié) 長整型(long int):VC+6.0中占4個(gè)字節(jié) 雙長整型(long long int):C99新增的,整數(shù)類型的有關(guān)數(shù)據(jù):,類型 類型說明符 長度 數(shù)的范圍 基本型 int 2字
10、節(jié) -3276832767 短整型 short 2字節(jié) -215215-1 長整型 long 4字節(jié) -231231-1 無符號(hào)整型 unsigned 2字節(jié) 065535 無符號(hào)短整型 unsigned short 2字節(jié) 065535 無符號(hào)長整型 unsigned long 4字節(jié) 0(232-1) 注:對(duì)應(yīng)不同的機(jī)器和編譯系統(tǒng),各類數(shù)據(jù)所占內(nèi)存字節(jié)數(shù)不盡相同,因此數(shù)值范圍也不同。,例 整型變量的定義與使用,#include int main ( ) int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(a+u=%d,
11、b+u=%dn,c,d); return 0;,運(yùn)行結(jié)果: a+u=22 b+u=-14,整型變量的定義 C 語言必須給在程序中用到的所有的變量指定其類型 變量定義必須放在函數(shù)的開頭部分,例 整型數(shù)據(jù)的溢出,#include int main() int a,b; a=32767; b=a+1; printf(%d,%dn,a,b); return 0; /假設(shè)int占兩個(gè)字節(jié),運(yùn)行結(jié)果: 32767,-32768,運(yùn)行結(jié)果分析: 有符號(hào)整型變量的范圍為-3276832767,運(yùn)算結(jié)果超出此范圍,發(fā)生“溢出”。 發(fā)生“溢出”時(shí),編寫的程序如果沒有對(duì)此情況進(jìn)行處理,則程序?qū)⒏鶕?jù)錯(cuò)誤的結(jié)果繼續(xù)運(yùn)行
12、。,3.2.4 字符型數(shù)據(jù),字符是按其代碼(整數(shù))形式存儲(chǔ)的 C99把字符型數(shù)據(jù)作為整數(shù)類型的一種 字符型數(shù)據(jù)在使用上有自己的特點(diǎn),3.2.4 字符型數(shù)據(jù),1.字符與字符代碼(共127個(gè)字符) 大多數(shù)系統(tǒng)采用ASCII字符集 字母:A Z,a z 數(shù)字:09 專門符號(hào):29個(gè):! ” # 系統(tǒng)把?的ASCII代碼63賦給變量c printf(”%d %cn”,c,c); 輸出結(jié)果是: 63 ?,例 向字符變量賦以整數(shù),#include int main() char c1,c2; c1=97; c2=98; printf(%c %cn,c1,c2); printf(%d %dn,c1,c2);
13、 return 0; ,運(yùn)行結(jié)果: 97 98,3.2.5 浮點(diǎn)型數(shù)據(jù),浮點(diǎn)型數(shù)據(jù)是用來表示具有小數(shù)點(diǎn)的實(shí)數(shù) float型(單精度浮點(diǎn)型) 編譯系統(tǒng)為float型變量分配4個(gè)字節(jié) 數(shù)值以規(guī)范化的二進(jìn)制數(shù)指數(shù)形式存放 參見主教材圖3.11 double型(雙精度浮點(diǎn)型) 編譯系統(tǒng)為double型變量分配8個(gè)字節(jié) 15位有效數(shù)字 long double(長雙精度)型,3.2.6 怎樣確定常量的類型,字符常量:由單撇號(hào)括起來的單個(gè)字符或轉(zhuǎn)義字符。 整型常量:不帶小數(shù)點(diǎn)的數(shù)值,數(shù)字跟l或L表示長整型;跟u或U表示無符號(hào)整型。 系統(tǒng)根據(jù)數(shù)值的大小確定int型還是long型等 浮點(diǎn)型常量:凡以小數(shù)形式或指
14、數(shù)形式出現(xiàn)的實(shí)數(shù) C編譯系統(tǒng)把浮點(diǎn)型常量都按雙精度處理(數(shù)字跟f或F表示單精度浮點(diǎn)型),類型與變量的區(qū)分: 每個(gè)變量都屬于一個(gè)確定的數(shù)據(jù)類型 類型是變量的一個(gè)重要屬性,變量是占用存儲(chǔ)單元,是具體存在的實(shí)體,在其占用的存儲(chǔ)單元中可以存放數(shù)據(jù) 類型是變量的共性,是抽象的,不占用存儲(chǔ)單元,不能用來存放數(shù)據(jù),3.2.7 運(yùn)算符和表達(dá)式,1.基本的算術(shù)運(yùn)算符: + :正號(hào)運(yùn)算符(單目運(yùn)算符) - :負(fù)號(hào)運(yùn)算符(單目運(yùn)算符) * :乘法運(yùn)算符 / :除法運(yùn)算符 % :求余運(yùn)算符 + :加法運(yùn)算符 - :減法運(yùn)算符,3.2.7 運(yùn)算符和表達(dá)式,說明 兩個(gè)整數(shù)相除的結(jié)果為整數(shù) 如5/3的結(jié)果值為,舍去小數(shù)部分
15、 如果除數(shù)或被除數(shù)中有一個(gè)為負(fù)值,舍入方向不固定。例如,-5/3,有的系統(tǒng)中得到的結(jié)果為-1,在有的系統(tǒng)中則得到結(jié)果為-2 VC+采取“向零取整”的方法 如5/3=1,-5/3=-1,取整后向零靠攏 % 運(yùn)算符要求參加運(yùn)算的運(yùn)算對(duì)象(即操作數(shù))為整數(shù),結(jié)果也是整數(shù)。如8%3,結(jié)果為2,請(qǐng)回答:例題3.1中攝氏溫度的計(jì)算公式: C=5.0/9*(f-32),3.2.7 運(yùn)算符和表達(dá)式,2. 自增(+)、自減(-)運(yùn)算符: 作用是使變量的值加或減 +i,-i:在使用i之前,先使i的值加(減)1 i+,i-:在使用i之后,使i的值加(減)1 例如(i=3) j=+i 如果運(yùn)算之前i的值為3,則運(yùn)算后
16、i的值為4,j的值也為4。 j=i+ 如果運(yùn)算之前i的值為3,則運(yùn)算后i的值為4,j的值卻為3,3.2.7 運(yùn)算符和表達(dá)式,2. 自增、自減運(yùn)算符: 注意: 1.自增、自減運(yùn)算不能用于常量和表達(dá)式 如:3+,(a+b)+。 2.為避免二義性,可以加一些“不必要”的括號(hào)。,3.2.7 運(yùn)算符和表達(dá)式,3. 算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性: C 算術(shù)表達(dá)式: 用算術(shù)運(yùn)算符和圓括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子。 運(yùn)算對(duì)象: 常量、變量、函數(shù) 等。 優(yōu)先級(jí): 對(duì)于算術(shù)運(yùn)算, 必須掌握其優(yōu)先級(jí)具體見P378(附錄D) 結(jié)合性: 一個(gè)運(yùn)算對(duì)象兩邊有兩個(gè)優(yōu)先級(jí)相同的運(yùn)算符時(shí),
17、該運(yùn)算對(duì)象先和左邊的運(yùn)算符結(jié)合稱左結(jié)合性,如先和右邊的運(yùn)算符結(jié)合稱右結(jié)合性。,3.2.7 運(yùn)算符和表達(dá)式,4.不同類型數(shù)據(jù)間的混合運(yùn)算: +、-、*、/ 運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為float或double型,結(jié)果是double型。系統(tǒng)將float型數(shù)據(jù)都先轉(zhuǎn)換為double型,然后進(jìn)行運(yùn)算 (2) 如果int型與float或double型數(shù)據(jù)進(jìn)行運(yùn)算,先把int型和float型數(shù)據(jù)轉(zhuǎn)換為double型,然后進(jìn)行運(yùn)算,結(jié)果是double型 (3)字符型數(shù)據(jù)與整型數(shù)據(jù)進(jìn)行運(yùn)算,就是把字符的ASCII代碼與整型數(shù)據(jù)進(jìn)行運(yùn)算 以上的轉(zhuǎn)換是編譯系統(tǒng)自動(dòng)完成的。,各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算,混合運(yùn)算:字符型
18、、整型和浮點(diǎn)型。在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算(這種類型轉(zhuǎn)換由系統(tǒng)自動(dòng)進(jìn)行的)。,3.2.7 運(yùn)算符和表達(dá)式,例3.3 給定一個(gè)大寫字母,要求用小寫字母輸出,解題思路: 關(guān)鍵是找到大、小寫字母間的內(nèi)在聯(lián)系 同一個(gè)字母,用小寫表示的字符的ASCII代碼比用大寫表示的字符的ASCII代碼大32,3.2.7 運(yùn)算符和表達(dá)式,#include int main ( ) char c1,c2; c1=A; c2=c1+32; printf(%cn,c2); printf(”%dn”,c2); return 0; ,3.2.7 運(yùn)算符和表達(dá)式,#include int mai
19、n ( ) char c1,c2; c1=A; c2=c1+32; printf(%cn,c2); printf(”%dn”,c2); return 0; ,將字符A的ASCII代碼65放到c1中,將65+32的結(jié)果放到c2中,用字符形式輸出,用十進(jìn)制形式輸出,3.2.7 運(yùn)算符和表達(dá)式,5. 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的一般形式為 (類型名)(表達(dá)式) (double)a (將轉(zhuǎn)換成double類型) (int) (x+y) (將x+y的值轉(zhuǎn)換成int型) (float)(5%3)(將5%3的值轉(zhuǎn)換成float型) 有兩種類型轉(zhuǎn)換 系統(tǒng)自動(dòng)進(jìn)行的類型轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換 注意:在強(qiáng)
20、制類型轉(zhuǎn)換時(shí),得到一個(gè)所需類型的中間數(shù)據(jù),而原來變量的類型未發(fā)生變化,3.2.7 運(yùn)算符和表達(dá)式,6.運(yùn)算符 (1) 算術(shù)運(yùn)算符 (+ - * / % + -) (2) 關(guān)系運(yùn)算符 ( ?。?(3) 邏輯運(yùn)算符 (! | ) (4) 位運(yùn)算符 ( | ) (5) 賦值運(yùn)算符 (及其擴(kuò)展賦值運(yùn)算符) (6) 條件運(yùn)算符 (?:),3.2.7 運(yùn)算符和表達(dá)式,6.運(yùn)算符 (7) 逗號(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) 其他 (如
21、函數(shù)調(diào)用運(yùn)算符(),3.3 C語句,3.3.1 C語句的作用和分類 3.3.2 最基本的語句-賦值語句,3.3.1 C語句的作用和分類,語句分為以下5類: (1) 控制語句: if、switch、for、while、dowhile、continue、break、return、goto等 (2) 函數(shù)調(diào)用語句:由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成。如printf()函數(shù)調(diào)用。,3.3.1 C語句的作用和分類,語句分為以下5類: (3) 表達(dá)式語句:由一個(gè)表達(dá)式加一個(gè)分號(hào)構(gòu)成,如賦值語句。 舉例:a=3是賦值表達(dá)式,a=3;是賦值語句。 (4) 空語句:只有一個(gè)分號(hào)的語句。 (5) 復(fù)合語句:用把一些語句
22、和聲明括起來成為復(fù)合語句。,3.3.2 最基本的語句-賦值語句,在C程序中,最常用的語句是: 賦值語句 輸入輸出語句 其中最基本的是賦值語句,3.3.2 最基本的語句-賦值語句,例3.4 給出三角形的三邊長,求三角形面積。,解題思路:假設(shè)給定的三個(gè)邊符合構(gòu)成三角形的條件 關(guān)鍵是找到求三角形面積的公式 公式為: 其中s=(a+b+c)/2,#include #include int main ( ) double a,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%
23、ftb=%ftc=%fn,a,b,c); printf(area=%fn,area); return 0; ,對(duì)邊長a、b、c賦值,計(jì)算s,計(jì)算area,#include #include int main ( ) double a,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%ftb=%ft%fn,a,b,c); printf(area=%fn,area); return 0; ,數(shù)學(xué)函數(shù),計(jì)算平方根,調(diào)用數(shù)學(xué)函數(shù)加此行,#include #include i
24、nt main ( ) double a,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%ftb=%ft%fn,a,b,c); printf(area=%fn,area); return 0; ,轉(zhuǎn)義字符,使輸出位置跳到下一個(gè)tab位置,歸納總結(jié): 1.賦值運(yùn)算符 “”是賦值運(yùn)算符 作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量 也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量,歸納總結(jié): 2.復(fù)合的賦值運(yùn)算符 在賦值符“”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符 算術(shù)運(yùn)算的復(fù)合賦值運(yùn)算符有+=
25、, -=,*=,/=,%= = 等價(jià)于 x *= y+8 等價(jià)于 x=x*(y+8) x%=3 等價(jià)于 x=x%3,歸納總結(jié): 3.賦值表達(dá)式 一般形式為: 變量 賦值運(yùn)算符 表達(dá)式 對(duì)賦值表達(dá)式求解的過程: 求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值 賦給賦值運(yùn)算符左側(cè)的變量,歸納總結(jié): 3.賦值表達(dá)式 賦值表達(dá)式“a=3*5”的值為15,對(duì)表達(dá)式求解后,變量a的值和表達(dá)式的值都是15 “a=b”和“b=a”含義不同,歸納總結(jié): 3.賦值表達(dá)式 左值的含義: 可以出現(xiàn)在賦值運(yùn)算符的左側(cè),值是可以改變的。變量可以作為左值,算術(shù)表達(dá)式(如a+b)和常量不能作為左值。 左值可以作為右值。 a=(a=b)=3
26、*4,錯(cuò)誤,歸納總結(jié): 3.賦值表達(dá)式 賦值運(yùn)算符按照“自右而左”的結(jié)合順序。 “a=(b=5)”和“a=b=5”等價(jià) 賦值表達(dá)式可以包含復(fù)合的賦值運(yùn)算符。 a+=a-=a*a;(a初值為12),歸納總結(jié): 3.賦值表達(dá)式 賦值表達(dá)式可以以表達(dá)式的形式出現(xiàn)在其他語句中。 printf(“%d”,a=b); 完成了賦值和輸出的雙重功能,歸納總結(jié): 4.賦值過程中的類型轉(zhuǎn)換 兩側(cè)類型一致時(shí),直接賦值 兩側(cè)類型不一致,但都是算術(shù)類型時(shí),自動(dòng)將右側(cè)的類型轉(zhuǎn)換為左側(cè)類型后賦值 將浮點(diǎn)型數(shù)據(jù)(單、雙精度)賦給整型變量時(shí),先對(duì)浮點(diǎn)取整,舍棄小數(shù)部分,然后賦予整型變量。,將整型數(shù)據(jù)賦給單雙精度變量時(shí),數(shù)值不變
27、,但以浮點(diǎn)形式存儲(chǔ)到變量中。 將一個(gè)double型數(shù)據(jù)賦給float變量時(shí),先將雙精度數(shù)轉(zhuǎn)換為單精度,只取6-7位有效數(shù)字,存儲(chǔ)到float變量的4個(gè)字節(jié)中。 將一個(gè)float型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,在內(nèi)存中以8個(gè)字節(jié)存儲(chǔ),有效位數(shù)擴(kuò)展到15位。,字符型賦給整型變量時(shí),將字符的ASCII代碼賦給整型變量。 將一個(gè)占字節(jié)多的整型數(shù)據(jù)賦給一個(gè)占字節(jié)少的整型變量或字符變量時(shí),只將其低字節(jié)原封不動(dòng)地送到被賦值的變量。 例如:int i=289; char c=a; c=i; 定義變量時(shí)要防止數(shù)據(jù)溢出,歸納總結(jié): 5.賦值表達(dá)式和賦值語句 賦值表達(dá)式的末尾沒有分號(hào),而賦值語句有分號(hào) 一個(gè)
28、表達(dá)式可以包含賦值表達(dá)式,但決不能包含賦值語句 如:int a ,b ,c,d; a=1;b=2;c=3; a = c % b +( d = b;) - c;/語句1 a = c % b +( d = b) - c ;/語句2,錯(cuò)誤,正確,歸納總結(jié): 6.變量賦初值: 可以用賦值語句對(duì)變量賦值,也可以在定義變量時(shí)對(duì)變量賦以初值,也可以對(duì)定義的變量的一部分賦以初值。如: int a=3,b=3,c; int a=3; 相當(dāng)于 int a; a=3; int a=b=c=3; 錯(cuò),3.4 數(shù)據(jù)的輸入輸出,3.4.1 輸入輸出舉例 3.4.2 有關(guān)數(shù)據(jù)輸入輸出的概念 3.4.3 用printf函數(shù)輸
29、出數(shù)據(jù) 3.4.4 用scanf函數(shù)輸入數(shù)據(jù) 3.4.5 字符數(shù)據(jù)的輸入輸出,3.4.1 輸入輸出舉例,例3.5 求 方程的根。a、b、c由鍵盤輸入 設(shè) ,3.4.1 輸入輸出舉例,解題思路:首先要知道求方程式的根的方法。 由數(shù)學(xué)知識(shí)已知:如果 0,則一元二次方程有兩個(gè)實(shí)根:,若記,#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf, ,程序中調(diào)用數(shù)學(xué)函數(shù)sqrt,輸入a,b,c的值,#include #include int main ( ) double a,b,c,disc,x1,x2,p
30、,q; scanf(%lf%lf%lf, ,輸入的是雙精度型實(shí)數(shù),#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf, ,要求輸入3個(gè)實(shí)數(shù),自動(dòng)轉(zhuǎn)成實(shí)數(shù)后賦給a,b,c,#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf, ,輸出數(shù)據(jù)占7列,其中小數(shù)占2列,3.4.2 有關(guān)數(shù)據(jù)輸入輸出的概念,幾乎每一個(gè)C程序都包含輸入輸出 輸入輸出是程序中最基本的操作之一,3.4.2 有關(guān)數(shù)據(jù)輸入輸出的概念,語言
31、本身不提供輸入輸出語句 輸入和輸出操作是由C標(biāo)準(zhǔn)函數(shù)庫中的函數(shù)來實(shí)現(xiàn)的 printf和scanf不是語言的關(guān)鍵字,而只是庫函數(shù)的名字 putchar、getchar、puts、gets,3.4.2 有關(guān)數(shù)據(jù)輸入輸出的概念,在使用輸入輸出函數(shù)時(shí),要在程序文件的開頭用預(yù)編譯指令 #include (按標(biāo)準(zhǔn)方式查找) 或 #include stdio.h(用戶先從當(dāng)前目錄中尋找要包含的文件,如果找不到,再按標(biāo)準(zhǔn)方式查找。),3.4.3 用printf函數(shù)輸出數(shù)據(jù),1.printf函數(shù)的一般格式 printf(格式控制,輸出表列) 格式控制是用雙撇號(hào)括起來的一個(gè)字符串 例如: printf(”i=%d
32、,c=%cn”,i,c);,格式聲明,格式聲明由%和格式字符組成。,3.4.3 用printf函數(shù)輸出數(shù)據(jù),1.printf函數(shù)的一般格式 printf(格式控制,輸出表列) 例如: printf(”i=%d,c=%cn”,i,c);,普通字符,普通字符即需要在輸出時(shí)原樣輸出的字符,3.4.3 用printf函數(shù)輸出數(shù)據(jù),1.printf函數(shù)的一般格式 printf(格式控制,輸出表列) 輸出表列:在程序中需要輸出的一些數(shù)據(jù) 例如: printf(”i=%d,c=%cn”,i,c);,可以是常量、變量或表達(dá)式,3.4.3 用printf函數(shù)輸出數(shù)據(jù),2. 常用格式字符 格式符。用來輸出一個(gè)有符
33、號(hào)的十進(jìn)制整數(shù) 可以在格式聲明中指定輸出數(shù)據(jù)的域?qū)?printf(”%5d%5dn”,12,-345); 輸出數(shù)據(jù)顯示在五列區(qū)域的右側(cè)。 %d輸出int型數(shù)據(jù) %ld輸出long型數(shù)據(jù),3.4.3 用printf函數(shù)輸出數(shù)據(jù),2. 常用格式字符 格式符。用來輸出一個(gè)字符 char ch=a; printf(”%c”,ch); 或 printf(”%5c”,ch); /指定域?qū)?輸出字符: a,3.4.3 用printf函數(shù)輸出數(shù)據(jù),2. 常用格式字符 格式符。 一個(gè)整數(shù)如果在0-127范圍中,可以用%c格式輸出。如: short a=121; printf(“%c”,a);,如果整數(shù)比較大,則
34、把它的最后一個(gè)字節(jié)的信息以字符形式輸出。如: int a=377; printf(“%c”,a);,3.4.3 用printf函數(shù)輸出數(shù)據(jù),2. 常用格式字符 格式符。用來輸出一個(gè)字符串 printf(”%s”,”CHINA”);,輸出字符串:CHINA,3.4.3 用printf函數(shù)輸出數(shù)據(jù),2. 常用格式字符 f格式符。用來輸出實(shí)數(shù)(包括單、雙精度、長雙精度),以小數(shù)形式輸出。 不指定數(shù)據(jù)寬度和小數(shù)位數(shù),用%f。 系統(tǒng)處理的方法一般是:實(shí)數(shù)中的整數(shù)部分全部輸出,小數(shù)部分輸出6位。 例3.6 double a=1.0; printf(”%fn”,a/3);,3.4.3 用printf函數(shù)輸出
35、數(shù)據(jù),2. 常用格式字符 f格式符。 指定數(shù)據(jù)寬度和小數(shù)位數(shù)。用%m.nf。 printf(%20.15fn,1/3); printf(%.0fn”,10000/3.0);,3.4.3 用printf函數(shù)輸出數(shù)據(jù),2. 常用格式字符 f格式符。用來輸出實(shí)數(shù),以小數(shù)形式輸出 輸出的數(shù)據(jù)向左對(duì)齊,用%-m.nf,3.4.3 用printf函數(shù)輸出數(shù)據(jù),2. 常用格式字符 f格式符。用來輸出實(shí)數(shù),以小數(shù)形式輸出 float型數(shù)據(jù)只能保證6位有效數(shù)字 double型數(shù)據(jù)能保證15位有效數(shù)字 計(jì)算機(jī)輸出的數(shù)字不都是絕對(duì)精確有效的,3.4.3 用printf函數(shù)輸出數(shù)據(jù),2. 常用格式字符 e格式符。指定
36、以指數(shù)形式輸出實(shí)數(shù) %e,VC+給出小數(shù)位數(shù)為位,指數(shù)部分占5列,小數(shù)點(diǎn)前必須有而且只有1位非零數(shù)字。 例: printf(”%e”,123.456); 輸出:1.234560 e+002,3.4.3 用printf函數(shù)輸出數(shù)據(jù),2. 常用格式字符 e格式符。指定以指數(shù)形式輸出實(shí)數(shù) %m.ne printf(”%13.2e”,123.456); 輸出: 1.23e+002 (前面有4個(gè)空格),3.4.3 用printf函數(shù)輸出數(shù)據(jù),3. 另外格式字符 i格式符。作用與d格式符相同,按十進(jìn)制整型數(shù)據(jù)的實(shí)際長度輸出。 o格式符。以八進(jìn)制整數(shù)形式輸出。輸出的數(shù)值不帶符號(hào),即符號(hào)位也作為八進(jìn)制數(shù)的一部
37、分輸出。 如:int a=-1; printf(“%dt%on”,a,a);,3.4.3 用printf函數(shù)輸出數(shù)據(jù),3. 另外格式字符 x格式符。以十六進(jìn)制無符號(hào)形式輸出整數(shù)。 u格式符。以十進(jìn)制無符號(hào)形式輸出整數(shù)。 g格式符。用來輸出浮點(diǎn)數(shù),系統(tǒng)自動(dòng)選f格式或e格式輸出,選擇其中長度較短的格式,不輸出無意義的0。 例:double a=12345678954321; printf(“%ft%et%gn”,a,a,a);,printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面對(duì)組成格式說明的各項(xiàng)加以說明: %:表示格式說明的起始符號(hào),不可缺少。 -:有-表示左對(duì)齊輸出
38、,如省略表示右對(duì)齊輸出。 0:有0表示指定空位填0,如省略表示指定空位不填。 m.n:m指域?qū)?,即?duì)應(yīng)的輸出項(xiàng)在輸出設(shè)備上所占的字符數(shù)。n指精度。用于說明輸出的實(shí)型數(shù)的小數(shù)位數(shù)。未指定n時(shí),隱含的精度為n=6位。 l或h:l對(duì)整型指long型,對(duì)實(shí)型指double型。h用于將整型的格式字符修正為short型。,說明,除了X,E,G外,其他各式字符必須用小寫。 可以在printf函數(shù)中的“格式控制”字符串中包含轉(zhuǎn)義字符。 一個(gè)格式說明必須以“%”開頭,以12個(gè)格式字符之一為結(jié)束,中間可以插入附加格式字符。 如果需要輸出%,則應(yīng)該在格式控制字符串中用連續(xù)兩個(gè)%表示。 如:printf(“%f%n”
39、,1.0/3);,3.4.4 用scanf函數(shù)輸入數(shù)據(jù),1. scanf 函數(shù)的一般形式: scanf(格式控制,地址表列),含義同printf函數(shù),3.4.4 用scanf函數(shù)輸入數(shù)據(jù),1. scanf 函數(shù)的一般形式: scanf(格式控制,地址表列),可以是變量的地址,或字符串的首地址,3.4.4 用scanf函數(shù)輸入數(shù)據(jù),2. scanf函數(shù)中的格式聲明 與printf函數(shù)中的格式聲明相似 以開始,以一個(gè)格式字符結(jié)束,中間可以插入附加的字符 如:scanf(a=%f,b=%f,c=%f,3.4.4 用scanf函數(shù)輸入數(shù)據(jù),3.使用scanf函數(shù)時(shí)應(yīng)注意的問題 (1)scanf函數(shù)中的
40、“格式控制”后面應(yīng)當(dāng)是變量地址,而不是變量名。 如:scanf(”%f%f%f”,a,b,c); scanf(”%f%f%f”,錯(cuò),對(duì),3.4.4 用scanf函數(shù)輸入數(shù)據(jù),3.使用scanf函數(shù)時(shí)應(yīng)注意的問題 (2)如果在“格式控制字符串”中除了格式聲明以外還有其他字符,則在輸入數(shù)據(jù)時(shí)在對(duì)應(yīng)的位置上應(yīng)輸入與這些字符相同的字符。 如:scanf(a=%f,b=%f,c=%f, 1 3 2 a=1,b=3,c=2 a=1 b=3 c=2,錯(cuò),對(duì),錯(cuò),3.4.4 用scanf函數(shù)輸入數(shù)據(jù),3.使用scanf函數(shù)時(shí)應(yīng)注意的問題 (3)在用“%c”格式聲明輸入字符時(shí),空格字符和“轉(zhuǎn)義字符”中的字符都作
41、為有效字符輸入。 如:scanf(”%c%c%c”, abc a b c 在輸入數(shù)值時(shí),在兩個(gè)數(shù)值之間需要插入空格(或其他分隔符)以區(qū)分;在輸入字符時(shí),在兩個(gè)字符之間不要插入空格或其他分隔符。,對(duì),錯(cuò),3.4.4 用scanf函數(shù)輸入數(shù)據(jù),3.使用scanf函數(shù)時(shí)應(yīng)注意的問題 (4)在輸入數(shù)值數(shù)據(jù)時(shí),如輸入空格、回車、Tab鍵或遇非法字符(不屬于數(shù)值的字符),認(rèn)為該數(shù)據(jù)結(jié)束。 如:scanf(”%d%c%f”, 若輸入 1234a123o.26,3.4.4 用scanf函數(shù)輸入數(shù)據(jù),3.使用scanf函數(shù)時(shí)應(yīng)注意的問題 (4)在輸入數(shù)值數(shù)據(jù)時(shí),如輸入空格、回車、Tab鍵或遇非法字符(不屬于數(shù)值
42、的字符),認(rèn)為該數(shù)據(jù)結(jié)束 如:scanf(”%d%c%f”, 若輸入 1234a123o.26,3.4.4 用scanf函數(shù)輸入數(shù)據(jù),3.使用scanf函數(shù)時(shí)應(yīng)注意的問題 (4)在輸入數(shù)值數(shù)據(jù)時(shí),如輸入空格、回車、Tab鍵或遇非法字符(不屬于數(shù)值的字符),認(rèn)為該數(shù)據(jù)結(jié)束。 如:scanf(”%d%c%f”, 若輸入 1234a123o.26,3.4.5 字符數(shù)據(jù)的輸入輸出,1.用putchar函數(shù)輸出一個(gè)字符 從計(jì)算機(jī)向顯示器輸出一個(gè)字符 putchar函數(shù)的一般形式為: putchar(c),3.4.5 字符數(shù)據(jù)的輸入輸出,例3.8 先后輸出BOY三個(gè)字符。 解題思路: 定義3個(gè)字符變量,分別賦以初值B、O、Y 用putchar函數(shù)輸出這3個(gè)字符變量的值,3.4.5 字符數(shù)據(jù)的輸入輸出,#include int main ( ) char a=B,b=O,c=Y; putchar(a); putchar(b); putchar(c); p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地理信息處理員崗前基礎(chǔ)晉升考核試卷含答案
- 海洋油氣操作工操作評(píng)估考核試卷含答案
- 列車員安全技能知識(shí)考核試卷含答案
- 英語作文a party不少于六句話
- 學(xué)校培訓(xùn)班課程請(qǐng)假條
- 2025年垃圾收轉(zhuǎn)裝備項(xiàng)目合作計(jì)劃書
- 2025年GSM移動(dòng)通信手機(jī)合作協(xié)議書
- 2026年算力基礎(chǔ)設(shè)施項(xiàng)目可行性研究報(bào)告
- 2026年智能車載藍(lán)牙FM發(fā)射器項(xiàng)目評(píng)估報(bào)告
- 2025年江蘇省鹽城市中考道法真題卷含答案解析
- 低壓用戶電氣裝置規(guī)程 DGJ08-100-2003
- 中國地級(jí)市及各省份-可編輯標(biāo)色地圖
- 實(shí)驗(yàn)室生物安全培訓(xùn)-課件
- 第章交流穩(wěn)態(tài)電路
- 馬口鐵印鐵制罐工藝流程詳解課件
- 預(yù)應(yīng)力管樁-試樁施工方案
- GB/T 16938-2008緊固件螺栓、螺釘、螺柱和螺母通用技術(shù)條件
- FZ/T 82006-2018機(jī)織配飾品
- 《食品包裝學(xué)(第三版)》教學(xué)PPT課件整套電子講義
- 全尺寸測量報(bào)告FAI
- 新教材教科版五年級(jí)上冊(cè)科學(xué)全冊(cè)課時(shí)練(課后作業(yè)設(shè)計(jì))
評(píng)論
0/150
提交評(píng)論