【學(xué)習(xí)課件】第3章簡(jiǎn)單的C程序設(shè)計(jì)_第1頁(yè)
【學(xué)習(xí)課件】第3章簡(jiǎn)單的C程序設(shè)計(jì)_第2頁(yè)
【學(xué)習(xí)課件】第3章簡(jiǎn)單的C程序設(shè)計(jì)_第3頁(yè)
【學(xué)習(xí)課件】第3章簡(jiǎn)單的C程序設(shè)計(jì)_第4頁(yè)
【學(xué)習(xí)課件】第3章簡(jiǎn)單的C程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩73頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、最簡(jiǎn)單的C程序設(shè)計(jì)順序程序設(shè)計(jì)第3章3.5 字符數(shù)據(jù)的輸入與輸出3.6 簡(jiǎn)單的格式輸入與輸出3.7 復(fù)雜的輸入輸出格式控制3.8 順序結(jié)構(gòu)程序設(shè)計(jì)舉例本章小結(jié)3.1 程序的三種基本結(jié)構(gòu) 3.2 C語(yǔ)句概述3.3 賦值表達(dá)式和賦值語(yǔ)句3.4 數(shù)據(jù)輸入輸出的概念及在C語(yǔ)言中的實(shí)現(xiàn)精選課件傳統(tǒng)流程圖教學(xué)進(jìn)程AB3.1程序的三種基本結(jié)構(gòu)指令 一個(gè)程序包含一系列的指令,每個(gè)指令使計(jì)算機(jī)完成一種操作。而程序中的指令不是任意書(shū)寫(xiě)的。1966年,Bohra和Jacopini提出了3種基本結(jié)構(gòu)。 順序結(jié)構(gòu)各操作是按先后順序執(zhí)行的。是最簡(jiǎn)單的一種基本結(jié)構(gòu)。其中A和B兩個(gè)框是順序執(zhí)行的。即在完成A框所指定的操作后,

2、必然接著執(zhí)行B框所指定的操作。精選課件傳統(tǒng)流程圖教學(xué)進(jìn)程3.1程序的三種基本結(jié)構(gòu) 選擇結(jié)構(gòu)又稱(chēng)分支結(jié)構(gòu)。根據(jù)是否滿(mǎn)足給定條件而從兩組操作中選擇執(zhí)行一種操作。虛線(xiàn)框內(nèi)是一個(gè)選擇結(jié)構(gòu)。PAB成立不成立無(wú)論P(yáng)條件是否成立,只能執(zhí)行A操作或B操作中的一個(gè);無(wú)論執(zhí)行完哪一個(gè)分支后,就結(jié)束了。兩個(gè)操作可以有一個(gè)是空操作,即不執(zhí)行任何操作,形如下圖:PA成立不成立PB成立不成立入口出口精選課件傳統(tǒng)流程圖教學(xué)進(jìn)程3.1程序的三種基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu)又稱(chēng)重復(fù)結(jié)構(gòu),即在一定條件下,反復(fù)執(zhí)行某一部分的操作。有兩種類(lèi)型:執(zhí)行過(guò)程: 當(dāng)給定條件P成立時(shí),執(zhí)行S操作,然后再判斷P條件是否成立,如果仍成立,再執(zhí)行S操作,然后

3、再判斷,如此反復(fù),直到某一次P條件不成立為止,此時(shí)不再執(zhí)行S,結(jié)束循環(huán)。特點(diǎn): 先判斷,后執(zhí)行,S有可能一次也不執(zhí)行。PSFT當(dāng)型循環(huán)入口出口精選課件傳統(tǒng)流程圖教學(xué)進(jìn)程3.1程序的三種基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu)執(zhí)行過(guò)程: 執(zhí)行S操作,然后判斷條件P是否成立,如果成立,再執(zhí)行S操作,然后再判斷,.,如此反復(fù),直到某一次P條件不成立不再執(zhí)行S,結(jié)束循環(huán)。特點(diǎn): 先執(zhí)行,后判斷,S最少要執(zhí)行一次。SPFT直到型循環(huán)入口出口精選課件傳統(tǒng)流程圖教學(xué)進(jìn)程傳統(tǒng)流程圖有以下幾個(gè)主要缺點(diǎn): 傳統(tǒng)流程圖本質(zhì)上不是逐步求精的好工具,它會(huì)使程序員 過(guò)早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。 傳統(tǒng)流程圖不易表示層次結(jié)

4、構(gòu)。 傳統(tǒng)流程圖不易表示數(shù)據(jù)結(jié)構(gòu)和模塊調(diào)用關(guān)系等重要信息。 傳統(tǒng)流程圖中用箭頭代表控制流,因此,程序員不受任何 約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的思想,隨意進(jìn)行轉(zhuǎn)移 控制。精選課件C語(yǔ)句概述3.2 C程序是以語(yǔ)句為基本單位的。教學(xué)進(jìn)程 C語(yǔ)言的語(yǔ)句用來(lái)向計(jì)算機(jī)發(fā)出操作指令。 一個(gè)語(yǔ)句經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。 一個(gè)函數(shù)的執(zhí)行部分是由若干條語(yǔ)句組成的。 C語(yǔ)句都是用來(lái)完成一定的操作任務(wù)的。C程序結(jié)構(gòu)C程序函數(shù)首部函數(shù)體數(shù)據(jù)聲明執(zhí)行語(yǔ)句源程序文件1源程序文件2.源程序文件n預(yù)處理命令數(shù)據(jù)聲明函數(shù)1函數(shù)2精選課件C語(yǔ)句概述3.2教學(xué)進(jìn)程C語(yǔ)句的分類(lèi) 控制語(yǔ)句 用于完成一定的控制功能 if ( ) e

5、lse for ( ) while ( ) do while ( ) continue break switch ( ) return goto 標(biāo)號(hào) 說(shuō)明:“( ) ”中是一個(gè)判斷條件, “”表示內(nèi)嵌的語(yǔ)句。精選課件C語(yǔ)句概述3.2教學(xué)進(jìn)程C語(yǔ)句的分類(lèi) 函數(shù)調(diào)用語(yǔ)句 由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成,例如: printf(“This is a C statement.”); 表達(dá)式語(yǔ)句 由一個(gè)表達(dá)式加一個(gè)分號(hào)構(gòu)成,最典型的是賦值語(yǔ)句,例如: a=3 是一個(gè)表達(dá)式 a=3 ; 是一個(gè)表達(dá)式語(yǔ)句精選課件C語(yǔ)句概述3.2教學(xué)進(jìn)程C語(yǔ)句的分類(lèi) 復(fù)合語(yǔ)句 用“”括起來(lái)的若干個(gè)語(yǔ)句,例如: z=x+y; t

6、=z/100; printf(“%f”,t); 空語(yǔ)句 只有一個(gè)分號(hào),什么都不做,例如: ;C語(yǔ)言允許一行寫(xiě)幾個(gè)語(yǔ)句,也允許一個(gè)語(yǔ)句拆開(kāi)寫(xiě)在幾行上。一般形式為 : 說(shuō)明部分;語(yǔ)句部分;精選課件C語(yǔ)句概述3.2教學(xué)進(jìn)程C語(yǔ)句的分類(lèi) 復(fù)合語(yǔ)句 用“”括起來(lái)的若干個(gè)語(yǔ)句,例如: z=x+y; t=z/100; printf(“%f”,t); 空語(yǔ)句 只有一個(gè)分號(hào),什么都不做,例如: ;C語(yǔ)言允許一行寫(xiě)幾個(gè)語(yǔ)句,也允許一個(gè)語(yǔ)句拆開(kāi)寫(xiě)在幾行上。一般形式為 : 說(shuō)明部分;語(yǔ)句部分;精選課件賦值表達(dá)式和賦值語(yǔ)句3.3教學(xué)進(jìn)程3.3.1 賦值表達(dá)式1. 賦值運(yùn)算符 賦值運(yùn)算符為 “=”。2. 賦值表達(dá)式 賦值

7、表達(dá)式為 標(biāo)識(shí)符=表達(dá)式功能是:首先計(jì)算賦值運(yùn)算符右邊表達(dá)式的值,然后將計(jì)算結(jié)果賦給賦值運(yùn)算符左邊的標(biāo)識(shí)符。說(shuō) 明:賦值運(yùn)算符左側(cè)的標(biāo)識(shí)符稱(chēng)為左值,可以是變量,不能是表達(dá)式、常量;右側(cè)的表達(dá)式稱(chēng)為右值。左值可以作為右值,反之則不一定行。 賦值表達(dá)式可以出現(xiàn)在另一個(gè)表達(dá)式中參與運(yùn)算。精選課件賦值表達(dá)式和賦值語(yǔ)句3.3教學(xué)進(jìn)程3.3.1 賦值表達(dá)式 . a=3 把常量3賦給變量a為值。 . 假設(shè)x與y都是已定義的整型變量,則表達(dá)式 x=y=4+5 等價(jià)與 x=(y=4+5) 執(zhí)行過(guò)程是:首先計(jì)算賦值表達(dá)式(y=4+5)的值,即計(jì)算4+5的值為9,并將計(jì)算結(jié)果賦給變量y,而賦值表達(dá)式(y=4+5)的

8、值也為9; 然后再將賦值表達(dá)式(y=4+5)的值(即9)賦給變量x。因此,通過(guò)這個(gè)賦值表達(dá)式將4+5的計(jì)算結(jié)果同時(shí)賦給了變量x與y。例如賦值表達(dá)式出現(xiàn)在另一個(gè)表達(dá)式中。精選課件賦值表達(dá)式和賦值語(yǔ)句3.3教學(xué)進(jìn)程3.3.1 賦值表達(dá)式 . b=a; /* b是左值,得到a的值*/ c=b; /* b是右值,將其值賦給c*/. a=(b=5) 等價(jià)于 a=b=5,因?yàn)橘x值運(yùn)算符按照“自右至左”的順序結(jié)合. 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 、

9、c是6 a=(b=10)/(c=2) 表達(dá)式的值為5,a是5、 b是10 、c是2例如精選課件賦值表達(dá)式和賦值語(yǔ)句3.3教學(xué)進(jìn)程3.3.1 賦值表達(dá)式 . (a=3*5)=4*3 先算括號(hào)a得到15,再算4*3 , a又得到12,因此整個(gè)表達(dá)式的值是12 若寫(xiě)成 a=3*5=4*3則出錯(cuò),因?yàn)?*5不能作為左值例如計(jì)算a-=a*a a=a-a*a,得到a=12-12*12=-132計(jì)算a+=a a=a+(-132),得到a=-132+(-132)=-264(7). 賦值表達(dá)式可以出現(xiàn)在其它語(yǔ)句中,如: printf(“%d”,a=b); 注:在一個(gè)語(yǔ)句中完成了賦值和輸出兩個(gè)操作。. 計(jì)算 a+

10、=a-=a*a的值,設(shè)a的初值為12。精選課件a+=3等價(jià)于a=a+3a-=ba=a-bx*=y+8x= x*( y+8)x/=yx=x/yx%=3-yx=x%(3-y)教學(xué)進(jìn)程3.3.1 賦值表達(dá)式3. 復(fù)合的賦值運(yùn)算符 在賦值運(yùn)算符“=”前加上其它二目運(yùn)算符構(gòu)成,如:“+= ”。4.復(fù)合的賦值表達(dá)式 復(fù)合的賦值表達(dá)式為 變量名 復(fù)合的賦值運(yùn)算符 表達(dá)式C語(yǔ)言中的復(fù)合賦值運(yùn)算符: +=、-=、*=、/=、%=凡是需要兩個(gè)運(yùn)算對(duì)象的運(yùn)算符可簡(jiǎn)化程序,提高編譯效率。精選課件計(jì)算a-=a*a a=a-a*a,得到a=12-12*12=-132計(jì)算a+=a a=a+(-132),得到a=-132+(

11、-132)=-264(8). 計(jì)算 a+=a-=a*a的值,設(shè)a的初值為12。精選課件賦值運(yùn)算教學(xué)進(jìn)程 1)在C語(yǔ)言中,“=”為賦值運(yùn)算符,而不是等號(hào)。 2)賦值運(yùn)算符=左邊必須是變量,不能是表達(dá)式。 3)賦值運(yùn)算符=兩端的類(lèi)型不一致時(shí),系統(tǒng)將自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換。說(shuō)明精選課件3.3.2 賦值過(guò)程中的類(lèi)型轉(zhuǎn)換教學(xué)進(jìn)程 實(shí)型數(shù)據(jù)賦給整型變量 舍去小數(shù),將整數(shù)部分賦給整型變量 若賦值運(yùn)算符兩側(cè)的類(lèi)型一致,就直接進(jìn)行賦值,如: int i; i=6; 若賦值運(yùn)算符兩側(cè)的類(lèi)型不一致,就要由系統(tǒng)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換。轉(zhuǎn)換規(guī)則是: 整型數(shù)賦給實(shí)型變量 數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中 雙精度數(shù)賦給單精度變量

12、截取7位有效數(shù)字,但應(yīng)注意數(shù)值會(huì)溢出 單精度數(shù)賦給雙精度變量 數(shù)值不變,有效位數(shù)擴(kuò)展到16位 占字節(jié)多的整數(shù)賦給整型/字符型變量,只將低字節(jié)賦給變量c=2890000000100100001c33=00100001精選課件3.3.2 賦值過(guò)程中的類(lèi)型轉(zhuǎn)換教學(xué)進(jìn)程 實(shí)型數(shù)據(jù)賦給整型變量 舍去小數(shù),將整數(shù)部分賦給整型變量 若賦值運(yùn)算符兩側(cè)的類(lèi)型一致,就直接進(jìn)行賦值,如: int i; i=6; 若賦值運(yùn)算符兩側(cè)的類(lèi)型不一致,就要由系統(tǒng)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換。轉(zhuǎn)換規(guī)則是: 整型數(shù)賦給實(shí)型變量 數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中 雙精度數(shù)賦給單精度變量 截取7位有效數(shù)字,但應(yīng)注意數(shù)值會(huì)溢出 單精度數(shù)賦給雙

13、精度變量 數(shù)值不變,有效位數(shù)擴(kuò)展到16位 占字節(jié)多的整數(shù)賦給整型/字符型變量,只將低字節(jié)賦給變量 有符號(hào)整數(shù)賦給長(zhǎng)度相同的無(wú)符號(hào)整型變量,按字節(jié)原樣賦給變量 無(wú)符號(hào)整數(shù)賦給長(zhǎng)度相同的有符號(hào)整型變量,應(yīng)注意不要超出范圍unsigned a;int b=-1; a=b;b1111111111111111a1111111111111111精選課件3.3.2 賦值過(guò)程中的類(lèi)型轉(zhuǎn)換教學(xué)進(jìn)程 實(shí)型數(shù)據(jù)賦給整型變量 舍去小數(shù),將整數(shù)部分賦給整型變量 若賦值運(yùn)算符兩側(cè)的類(lèi)型一致,就直接進(jìn)行賦值,如: int i; i=6; 若賦值運(yùn)算符兩側(cè)的類(lèi)型不一致,就要由系統(tǒng)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換。轉(zhuǎn)換規(guī)則是: 整型數(shù)賦給實(shí)型

14、變量 數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中 雙精度數(shù)賦給單精度變量 截取7位有效數(shù)字,但應(yīng)注意數(shù)值會(huì)溢出 單精度數(shù)賦給雙精度變量 數(shù)值不變,有效位數(shù)擴(kuò)展到16位 占字節(jié)多的整數(shù)賦給整型/字符型變量,只將低字節(jié)賦給變量 有符號(hào)整數(shù)賦給長(zhǎng)度相同的無(wú)符號(hào)整型變量,按字節(jié)原樣賦給變量 無(wú)符號(hào)整數(shù)賦給長(zhǎng)度相同的有符號(hào)整型變量,應(yīng)注意不要超出范圍精選課件3.3.3 賦值語(yǔ)句教學(xué)進(jìn)程Cs=2*3.14159*r; 賦值表達(dá)式的最后加一個(gè)“;”,就是賦值語(yǔ)句, 賦值語(yǔ)句的形式為: 變量名=表達(dá)式;x*=y+8; 復(fù)合語(yǔ)句 簡(jiǎn)單語(yǔ)句 賦值號(hào)“=”是一個(gè)運(yùn)算符; 區(qū)別賦值表達(dá)式和賦值語(yǔ)句的不同,如: if (a=

15、b)0)t=a; if(a=b;)0)t=a;精選課件3.3.4 變量賦初值int a=3;float f=3.56;char c=a; 程序中常需要對(duì)一些變量預(yù)先設(shè)定一個(gè)值初值。int a,b,c;a=b=c=3; 也可以用賦值語(yǔ)句實(shí)現(xiàn) 可以在定義變量的同時(shí)使變量初始化int a,b,c=5;int a=3,b=3,c=3;例如int a;float f;char c;a=3; c=a;f=3.56; int a,b,c; c=5;精選課件數(shù)據(jù)的輸入與輸出是相對(duì)于計(jì)算機(jī)而言的。其中: 從計(jì)算機(jī)向外部設(shè)備輸送數(shù)據(jù)稱(chēng)為輸出。通常輸出設(shè)備包括:顯示器、打印機(jī)等; 從外部設(shè)備向計(jì)算機(jī)輸送數(shù)據(jù)稱(chēng)為輸入

16、。通常輸入設(shè)備包括:鍵盤(pán)、鼠標(biāo)、掃描儀等。 在C語(yǔ)言中,輸入與輸出是用標(biāo)準(zhǔn)庫(kù)函數(shù)中的輸入、輸出函數(shù)實(shí)現(xiàn)的,這樣就避免了在編譯階段將輸入輸出語(yǔ)句翻譯成二進(jìn)制代碼及處理與硬件有關(guān)的問(wèn)題,可是編譯系統(tǒng)簡(jiǎn)化,通用性增強(qiáng),可移植性好。3.4教學(xué)進(jìn)程 數(shù)據(jù)輸入輸出的概念及在C語(yǔ)言中的實(shí)現(xiàn) 庫(kù)函數(shù)已編譯成目標(biāo)文件,在連接時(shí)與編譯源程序得到的目標(biāo)文件(.obj)相連接,生成可執(zhí)行程序(.exe)。注意:在使用系統(tǒng)庫(kù)函數(shù)時(shí),要用預(yù)編譯命令#include將有關(guān)的頭文件包含到用戶(hù)源文件中(即在程序的開(kāi)頭) 。頭文件中包含了調(diào)用函數(shù)時(shí)所需的有關(guān)信息。精選課件數(shù)據(jù)的輸入與輸出應(yīng)包括以下幾項(xiàng): 用于輸入或輸出的設(shè)備。

17、輸入或輸出數(shù)據(jù)的格式。 輸入或輸出的具體內(nèi)容。 在C語(yǔ)言提供的用于輸入與輸出的函數(shù)中,鍵盤(pán)是標(biāo)準(zhǔn)輸入設(shè)備,顯示器是標(biāo)準(zhǔn)輸出設(shè)備。輸出設(shè)備輸入設(shè)備教學(xué)進(jìn)程 另外,如果在程序中要使用C語(yǔ)言所提供的輸入函數(shù)或輸出函數(shù),要用到“stdio.h”文件中的信息。則在使用前(即在程序的開(kāi)頭處)應(yīng)該使用包含命令#include “stdio.h”將C語(yǔ)言中輸入與輸出的庫(kù)函數(shù)包含進(jìn)來(lái)。#include stdio.h3.4 數(shù)據(jù)輸入輸出的概念及在C語(yǔ)言中的實(shí)現(xiàn)精選課件 字符數(shù)據(jù)的輸入輸出3.53.5.1 用putchar函數(shù)輸出一個(gè)字符 格式 putchar (c) 作用 輸出變量c的值。 說(shuō)明 c可以是字符型

18、或整型變量。 c可以是轉(zhuǎn)義字符,如: putchar(101); 作用:輸出字符A putchar(); 輸出字符單引號(hào) putchar(015); 輸出回車(chē) putchar (n); 輸出換行教學(xué)進(jìn)程精選課件#include void main ( ) char a,b,c; a=B;b=O;c=Y; putchar(a);putchar(b);putchar(c); putchar (n); 【例3.3】 輸出單個(gè)字符。運(yùn)行結(jié)果:BOY 教學(xué)進(jìn)程精選課件 字符數(shù)據(jù)的輸入輸出3.53.5.2 用getchar函數(shù)輸入一個(gè)字符 格式 getchar ( ) 作用 從計(jì)算機(jī)終端(鍵盤(pán))輸入一個(gè)字

19、符。 說(shuō)明 函數(shù)的值就是從輸入設(shè)備得到的字符。 getchar( )函數(shù)只能接收一個(gè)字符。 該函數(shù)可給字符型或整型變量提供一個(gè)字符。 該函數(shù)可作為表達(dá)式的一部分。教學(xué)進(jìn)程putchar(getchar();printf(%c,getchar();精選課件#include void main ( ) char c; c=getchar( ); putchar(c); putchar (n); 【例3.4】 輸入單個(gè)字符。運(yùn)行結(jié)果:a /*輸入一個(gè)字符*/a /*輸出該字符*/從鍵盤(pán)輸入一個(gè)字符給字符變量c教學(xué)進(jìn)程精選課件 字符數(shù)據(jù)的輸入輸出3.53.5.2 用getchar函數(shù)輸入一個(gè)字符 該函

20、數(shù)可作為表達(dá)式的一部分。教學(xué)進(jìn)程 putchar(getchar(); printf(%c,getchar();#include void main ( ) char c; putchar( getchar( ) ); putchar (n); 精選課件3.6.1 用簡(jiǎn)單的printf函數(shù)輸出數(shù)據(jù) P52 printf (格式控制,輸出表列) ;教學(xué)進(jìn)程printf(%d,%cn,i,c); 格式控制 ,用一對(duì)雙引號(hào)括起來(lái),包括兩種信息: 格式說(shuō)明 由“%”和特定字符組成,如:%d、%c、%f等,是格式說(shuō)明符,用于說(shuō)明輸出項(xiàng)目所采用的格式; 普通字符 作為說(shuō)明性的文字、符號(hào)等,照原樣顯示出來(lái)。

21、 輸出表列 中的各項(xiàng)目指出了所要輸出的內(nèi)容,可是常量、變量或表達(dá)式。 簡(jiǎn)單的格式輸入與輸出3.6 例如: printf(a=%d b=%fn,a,b) ;1. printf函數(shù)的一般格式精選課件 d教學(xué)進(jìn)程按十進(jìn)制整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。 %i %c2. 基本的格式字符與%d格式相同,較少用。僅輸出一個(gè)字符。 %s輸出一個(gè)字符串。printf(%sn, CHINA);輸出的結(jié)果是字符串 CHINA %f以小數(shù)形式輸出一個(gè)實(shí)數(shù)(含單雙精度數(shù))。整數(shù)部分全部輸出,并輸出6位小數(shù)。 %e 或%E以指數(shù)形式輸出一個(gè)實(shí)數(shù)(含單雙精度數(shù))。小數(shù)點(diǎn)前僅1位非0數(shù)字,并輸出6位小數(shù)。精選課件教學(xué)進(jìn)程 scan

22、f(“格式控制”,地址表列); 作用 將從鍵盤(pán)輸入的a、b、c的值存入它們?cè)趦?nèi)存中所占的存儲(chǔ)單元里。存儲(chǔ)單元由地址標(biāo)識(shí),是在編譯連接階段分配的。 說(shuō)明 “格式控制”的含義同printf函數(shù),說(shuō)明輸入的數(shù)據(jù)應(yīng)使用的格式。 “地址表列”是由若干個(gè)地址組成的,可以是變量的地址或字符串的首地址。&是取地址運(yùn)算符,用于取出變量的地址。 與格式輸出一樣,在格式控制中,用于說(shuō)明輸入數(shù)據(jù)格式的格式說(shuō)明符總是以開(kāi)頭,后面緊跟的是具體的格式。scanf(%d,&a);3.6.2 用簡(jiǎn)單的scanf函數(shù)輸入數(shù)據(jù) P551. scanf函數(shù)的一般格式精選課件【例3.8】 用scanf函數(shù)輸入數(shù)據(jù)。運(yùn)行結(jié)果:3 4 5

23、 a=3,b=4,c=5 從鍵盤(pán)輸入整型數(shù)給變量a、b、c/*輸入的數(shù)據(jù)可用空格、Tab鍵、回車(chē)鍵之任一種分開(kāi)*/#include void main ( ) int a,b,c; scanf(%d%d%d,&a,&b,&c); printf(a=%d,b=%d,c=%dn,a,b,c);bca453數(shù)據(jù)在內(nèi)存中的存放教學(xué)進(jìn)程精選課件 d按十進(jìn)制整數(shù)的形式輸入數(shù)據(jù)。 %i %c2. 格式說(shuō)明與%d格式相同,較少用。僅能輸入一個(gè)字符。 %s能輸入一個(gè)字符串。 %f從鍵盤(pán)輸入一個(gè)實(shí)數(shù)(含單雙精度數(shù)),也可以指數(shù)形式輸入一個(gè)實(shí)數(shù)。 %e 或%E教學(xué)進(jìn)程scanf函數(shù)與printf函數(shù)中的格式說(shuō)明相似

24、。精選課件 scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量的地址,由取地址運(yùn)算符和變量名共同組成,不能僅是變量名: scanf(%f%e%g, a, b, c); 如果“格式控制”中除了格式說(shuō)明以外還有其它字符,則在輸入數(shù)據(jù)時(shí)必須在對(duì)應(yīng)位置輸入與之相同的字符: scanf(%d,%d, &a,&b); 從鍵盤(pán)輸入時(shí)必須輸逗號(hào): 3,4 說(shuō)明教學(xué)進(jìn)程 scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量的地址,由取地址運(yùn)算符和變量名共同組成,不能僅是變量名: scanf(%f%e%g, &a,&b,&c); 用%c格式輸入字符時(shí),空格和轉(zhuǎn)義字符都作為有效字符輸入,應(yīng)注意: scanf(%c%c%c, &a

25、,&b,&c); 若輸入:x y z 則a得到x,b得到空格,c得到y(tǒng) 用%c格式輸入字符時(shí),空格和轉(zhuǎn)義字符都作為有效字符輸入,應(yīng)注意: scanf(%c%c%c, &a,&b,&c); 只有輸入:xyz 才能使a得到x,b得到y(tǒng),c得到z精選課件說(shuō)明 對(duì)于unsigned型變量所需的數(shù)據(jù),可以用%u或%d格式輸入。教學(xué)進(jìn)程 在輸入數(shù)值型數(shù)據(jù)時(shí),遇到空格、回車(chē)、Tab鍵或遇非法輸入,則認(rèn)為該數(shù)據(jù)結(jié)束: scanf(%d%c%f, &a,&b,&c); 若輸入:1234a123o.26 a b c非法字符精選課件教學(xué)進(jìn)程 按指定格式輸出數(shù)據(jù)的寬度、小數(shù)位數(shù)、上下行數(shù)據(jù)按小數(shù)點(diǎn)對(duì)齊、用八進(jìn)制、十六

26、進(jìn)制輸出等。 較復(fù)雜的輸入輸出格式控制 P583.7 3.7.1 輸出數(shù)據(jù)格式控制 P62表3-1表3-2十進(jìn)制形式 d 或 md 用于基本整型ld 或 mld 用于長(zhǎng)整型u 或 mu 用于無(wú)符號(hào)基本整型lu 或 mlu 用于無(wú)符號(hào)長(zhǎng)整型1 整型格式說(shuō)明符intlongunsignedunsigned long八進(jìn)制形式十六進(jìn)制形式精選課件教學(xué)進(jìn)程八進(jìn)制形式o 或 mo 用于基本整型lo 或 mlo 用于長(zhǎng)整型十六進(jìn)制形式x 或 mx 用于基本整型lx 或 mlx 用于長(zhǎng)整型m表示輸出的整型數(shù)據(jù)所占總寬度(即列數(shù)),其中: 當(dāng)實(shí)際數(shù)據(jù)的位數(shù)不到m位時(shí),數(shù)據(jù)前面將用空格補(bǔ)滿(mǎn); 若實(shí)際數(shù)據(jù)位數(shù)大于

27、m,則以數(shù)據(jù)的實(shí)際位數(shù)為準(zhǔn)進(jìn)行輸出。對(duì)于o或x 格式,輸出的數(shù)據(jù)不帶符號(hào),符號(hào)位也作為數(shù)據(jù)的一部分輸出了,所以不會(huì)有負(fù)數(shù)輸出。一個(gè)int型整數(shù)也可以%u格式輸出,反之一個(gè)unsigned型整數(shù)也可以%d、%o、%x格式輸出。按相互賦值的規(guī)則處理。intlongintlong精選課件【例3.9】 無(wú)符號(hào)數(shù)據(jù)的輸出。# include void main() unsigned a=65535; int b=-2; printf(a=%d,%o,%x,%un,a,a,a,a); printf(b=%d,%o,%x,%un,b,b,b,b);運(yùn)行結(jié)果:a=65535,177777,ffff,65535

28、 b=-2,3777777776,fffffffe,4294967294 教學(xué)進(jìn)程1111111111111111前兩字節(jié)16個(gè)00111111111111111前兩字節(jié)16個(gè)1精選課件2 字符型格式說(shuō)明符教學(xué)進(jìn)程 一個(gè)整數(shù),只要其值在0255范圍內(nèi),也可義用“%c”格式使其按字符形式輸出。 在輸出前,系統(tǒng)會(huì)自動(dòng)將該整數(shù)作為ASCII碼轉(zhuǎn)換成相應(yīng)的字符;反之,一個(gè)字符也可以輸出成一個(gè)整數(shù)。 字符char型 mc 輸出的字符占m列,如:printf(“%3c”,a);實(shí)際輸出為:a字符串ms 輸出的字符串占m列。若串長(zhǎng)m,全部輸出;若串長(zhǎng)m,左面補(bǔ)空格。-ms 輸出的字符串長(zhǎng)m,右面補(bǔ)空格-m.

29、ns 只取字符串前n個(gè)字符。若nn,m自動(dòng)取n值。精選課件【例3.10】 字符串的輸出。# include void main ( ) printf(%3s,%7.2s ,%-5.3s,%.4sn,CHINA,CHINA, CHINA, CHINA);運(yùn)行結(jié)果: CHINA, CH, CHI, CHIN教學(xué)進(jìn)程精選課件3 實(shí)型格式說(shuō)明符十進(jìn)制數(shù)形式教學(xué)進(jìn)程指數(shù)形式m.ne 或 -m.nem.nf 或 -m.nf 在輸出實(shí)型數(shù)據(jù)時(shí),格式說(shuō)明符中的m表示整個(gè)數(shù)據(jù)所占的寬度,n表示小數(shù)點(diǎn)后面所占的位數(shù)。 如果在小數(shù)點(diǎn)后取n位后,所規(guī)定的數(shù)據(jù)寬度m不夠輸出數(shù)據(jù)前面的整數(shù)部分(包括小數(shù)點(diǎn)),則按實(shí)際的位

30、數(shù)進(jìn)行輸出。 需要指出的是,在C語(yǔ)言中,用于輸出單精度實(shí)型數(shù)據(jù)與雙精度實(shí)型數(shù)據(jù)格式說(shuō)明符是一樣的。 %g或%G形式根據(jù)數(shù)值的大小,自動(dòng)選f 或 e中寬度較短的一種格式,不輸出無(wú)意義的0。精選課件【例3.11】 輸出實(shí)數(shù)時(shí),指定小數(shù)位數(shù)。# include void main ( ) float f=123.456; printf(%f%10f%10.2f%.2f%-10.2fn,f,f,f,f,f);運(yùn)行結(jié)果: 123.456001123.456001123.46123.46123.46 教學(xué)進(jìn)程精選課件【例3.12】 求3個(gè)圓的周長(zhǎng),輸出結(jié)果時(shí)上下按小數(shù)點(diǎn)對(duì)齊,取兩位小數(shù)。# include

31、 #define PI 3.1415926void main ( )double r1=1.53,r2=21.83,r3=123.71,s1,s2,s3; s1=2.0*PI*r1; s2=2.0*PI*r2; s3=2.0*PI*r3; printf(r1=%10.2fnr2=%10.2fnr3=%10.2fn,r1,r2,r3);運(yùn)行結(jié)果:r1=1.53 r2=21.83 r3=123.71 教學(xué)進(jìn)程精選課件【例3.12】 求3個(gè)圓的周長(zhǎng),輸出結(jié)果時(shí)上下按小數(shù)點(diǎn)對(duì)齊,取兩位小數(shù)。# include #define PI 3.1415926void main ( )double r1=1.5

32、3,r2=21.83,r3=123.71,s1,s2,s3; s1=2.0*PI*r1; printf(r1=%10.2fts1=%10.2fn,r1,s1); s2=2.0*PI*r2; printf(r2=%10.2fts2=%10.2fn,r2,s2); s3=2.0*PI*r3; printf(r3=%10.2fts3=%10.2fn,r3,s3);運(yùn)行結(jié)果:r1=1.53,s1=9.61r2=21.83, s2=137.16r3=123.71, s3=777.29教學(xué)進(jìn)程精選課件 格式輸出函數(shù)的執(zhí)行過(guò)程如下:教學(xué)進(jìn)程 首先,在計(jì)算機(jī)內(nèi)存中開(kāi)辟一個(gè)輸出緩沖區(qū),用于存放輸出項(xiàng)目表中各項(xiàng)目

33、數(shù)據(jù)。 然后,依次計(jì)算項(xiàng)目表中各項(xiàng)目(常量或變量或表達(dá)式)的值,并按各項(xiàng)目數(shù)據(jù)類(lèi)型應(yīng)占的字節(jié)數(shù)依次將它們存入輸出緩沖區(qū)中。 最后,根據(jù)“格式控制”字符串中的各格式說(shuō)明符依次從輸出緩沖區(qū)中取出若干字節(jié)的數(shù)據(jù)(如果是非格式說(shuō)明符,則將按原字符輸出),轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制數(shù)據(jù)進(jìn)行輸出。其中從輸出緩沖區(qū)中取多少個(gè)字節(jié)的數(shù)據(jù)是按照對(duì)應(yīng)格式說(shuō)明符說(shuō)明的數(shù)據(jù)類(lèi)型。 在“格式控制”的格式說(shuō)明符中,如果帶有寬度說(shuō)明,則在左邊沒(méi) 有數(shù)字的位置上用空格填滿(mǎn)(即輸出的數(shù)字是右對(duì)齊)。但如果在寬度 說(shuō)明前加一 個(gè)負(fù)號(hào)(-),則輸出為左對(duì)齊,即在右邊補(bǔ)空格。精選課件【例】 設(shè)有如下C程序:#include stdio.hm

34、ain() double x=34.567; printf(x=fn,x); printf(x=dn,x); printf(x=dn,(int)x);這個(gè)程序的實(shí)際運(yùn)行結(jié)果為x=34.567000 x=27263x=34 顯然,這個(gè)程序中的第二個(gè)格式輸出語(yǔ)句輸出的結(jié)果是錯(cuò)誤的,這是因?yàn)樵诘诙€(gè)格式輸出語(yǔ)句中,格式說(shuō)明符d是基本整型格式說(shuō)明符,而輸出項(xiàng)目是雙精度型的數(shù)據(jù),它們是不匹配的。教學(xué)進(jìn)程精選課件教學(xué)進(jìn)程十進(jìn)制形式 d 或 md 用于一般整型ld 或 mld 用于長(zhǎng)整型u 或 mu 用于無(wú)符號(hào)基本整型lu 或 mlu 用于無(wú)符號(hào)長(zhǎng)整型八進(jìn)制形式o 或 mo 用于一般整型lo 或 mlo 用

35、于長(zhǎng)整型十六進(jìn)制形式x 或 mx 用于一般整型lx 或 mlx 用于長(zhǎng)整型可見(jiàn):用于輸入與輸出整型數(shù)據(jù)的格式說(shuō)明符是完全一樣的。 m表示輸入數(shù)據(jù)時(shí)的寬度(即列數(shù))。 與輸出情形一樣,對(duì)于八進(jìn)制形式與十六進(jìn)制形式的輸入格式,主要用于輸入無(wú)符號(hào)整型的數(shù)據(jù)。 3.7.2 輸入數(shù)據(jù)格式控制 P63表3-3表3-4整型格式說(shuō)明符精選課件實(shí)型格式說(shuō)明符教學(xué)進(jìn)程單精度實(shí)型雙精度實(shí)型lff 或 e與輸出不同,輸入時(shí)無(wú)論是單精度還是雙精度實(shí)型,都不能用m.n來(lái)指定輸出的寬度和小數(shù)點(diǎn)后的位數(shù);可以指定輸入數(shù)據(jù)所占的列數(shù),系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù),如:scanf(“%3d%3d”,&a,&b); 當(dāng)輸入123456

36、7時(shí),a得到123,b得到456,多余的7無(wú)用;若在%號(hào)后有一個(gè)“*”和一個(gè)數(shù)字,表示跳過(guò)它指定的列數(shù),如:scanf(“%2d%*3d%3d”,&a,&b);當(dāng)輸入12345678時(shí),a得到12, %*3d表示讀入345這3個(gè)數(shù)但不賦給變量, b得到678。精選課件 mc 對(duì)取得的m個(gè)字符僅第一個(gè)賦給變量字符型格式說(shuō)明符教學(xué)進(jìn)程下面是用到格式輸入的一個(gè)程序:#include stdio.hmain() int a; float b; char c; scanf(dfc,&a,&b,&c); 下面對(duì)格式輸入作幾點(diǎn)說(shuō)明: 在格式輸入中,內(nèi)存地址表中的各項(xiàng)目必須是變量地址,而不能是變量名,且彼此間

37、用“,”分隔。為此,C語(yǔ)言專(zhuān)門(mén)提供了一個(gè)取地址運(yùn)算符&。例如,&a表示變量a在內(nèi)存中的首地址。精選課件教學(xué)進(jìn)程 當(dāng)用于輸入整型數(shù)據(jù)的格式說(shuō)明符中沒(méi)有寬度說(shuō)明時(shí),則在具體輸入 數(shù)據(jù)時(shí)分為以下兩種情況: 如果各格式說(shuō)明符之間沒(méi)有其它字符,則在輸入數(shù)據(jù)時(shí),兩個(gè)數(shù)據(jù) 之間用空格、或Tab、或回車(chē)來(lái)分隔。 如果各格式說(shuō)明符之間包含其它字符,則在輸入數(shù)據(jù)時(shí),應(yīng)輸入與 這些字符相同的字符作為間隔。 例如,設(shè)有如下說(shuō)明 int a, b ; float c, d ; 現(xiàn)要利用格式輸入函數(shù)輸入a=12,b=78,c=12.5,d=7.6。 采用不同的格式說(shuō)明,其輸入數(shù)據(jù)的形式也是不同的。分別說(shuō)明如下:精選課件教

38、學(xué)進(jìn)程 若輸入語(yǔ)句為 scanf(ddff,&a,&b,&c,&d); (即格式說(shuō)明符中沒(méi)有寬度說(shuō)明,各格式說(shuō)明符之間也沒(méi)有其他字符。) 則輸入數(shù)據(jù)的形式應(yīng)為 12 78 12.5 7.6 (兩個(gè)數(shù)據(jù)之間用空格來(lái)分隔,當(dāng)然也可用“Tab”或“回車(chē)”來(lái)分隔。) 若輸入語(yǔ)句為 scanf(d,d,f,f,&a,&b,&c,&d);(格式說(shuō)明符中沒(méi)有寬度說(shuō)明,但各格式說(shuō)明符之間有其它字符,即逗號(hào)) 則輸入數(shù)據(jù)的形式應(yīng)為 12,78,12.5,7.6 (即在輸入的兩個(gè)數(shù)據(jù)之間同時(shí)要輸入逗號(hào)。) 若輸入語(yǔ)句 scanf(“a=d,b=d,c=f,d=f”,&a,&b,&c,&d); (即格式說(shuō)明符中沒(méi)有

39、寬度說(shuō)明,但各格式說(shuō)明符之間有其它字符。) 輸入數(shù)據(jù)的形式應(yīng)為 a=12,b=78,c=12.5,d=7.6 (即在輸入的兩個(gè)數(shù)據(jù)之間同時(shí)要輸入這些非格式說(shuō)明符的字符。)精選課件教學(xué)進(jìn)程 當(dāng)整型或字符型格式說(shuō)明符中有寬度說(shuō)明時(shí),按寬度說(shuō)明截取數(shù)據(jù)。一個(gè)字符型變量只能存放一個(gè)字符【例】 設(shè)有以下程序:#include stdio.hmain() int a,d; char b,c; printf(input a,b,c,d:); scanf(3d3c2c2d,&a,&b,&c,&d); printf(a=d,b=c,c=c,d=dn,a,b,c,d); 若從鍵盤(pán)輸入如下(其中“input a,b

40、,c,d :”為輸出的字符串): input a,b,c,d: 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 3d 3c 2c 2d 則它們與各格式說(shuō)明符之間的對(duì)應(yīng)關(guān)系如上,最后賦給各變量的值為 a=123,b=4,c=7,d=90精選課件教學(xué)進(jìn)程 在用于輸入的實(shí)型格式說(shuō)明符中不能用m.n來(lái)指定輸入的寬度和小數(shù) 點(diǎn)后的位數(shù)(這是與輸出的不同之處)。 例如: scanf(“7.2f”,&a); 此用法是錯(cuò)誤的 為了便于程序執(zhí)行過(guò)程中從鍵盤(pán)輸入數(shù)據(jù),在一個(gè)C程序開(kāi)始執(zhí)行時(shí), 系統(tǒng)就在計(jì)算機(jī)內(nèi)存中開(kāi)辟了一個(gè)輸入緩沖區(qū),用于暫存從鍵盤(pán)輸入 的數(shù)據(jù)。開(kāi)始時(shí)該輸入緩沖區(qū)是空的。當(dāng)執(zhí)行到一

41、個(gè)輸入函數(shù)時(shí),就 檢查輸入緩沖區(qū)中是否有數(shù)據(jù): 如果輸入緩沖區(qū)中已經(jīng)有數(shù)據(jù)(上一個(gè)輸入函數(shù)剩下的),則依次按照“格式控制”中的格式說(shuō)明符從輸入緩沖區(qū)中取出數(shù)據(jù)轉(zhuǎn)換成計(jì)算機(jī)中的表示形式(二進(jìn)制),最后存放到內(nèi)存地址表中指出的對(duì)應(yīng)地址中。精選課件 如果輸入緩沖區(qū)中沒(méi)有數(shù)據(jù)(即輸入緩沖區(qū)位空),則等待用 戶(hù)從鍵盤(pán)輸入數(shù)據(jù)并依次存放到輸入緩沖區(qū)中。當(dāng)輸入一個(gè)或符后,將依次按照“格式控制”中還未用過(guò)的格式說(shuō)明符從輸入緩沖區(qū)中取出數(shù)據(jù)轉(zhuǎn)換成計(jì)算機(jī)中的表示形式(二進(jìn)制),最后存放到內(nèi)存地址表中指出的對(duì)應(yīng)地址中。教學(xué)進(jìn)程 在上述兩種任一種情況下,從輸入緩沖區(qū)中取數(shù)據(jù),如果遇到或字符,則將輸入緩沖區(qū)清空。此時(shí)如

42、果“格式控制”中的格式說(shuō)明符還未用完,則繼續(xù)等待用戶(hù)從鍵盤(pán)輸入數(shù)據(jù)并依次存放到輸入緩沖區(qū)中,直到輸入一個(gè)或符后,再依次按照“格式控制“中還未用過(guò)的格式說(shuō)明符從輸入緩沖區(qū)中取出數(shù)據(jù)轉(zhuǎn)換成計(jì)算機(jī)中的表示形式(二進(jìn)制),最后存放到內(nèi)存地址表中指出的對(duì)應(yīng)地址中。這個(gè)過(guò)程直到“格式控制”中的格式說(shuō)明符用完為止。此時(shí)如果輸入緩沖區(qū)中的數(shù)據(jù)還未取完,則將留給下一個(gè)輸入函數(shù)使用。精選課件教學(xué)進(jìn)程 與格式輸出一樣,格式輸入的格式控制中的各格式說(shuō)明符與內(nèi)存地 址表中的變量地址在個(gè)數(shù)、次序、類(lèi)型方面必須一一對(duì)應(yīng)。 從以上輸入函數(shù)的執(zhí)行過(guò)程可以看出,從鍵盤(pán)輸入數(shù)據(jù)是以或作為結(jié)束的。當(dāng)輸入的數(shù)據(jù)一行不夠時(shí),可以在下一行

43、繼續(xù)輸入;當(dāng)一行上的數(shù)據(jù)用不完時(shí),可以留給下一個(gè)輸入函數(shù)使用。 需要注意的是,由于或是作為鍵盤(pán)輸入數(shù)據(jù)的結(jié)束符,因此,在輸入函數(shù)的格式控制中,最后不能加換行符n。精選課件【例3-5】 設(shè)有C程序如下:#include stdio.hmain() double x; printf(input x:); scanf(f,&x); printf(x=fn,x);這個(gè)程序的運(yùn)行結(jié)果為(其中有下劃線(xiàn)的部分為鍵盤(pán)輸入)input x:123.456x=0.000000 顯然,輸出語(yǔ)句輸出的x值是錯(cuò)誤的。這是因?yàn)椋瑇定義為雙精度型的實(shí)型變量(占8B),但它使用的是單精度實(shí)型的輸入格式說(shuō)明符。當(dāng)輸入一個(gè)實(shí)型數(shù)

44、123.456后,將按照單精度輸入格式說(shuō)明符將它轉(zhuǎn)換成計(jì)算機(jī)中的表示形式(只占4B),最后存放到為雙精度實(shí)型變量x所分配的存儲(chǔ)空間的低4B中,而為雙精度實(shí)型變量x所分配的存儲(chǔ)空間的高4B中的各位均是0,這就造成雙精度實(shí)型變量x的(階碼N-2)的11位偏移碼均位0,這是C語(yǔ)言中無(wú)法表示的一個(gè)絕對(duì)值很小的數(shù)(稱(chēng)為下溢),默認(rèn)為實(shí)型數(shù)0.0。教學(xué)進(jìn)程精選課件教學(xué)進(jìn)程 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 P643.8 程序中所有語(yǔ)句都是按自上而下的順序執(zhí)行的,不發(fā)生跳轉(zhuǎn)?!纠?.13】 輸入三角形的三邊長(zhǎng),求三角形的面積。分析: 設(shè)輸入的三邊能構(gòu)成三角形; 求三角形面積的公式為 據(jù)此編寫(xiě)程序如下:精選課件教學(xué)進(jìn)程

45、順序結(jié)構(gòu)程序設(shè)計(jì)舉例 P643.8#include #include void main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%fnb=%fnc=%fnarea=%fn,a,b,c,area); 當(dāng)輸入:3.4,4.5,5.6運(yùn)行結(jié)果為:a=3.400000b=4.500000c=5.600000area=7.649173printf(a=%7.2fnb=%7.2fnc=%7.2fnarea=%7.2fn,a,b,c,area

46、);若將輸出語(yǔ)句改為:運(yùn)行結(jié)果為:a=3.40b=4.50c=5.60area=7.65精選課件教學(xué)進(jìn)程 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 P643.8【例3.14】 從鍵盤(pán)輸入一個(gè)大寫(xiě)字母,要求用小寫(xiě)輸出。分析: 大寫(xiě)字母與小寫(xiě)字母的ASCII碼值相差32。 對(duì)從鍵盤(pán)輸入的大寫(xiě)字母加32即變?yōu)橄鄳?yīng)的小寫(xiě)字母。據(jù)此編寫(xiě)程序如下:#include void main() char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2);當(dāng)輸入:A運(yùn)行結(jié)果為:A,65a,97精選課件教學(xué)進(jìn)程 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 P6

47、43.8【例3.15】 求一元二次方程 的根。 要求:系數(shù)a、b、c從鍵盤(pán)輸入; 假設(shè):分析: 已知一元二次方程的根為: 則: 可將上式分解為兩項(xiàng):據(jù)此編寫(xiě)程序如下:精選課件教學(xué)進(jìn)程 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 P643.8#include #include void main ( ) float a,b,c,disc,x1,x2,p,q; scanf(a=%f,b=%f,c=%f,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q;x2=p-q; printf(x1=%5.2fnx2=%5.2fn,x1,x2);當(dāng)輸入

48、:a=1,b=3,c=2運(yùn)行結(jié)果為:x1=-1.00 x2=-2.00精選課件【例3.1】 有符號(hào)整數(shù)賦給無(wú)符號(hào)整型變量,數(shù)據(jù)會(huì)變化,按字節(jié)原樣賦值,即符號(hào)位也作為數(shù)值一起傳送。#include void main ( ) unsigned a; /*定義a為無(wú)符號(hào)整型變量*/ int b; /*定義b為有符號(hào)整型變量*/ b=-1; a=b; printf(%un,a);運(yùn)行結(jié)果:4294967295 (vc中,232-1) |-1|0000000000000001取反1111111111111110加11111111111111111教學(xué)進(jìn)程精選課件#include void main (

49、 ) unsigned a; /*定義a為無(wú)符號(hào)整型變量*/ int b; /*定義b為有符號(hào)整型變量*/ b=-1; a=b; printf(a=%un,a); printf(b=%dn,b);運(yùn)行結(jié)果:a=4294967295 (vc中,232-1)b=-1教學(xué)進(jìn)程精選課件【例3.2】 無(wú)符號(hào)整數(shù)賦給有符號(hào)整型變量,注意數(shù)值范圍。#include void main ( ) unsigned a; /*定義a為無(wú)符號(hào)整型變量*/ int b; /*定義b為有符號(hào)整型變量*/ a=4294967295; b=a; printf(%dn,b);運(yùn)行結(jié)果:-1 (vc中,232-1)減11111

50、111111111111取反1111111111111110 -10000000000000001教學(xué)進(jìn)程精選課件教學(xué)進(jìn)程字符型格式說(shuō)明符【例3.5】 字符數(shù)據(jù)的輸出。#include void main()char c=a; int i=97; printf(%c,%dn,c,c); printf(%c,%dn,i,i);運(yùn)行輸出的結(jié)果為a,97 a,97精選課件教學(xué)進(jìn)程實(shí)型格式說(shuō)明符【例3.6】 輸出單精度實(shí)數(shù)時(shí)的有效位數(shù)。#include void main() float x,y; x=111111.111;y=222222.222; printf(%fn, x+y);運(yùn)行結(jié)果為333

51、333.328125整數(shù)部分全部輸出,并輸出6位小數(shù)。有效位數(shù)一般為7位。精選課件教學(xué)進(jìn)程實(shí)型格式說(shuō)明符【例3.7-1】 輸出雙精度數(shù)時(shí)的有效位數(shù)。#include void main()double x,y; x=11111111.11111111;y=22222222.22222222; printf(%fn, x+y);運(yùn)行結(jié)果為33333333.333333整數(shù)部分全部輸出,有效位數(shù)可為16位,因用f格式僅輸出6位小數(shù)。精選課件教學(xué)進(jìn)程實(shí)型格式說(shuō)明符【例3.7-2】 以指數(shù)形式輸出雙精度數(shù)時(shí)的有效位數(shù)。#include void main()double x,y; x=11111111

52、.11111111;y=22222222.22222222; printf(%en, x+y);運(yùn)行結(jié)果為3.333333e+007以指數(shù)形式輸出實(shí)數(shù),小數(shù)為6位。數(shù)值部分按規(guī)范化指數(shù)形式輸出。精選課件教學(xué)進(jìn)程 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 P643.8 程序中所有語(yǔ)句都是按自上而下的順序執(zhí)行的,不發(fā)生跳轉(zhuǎn)?!纠?.13】 輸入三角形的三邊長(zhǎng),求三角形的面積。分析: 假設(shè)輸入的三邊能構(gòu)成三角形; 求三角形面積的公式為 半邊長(zhǎng)計(jì)算公式為據(jù)此編寫(xiě)程序如下:精選課件教學(xué)進(jìn)程#include #include void main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); s=(a+b+c)/2.0; area=sqrt(s*(s-

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論