c語言第3章 C語言的數據_第1頁
c語言第3章 C語言的數據_第2頁
c語言第3章 C語言的數據_第3頁
c語言第3章 C語言的數據_第4頁
c語言第3章 C語言的數據_第5頁
已閱讀5頁,還剩56頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、青島大學軟件技術學院第第 3 章章 C語言的信息語言的信息n C語言的信息類型n C語言的運算符和表達式青島大學軟件技術學院 第 3章 C語言的信息3.1 程序設計概述程序設計概述3.2 C語言的信息類型語言的信息類型3.3 常量和變量常量和變量3.4 整型信息整型信息3.5 實型信息實型信息3.6 字符型信息字符型信息3.7 算術運算與算術表達式算術運算與算術表達式3.8 賦值運算與賦值表達式賦值運算與賦值表達式3.9 C語言特有的運算和運算符語言特有的運算和運算符青島大學軟件技術學院3.1 程序設計概述程序設計概述一個程序應包羅對信息的描述和對信息操作的描述. 1對信息的描述,即信息結構.

2、信息結構是統計機學科的核心課程之一,有很多特意著作論講,本課程便不再贅述. 在C語言中,系統提供的信息結構,是以信息類型的形式表現的. 2對信息操作的描述,即統計機算法.算法是為解決一個咨詢題而采納的方式和環節,是程序的靈魂.為此,聞名統計機科學家沃思(Nikiklaus Wirth)提出一個程式: 信息結構 + 算法 = 程序 現實上,一個程序除了信息結構和算法外,還必須使用一種統計機語言,同時采納結構化方式來示意. 青島大學軟件技術學院3.2 C語言的信息類型語言的信息類型C語言提供的信息結構,是以信息類型形式表現的.具體分類似下:1.根基類型分為整型、實型(又稱浮點型)、字符型和枚舉型四

3、種.2.組織類型分為數組類型、結構類型和共用類型三種.3.指針類型.4.空類型C語言中的信息,有常量和變量之分,它們分不屬于上述這些類型.本章將講解根基類型中的整型、實型和字符型三種信息.青島大學軟件技術學院3.3 常量和變量常量和變量3.3.1 常量常量 1.常量的概念常量的概念 在程序運行環節中在程序運行環節中,其值不能被改變的量稱為常量其值不能被改變的量稱為常量. 2.常量的分類常量的分類 (1)整型常量)整型常量(2)實型常量)實型常量(3)字符常量)字符常量.(4)符號常量)符號常量.常量的類型常量的類型,可通過書寫形式來判不可通過書寫形式來判不.3.3.2 變量變量1.變量的概念變

4、量的概念在程序運行環節中在程序運行環節中,其值能夠被改變的量稱為變量其值能夠被改變的量稱為變量.2.變量的兩個要素變量的兩個要素青島大學軟件技術學院(1)變量名.每個變量都必須有一個名字變量名,變量命名遵循標識符命名法那么.(2)變量值.在程序運行環節中,變量值存儲在內存中.在程序中,通過變量名來引用變量的值.標識符命名法那么(1)有效字符:只能由字母、數字和下劃線組成,且以字母或下劃線開頭.(2)有效長度:隨系統而異,但到少前個字符有效.似果超長,那么超長部分被舍舍.例似,因為student_name和student_number的前個字符一樣,有的系統信任這兩個變量,是一回事而不加區不.在

5、TC V2.0中,變量名(標識符)的有效長度為個字符,缺省值為.青島大學軟件技術學院(3)C語言的關鍵字不能用作變量名.注重:C語言對英文字母的大小敏感,即同一字母的大小寫,被信任是兩個差別的字符.風俗上,變量名和函數名中的英文字母用小寫,以增加可讀性.摸索題:在C語言中,變量名total與變量名TOTAL、ToTaL、tOtAl等是同一個變量嗎?標識符命名的良好風俗見名知意:所謂“見名知意”是指,通過變量名便明白變量值的含義.往往應挑選能示意信息含義的英文單詞(或縮寫)作變量名,或漢語拼音字頭作變量名.例似,namexm(姓名)、sexxb(性不)、agenl(年紀)、salarygz(工資

6、).青島大學軟件技術學院4.變量的定義與初始化在語言中,要求對全部用到的變量,必須先定義、后使用;且稱在定義變量的同時履行賦初值的操縱為變量初始化.(1)變量定義的一樣標準 存儲類型 信息類型 變量名, 變量名2;例似,float radius, length, area; (2)變量初始化的一樣標準存儲類型 信息類型 變量名=初值, 變量名2=初值2;例似,float radius=2.5, length, area; 青島大學軟件技術學院3.4 整型信息整型信息3.4.1 整型變量整型變量 1.分類分類 依照占用內存字節數的差別依照占用內存字節數的差別,整型變量又分為類整型變量又分為類:(

7、1)根基整型(類型關鍵字為)根基整型(類型關鍵字為int).(2)短整型(類型關鍵字為)短整型(類型關鍵字為short int).(3)長整型(類型關鍵字為)長整型(類型關鍵字為long int).(4)無符號整型)無符號整型.無符號型又分為無符號根基整型(無符號型又分為無符號根基整型(unsigned int)、無符號短整型()、無符號短整型(unsigned short)和無符號長整型()和無符號長整型(unsigned long)三種)三種,只能用來存儲無符號整數只能用來存儲無符號整數.2.占用內存字節數與值域占用內存字節數與值域 上述各類型整型變量占用的內存字節數上述各類型整型變量占用

8、的內存字節數,隨系統而異隨系統而異.在在16位操縱系統位操縱系統中中,一樣用字節示意一個一樣用字節示意一個int型變量型變量,且且long型(字節)型(字節)int型(字節)型(字節)short型(字節)型(字節).青島大學軟件技術學院明顯,差別類型的整型變量,其值域差別.占用內存字節數為n的(有符號)整型變量,其值域為:-2n*8-1(2n*8-1-1);無符號整型變量的值域為:0(2n*8-1). 例似,PC機中的一個int型變量,其值域為-22*8-1(22*8-1-1),即-3276832767;一個unsigned型變量的值域為:0(22*8-1),即065535. 3.4.2 整型

9、常量.三種示意形式整型常量即整常數,在語言中可用三種形式示意:(1)十進制.例似10、36.(2)八進制(以數字開頭).例似012.(3)十六進制(以數字+小寫字母x開頭).例似0 x36.青島大學軟件技術學院.分類(1)根基整型.在16位機中,用2字節存儲,其信息范疇與int型變量一樣.(2)長整型(在數值背面加“L(l)”).對超出根基整型值域的整型常量,可使用長整型常量示意,其取值范疇可達-(-).例似,123l、315等.類型匹配法那么類型匹配法那么為:一個整型常量,能夠賦給能容納下其值的整型變量.例似,其值在-(-)的整型常量,能夠賦給int型變量和long int型變量;其值在-(

10、-)的整型常量,便只能賦給long int型變量. 注重:常量無unsigned型.但一個非負整型常量,只要它的值不超過相應變量的值域(即取值范疇),也能夠賦給unsigned型變量.青島大學軟件技術學院3.5 實型信息實型信息3.5.1 實型變量實型變量 語言的實型變量語言的實型變量,分為兩種分為兩種: (1)單精度型)單精度型.類型關鍵字為類型關鍵字為float,一樣占字節(位)、提供一樣占字節(位)、提供位有效數字位有效數字. (2)雙精度型)雙精度型.類型關鍵字為類型關鍵字為double,一樣占個字節、提供一樣占個字節、提供1516位位有效數字有效數字.3.5.2 實型常量實型常量 .

11、示意形式示意形式實型常量即實數實型常量即實數,在語言中又稱浮點數在語言中又稱浮點數,其值有兩種表達形式其值有兩種表達形式: (1)十進制形式)十進制形式.例似例似3.14、9.8. (2)指數形式)指數形式:E(e).例似例似3.0+5等等. .對于類型對于類型 實型常量不分實型常量不分float型和型和double型型.一個實型常量一個實型常量,能夠賦給一個實型能夠賦給一個實型變量(變量(float型或型或double型)型).青島大學軟件技術學院3.6 字符型信息字符型信息3.6.1 字符常量字符常量1.字符常量的定義字符常量的定義用一對單引號括起來的單個字符用一對單引號括起來的單個字符,

12、稱為字符常量稱為字符常量.例似例似,A、等等.2.轉義字符轉義字符語言還許可使用一種特別形式的字符常量語言還許可使用一種特別形式的字符常量,便是以反歪杠便是以反歪杠“ ”開頭開頭的轉義字符的轉義字符. 注重注重:似果反歪杠或單引號自已做為字符常量似果反歪杠或單引號自已做為字符常量,必須使用轉義字符必須使用轉義字符:、.案例案例3.1 用轉義字符輸出可打印字符和不可打印字符用轉義字符輸出可打印字符和不可打印字符. *程序功能程序功能:用轉義字符輸出可打印字符和不可打印字符用轉義字符輸出可打印字符和不可打印字符*青島大學軟件技術學院main() printf(“x4Fx4Bx21n”);* 等價于

13、printf(“OK!n”); * printf(“x15 xABn”); 程序運行結論似下: ! 3.6.2 字符變量字符變量的類型關鍵字為char,一樣占用1字節內存單元.1.變量值的存儲 字符變量用來存儲字符常量.將一個字符常量存儲到一個字符變量中,現實上是將該字符的ASCII碼值(無符號整數)存儲到內存單元中.例似,char ch1, ch2; *定義兩個字符變量:ch1,ch2*ch1=a; ch2=b; *給字符變量賦值*青島大學軟件技術學院2.特性字符信息在內存中存儲的是字符的ASCII碼 一個無符號整數,其形式與整數的存儲形式一樣,所以語言許可字符型信息與整型信息之間通用.(1

14、)一個字符型信息,既能夠字符形式輸出,也能夠整數形式輸出. 案例3.2 字符變量的字符形式輸出和整數形式輸出. *程序功能:用字符形式和整數形式輸出字符變量* main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); 程序運行結論: ch1=a,ch2=b ch1=97,ch2=98 青島大學軟件技術學院 案例3.3 字符信息的算術運算. *程序功能:字符信息的算術運算* main() char ch1,ch2; ch1=a; ch2=B; *字母

15、的大小寫變形* printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32); *用字符形式輸出一個大于256的數值* printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); (2)許可對字符信息履行算術運算)許可對字符信息履行算術運算,此刻便是對它們此刻便是對它們的的ASCII碼值履行算術運算碼值履行算術運算.青島大學軟件技術學院程序運行結論:ch1=A,ch2=bch1+200=297ch1+

16、200=)ch1+256=353ch1+256=a 摸索題:用字符形式輸出一個大于256的數值,會獵取啥結論?青島大學軟件技術學院1.字符串常量的概念和字符串長度字符串常量的概念和字符串長度字符串常量是用一對雙引號括起來的如果干字符序列字符串常量是用一對雙引號括起來的如果干字符序列.字符串中字符的個數稱為字符串長度字符串中字符的個數稱為字符串長度.長度為長度為0的字符串(即一個字的字符串(即一個字符都沒有的字符串)稱為空串符都沒有的字符串)稱為空串,示意為示意為“ ” (一對緊連的雙引號)(一對緊連的雙引號).例似例似,“How do you do.”、“Good morning.”等等,根基

17、上字符串常根基上字符串常量量,其長度分不為其長度分不為14和和13(空格也是一個字符)(空格也是一個字符). 似果反歪杠和雙引號做為字符串中的有效字符似果反歪杠和雙引號做為字符串中的有效字符,那么必須使用轉義那么必須使用轉義字符字符.例似例似:(1)C:msdosv6.22 C:msdosv6.22 (2)I say:Goodbye! I say:Goodbye!“3.6.3 字符串常量字符串常量青島大學軟件技術學院2.字符串的存儲字符串的存儲C語言規定語言規定:在存儲字符串常量時在存儲字符串常量時,由系統在字符串的末尾自由系統在字符串的末尾自動加一個動加一個0做為字符串的結束標記做為字符串的

18、結束標記.注重注重:在源程序中書寫字符串常量時在源程序中書寫字符串常量時,不必加結束字符不必加結束字符0,否否那么畫蛇添足那么畫蛇添足. 似果有一個字符串為似果有一個字符串為“CHINA”,那么它在內存中的現實存儲那么它在內存中的現實存儲似下所示似下所示:末了一個字符末了一個字符0是系統自動加上的是系統自動加上的,它占用字節而非字它占用字節而非字節內存空間節內存空間.0ANIHC青島大學軟件技術學院綜上所述,字符常量A與字符串常量A是兩回事:(1)定界符差別:字符常量使用單引號,而字符串常量使用雙引號;(2)長度差別:字符常量的長度固定為1,而字符串常量的長度,能夠是0,也能夠是某個整數;(3

19、)存儲要求差別:字符常量存儲的是字符的ASCII碼值,而字符串常量,除了要存儲有效的字符外,還要存儲一個結束標記0.青島大學軟件技術學院3.7 算術運算與算術表達式算術運算與算術表達式在語言中,除操縱語句和輸入輸出函數外,其它全部根基操縱都做為運算符操作. 1.五種根基算術運算符 +、-(減法取負)、*、%(求余數)(1)對于除法運算C語言規定:兩個整數相除,其商為整數,小數部分被舍舍.例似,5 2 = 2. (2)對于求余數運算要求兩側的操縱數均為整型信息,否那么犯錯. 2.表達式和算術表達式(1)表達式的概念 用運算符和括號將運算對象(常量、變量和函數等)毗鄰起來的、吻合語言語法法那么的式

20、子,稱為表達式.青島大學軟件技術學院 單個常量、變量或函數,能夠看作是表達式的一種特例.將單個常量、變量或函數構成的表達式稱為簡單表達式,其它表達式稱之為復雜表達式.(2)算術表達式的概念表達式中的運算符根基上算術運算符.例似,3 + 6 * 9、(x + y) 2 - 1等,根基上算術表達式.良好的源程序書寫風俗:在表達式中,在雙目運算符的左右兩側各加一個空格,可增加程序的可讀性.請對比表達式“ (x + y) 2 1”與“(x+y)21”,您信任哪個的可讀性更好部分?青島大學軟件技術學院(1)語言規定了運算符的優先級和聯合性. 所謂聯合性是指,當一個操縱數兩側的運算符具有一樣的優先級時,該

21、操縱數是先與左邊的運算符聯合,仍是先與右邊的運算符聯合.自左到右的聯合方向,稱為左聯合性.反之,稱為右聯合性.聯合性是語言的獨有概念.除單目運算符、賦值運算符和前提運算符是右聯合性外,其它運算符根基上左聯合性.(2)表達式求值1)按運算符的優先級高低次序履行.例似,先乘除后加減.2)似果在一個運算對象(或稱操縱數)兩側的運算符的優先級一樣,那么按語言規定的聯合方向(聯合性)履行.例似,算術運算符的聯合方向是“自左到右”,即:在履行“a b + c”時,變量b先與減號聯合,履行“a - b”;接著再履行加c的運算.3.運算符的優先級與聯合性運算符的優先級與聯合性青島大學軟件技術學院(1) 在語言

22、中,整型、實型和字符型信息間能夠混合運算(因為字符信息與整型信息能夠通用).似果一個運算符兩側的操縱數的信息類型差別,那么系統按“先變形、后運算”的原那么,第一步將信息自動變形成同一類型,接著在同一類型信息間履行運算.變形法那么似圖2-5所示.1)橫向向左的箭頭,示意必須的變形.char和short 型必須變形成 int 型,float型必須變形成double型. 2)縱向向上的箭頭,示意差別類型的變形方向. 例似,int型與double型信息履行混合運算,那么先將int型信息變形成double型,接著在兩個同類型的信息間履行運算,結論為double型. 注重:箭頭方向只示意信息類型由低向高變

23、形,不要懂得為int型先變形成unsigned型,再變形成long型,末了變形成double型.4.信息類型變形信息類型變形青島大學軟件技術學院(2)除自動變形外,語言也許可強制變形.信息類型強制變形的一樣標準為: (要變形成的信息類型)(被變形的表達式)當被變形的表達式是一個簡單表達式時,外頭的一對圓括號能夠缺省.例似,(double)a (等價于(double)(a) *將變量a的值變形成double型*(int)(x + y) *將x+y的結論變形成int型*(float)5 2(等價于(float)(5)2) *將5變形成實型,再除以2(=2.5)*(float)(5 2) *將5整除

24、2的結論(2)變形成實型(2.0)*注重:強制變形類型獵取的是一個所需類型的中間量,原表達式類型同時不產生改變.例似,(double)a 只是將變量a的值變形成一個double型的中間量,其信息類型同時未變形成double型.青島大學軟件技術學院3.8 賦值運算與賦值表達式賦值運算與賦值表達式 1.賦值運算賦值運算 賦值符號賦值符號“=”便是賦值運算符便是賦值運算符,它的作用是將一它的作用是將一個表達式的值賦給一個變量個表達式的值賦給一個變量. 賦值運算符的一樣形式為賦值運算符的一樣形式為: 變量變量 = 賦值表達式賦值表達式 例似例似,x = 5 y = (float)5 2 似果表達式值的

25、類型似果表達式值的類型,與被賦值變量的類型不一與被賦值變量的類型不一致致,但根基上數值型或字符型時但根基上數值型或字符型時,系統自動地將表達式系統自動地將表達式的值變形成被賦值變量的信息類型的值變形成被賦值變量的信息類型,接著再賦值給變接著再賦值給變量量. 摸索題摸索題:假定變量假定變量num的信息類型為的信息類型為float,其值為其值為2.5,那么履行那么履行“num = (int)num”后后,num的值等于幾?的值等于幾?青島大學軟件技術學院復合賦值運算符是由賦值運算符之前再加一個雙目運算符構成的復合賦值運算符是由賦值運算符之前再加一個雙目運算符構成的.復合賦值運算的一樣標準為復合賦值

26、運算的一樣標準為: 變量變量 雙目運算符雙目運算符 = 表達式表達式 復合賦值運算符復合賦值運算符它等價于它等價于:變量變量 = 變量變量 雙目運算符雙目運算符 (表達式表達式).當表達式為簡單表達式時當表達式為簡單表達式時,表達式外的一對圓括號才可缺省表達式外的一對圓括號才可缺省,否那么大否那么大概犯錯概犯錯.例似例似,x += 3 * 等價于等價于x=x+3 * y *= x + 6* 等價于等價于y=y*(x+6),而不是而不是y=y*x+6 *C語言規定的語言規定的10種復合賦值運算符似下種復合賦值運算符似下:+=,-=,*=,=,%=; *復合算術運算符(復合算術運算符(5個)個)*

27、&=,=,|=,=; *復合位運算符(復合位運算符(5個)個)*2.復合賦值運算復合賦值運算青島大學軟件技術學院由賦值運算符或復合賦值運算符,將一個變量和一個表達式毗鄰起來的表達式,稱為賦值表達式.(1)一樣標準 變量 (復合)賦值運算符 表達式(2)賦值表達式的值任何一個表達式都有一個值,賦值表達式也不破例.被賦值變量的值,便是賦值表達式的值.例似,“a = 5”那個賦值表達式,變量a的值“”便是它的值.3.賦值表達式賦值表達式青島大學軟件技術學院3.9 C語言特有的運算和運算符語言特有的運算和運算符3.9.1 自增(自增(+)、自減()、自減(-)運算)運算 1.作用作用 自增運算

28、使單個變量的值增自增運算使單個變量的值增,自減運算使單個變量的值減自減運算使單個變量的值減. 2.用法與運算法那么用法與運算法那么 自增、自減運算符都有兩種用法自增、自減運算符都有兩種用法: (1)前置運算)前置運算運算符放在變量之前運算符放在變量之前:變量、變量變量、變量 先使變量的值增(或減)先使變量的值增(或減),接著再以改變后的值介入其它運算接著再以改變后的值介入其它運算,即即先增減、后運算先增減、后運算. (2)后置運算)后置運算運算符放在變量之后運算符放在變量之后:變量、變量變量、變量 變量先介入其它運算變量先介入其它運算,接著再使變量的值增(或減)接著再使變量的值增(或減),即先

29、運算、即先運算、后增減后增減.青島大學軟件技術學院main() int x=6, y; printf(x=%dn,x); *輸出x的初值* y = +x; *前置運算* printf(y=+x: x=%d,y=%dn,x,y); y = x-; *后置運算* printf(y=x-: x=%d,y=%dn,x,y); 程序運行結論:x=6y=+x: x=7,y=7y=x-: x=6,y=7 案例3.4 自增、自減運算符的用法與運算法那么示例.*程序功能:自增、自減運算符的用法與運算法那么示例*青島大學軟件技術學院摸索題摸索題:似果將案例似果將案例“y=+x;”語句中的前置運算改為后置語句中的前

30、置運算改為后置(y=x+;),“y=x-;”語句中的后置運算改為前置(語句中的后置運算改為前置(y=-x;),程序程序運行結論會似何?運行結論會似何?3.講明講明(1)自增、自減運算)自增、自減運算,常用于循環語句中常用于循環語句中,使循環操縱變量加使循環操縱變量加(或減)(或減),以及指針變量中以及指針變量中,使指針指向下(或上)一個地址使指針指向下(或上)一個地址.(2)自增、自減運算符)自增、自減運算符,不能用于常量和表達式不能用于常量和表達式.例似例似,5+、-(a+b)等根基上非法的等根基上非法的.(3)在表達式中)在表達式中,接連使同一變量履行自增或自減運算時接連使同一變量履行自增

31、或自減運算時,非非常簡單犯錯常簡單犯錯,所以最好幸免這種用法所以最好幸免這種用法.青島大學軟件技術學院語言提供一種用逗號運算符“,”毗鄰起來的式子,稱為逗號表達式.逗號運算符又稱次序求值運算符.1.一樣形式 表達式, 表達式, , 表達式n2.求解環節自左到右,依次統計各表達式的值,“表達式n” 的值即為整個逗號表達式的值.例似,逗號表達式“a = 3 * 5, a * 4”的值=60:先求解a = 3 * 5,得a=15;再求a * 4 = 60,所以逗號表達式的值=60.又例似,逗號表達式“(a = 3 * 5, a * 4), a + 5”的值=20:先求解a = 3 * 5,得a=15

32、;再求a * 4=60;末了求解a + 5=20,所以逗號表達式的值=20.注重:同時不是任何地點表現的逗號,根基上逗號運算符.非常多情況下,逗號僅用作分隔符.3.9.2 逗號運算(逗號運算(,)及其表達式)及其表達式青島大學軟件技術學院3.10 次序結構程序設計次序結構程序設計為了讓統計機操作各種信息,第一步便應該把源信息輸入到統計機中;統計機操作結束后,再將意圖信息信息以人能夠識不的方式輸出.C語言中的輸入輸出操縱,是由C語言編譯系統提供的庫函數來實現.關鍵輸入輸出函數有:標準化輸出:printf()函數標準化輸入:scanf()函數單個字符輸入輸出:getchar()和putchar()

33、函數青島大學軟件技術學院3.10.1 標準化輸出標準化輸出printf()函數函數 printf()函數的作用:向統計機系統默認的輸出設備(一樣指終端或表現器)輸出一個或多個隨意率性類型的信息.一. printf()函數的一樣標準案例3.5 已知圓半徑radius=1.5,求圓周長和圓面積.main() float radius,length,area,pi=3.1415926; radius=1.5; length=2*pi*radius;*求圓周長* area=pi*radius*radius; *求圓面積* printf(“radius=%fn”,radius);*輸出圓半徑* prin

34、tf(“length=%7.2f,area=%7.2fn”,length,area); *輸出圓周長、面積* 青島大學軟件技術學院 程序運行結論似下: radius=1.500000 length= 9.42,area= 7.07 printf()函數的一樣標準似下:printf(標準字符串 ,輸出項表); 1標準字符串.“標準字符串”也稱“變形操縱字符串”,能夠見諒三種字符: (1)標準指示符.標準指示符的一樣形式似下:%標記寬度.精度F|N|h|L類型 青島大學軟件技術學院 (2)轉義字符 例似,案例3.5中printf()函數中的n便是轉義字符,輸出時產生一個“換行”操縱. (3)一樣字

35、符除標準指示符和轉義字符之外的其它字符.標準字符串中的一樣字符,原樣輸出. 例似,案例3.5中“printf(radius=%fn, radius);”語句中的“radius=”,“printf(length=%7.2f,area=%7.2fn, length,area);”語句中的“length=”、“area=”等根基上一樣字符. 2輸出項表 輸出項表是可選的.似果要輸出的信息不只1個,相鄰2個之間用逗號分開.下面的printf()函數根基上合法的: (1)printf(I am a student.n); (2)printf(%d,3+2); (3)printf(a=%f b=%5dn,

36、 a, a+3);必須突出:“標準字符串”中的標準指示符,必須與“輸出項表”中、輸出項的信息類型一致,否那么會引起輸犯錯誤.青島大學軟件技術學院 二二. 標準指示符標準指示符 輸出差別類型的信息輸出差別類型的信息,要使用差別的類型變形字符要使用差別的類型變形字符. 1類型變形字符類型變形字符d以帶符號的十進制整數形式輸出以帶符號的十進制整數形式輸出. 案例案例3.6 類型變形字符類型變形字符d的使用的使用. main() int num1=123; long num2=123456; *用用3種差別標準種差別標準,輸出輸出int型信息型信息num1的值的值* printf(num1=%d,nu

37、m1=%5d,num1=%-5d,num1=%2dn,num1,num1,num1,num1); *用用3種差別標準種差別標準,輸出輸出long型信息型信息num2的值的值* printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,num2,num2); printf(num1=%ldn,num1); 青島大學軟件技術學院程序運行結論似下:num1=123,num1=123,num1=123,num1=123num2=123456,num2=123456,num2=123456num1=16908411對整數,還可用八進制、無符號形式(%o(小寫字母o))和十六進制

38、、無符號形式(%x)輸出.對unsigned型信息,也可用%u標準符,以十進制、無符號形式輸出.所謂無符號形式是指,不論正數仍是負數,系同一律當作無符號整數來輸出.例似,printf(%d,%o,%xn,-1,-1,-1);青島大學軟件技術學院 案例案例3.7 類型變形字符類型變形字符f的使用的使用. main( )float f=123.456; double d1,d2; d1=1111111111111.111111111; d2=2222222222222.222222222; printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f); printf

39、(d1+d2=%fn,d1+d2); 程序運行結論似下程序運行結論似下: 123.456001,123.456001,123.46,123.46,123.46 d1+d2=3333333333333.3330102 2類型變形字符類型變形字符ff以小數形式、按系統默認的寬度以小數形式、按系統默認的寬度, ,輸出單輸出單精度和雙精度實數精度和雙精度實數. .青島大學軟件技術學院 本案例程序的輸出結論中,信息123.456001和3333333333333.333010中的001和010根基上無意義的,因為它們超出了有效數字的范疇. 對實數,也可使用標準符%e,以規格指數形式輸出:尾數中的整數部分

40、大于等于1、小于10,小數點占一位,尾數中的小數部分占5位;指數部分占4位(似e-03),其中e占一位,指數符號占一位,指數占2位,共計11位. 也可使用標準符%g,讓系統依照數值的大小,自動挑選%f或%e標準、且不輸出無意義的零.青島大學軟件技術學院 3類型變形字符類型變形字符c輸出一個字符(只占一列寬度)輸出一個字符(只占一列寬度).案例案例3.8 類型變形字符類型變形字符c的使用的使用. main() char c=A; int i=65; printf(c=%c,%5c,%dn,c,c,c); printf(i=%d,%c,i,i); 程序運行結論似下程序運行結論似下: c=A,A,6

41、5 i=65,A 需要突出的是需要突出的是:在在C語言中語言中,整數能夠用字符形式輸出整數能夠用字符形式輸出,字符信息也能字符信息也能夠用整數形式輸出夠用整數形式輸出.將整數用字符形式輸出時將整數用字符形式輸出時,系統第一步求該數與系統第一步求該數與256的的余數余數,接著將余數做為接著將余數做為ASCII碼碼,變形成相應的字符輸出變形成相應的字符輸出.青島大學軟件技術學院 4類型變形字符類型變形字符s輸出一個字符串輸出一個字符串.案例案例3.9 類型變形字符類型變形字符s的使用的使用. main() printf(%s,%5s,%-10s,Internet,Internet,Internet

42、); printf(%10.5s,%-10.5s,%4.5sn,Internet,Internet,Internet); 程序運行結論似下程序運行結論似下:Internet,Internet,Internet,Inter,Inter,Inter注重注重:系統輸出字符和字符串時系統輸出字符和字符串時,不輸出單引號和雙引號不輸出單引號和雙引號.青島大學軟件技術學院 三三. . 使用講明使用講明 (1 1)printf()printf()能夠輸出常量、變量和表達式的值能夠輸出常量、變量和表達式的值. .但標準操縱中的標但標準操縱中的標準講明符準講明符, ,必須按從左到右的次序必須按從左到右的次序,

43、,與輸出項表中的每個信息一一對應與輸出項表中的每個信息一一對應, ,否那么犯錯否那么犯錯. . 例似例似,printf(str=%s, f=%d, i=%fn, Internet, 1.0 2.0, ,printf(str=%s, f=%d, i=%fn, Internet, 1.0 2.0, 3 + 5, CHINA);3 + 5, CHINA);是錯誤的是錯誤的. . (2 2)標準字符)標準字符x x、e e、g g能夠用小寫字母能夠用小寫字母, ,也能夠用大寫字母也能夠用大寫字母. .使用使用大寫字母時大寫字母時, ,輸出信息中見諒的字母也大寫輸出信息中見諒的字母也大寫. .除了除了x

44、 x、e e、g g標準字符外標準字符外, ,其其它標準字符必須用小寫字母它標準字符必須用小寫字母. . 例似例似,%f,%f不能寫成不能寫成%F.%F. (3 3)標準字符緊跟在)標準字符緊跟在“%”%”背面便做為標準字符背面便做為標準字符, ,否那么將做為一否那么將做為一樣字符使用(原樣輸出)樣字符使用(原樣輸出). . 例似例似,“printf(”c=%c, f=%fn“, c, f);”,“printf(”c=%c, f=%fn“, c, f);”中的第一個中的第一個c c和和f,f,根根基上一樣字符基上一樣字符. .青島大學軟件技術學院3.10.2 標準化輸入標準化輸入scanf()

45、函數函數scanf()函數是用來從外部輸入設備向統計機主機輸入信息的. 一. scanf()函數的一樣標準 案例3.10 已知圓柱體的底半徑radius=1.5,高high=2.0,求其體積. main() float radius=1.5, high=2.0, pi=3.14159, vol; vol=pi*radius*radius*high; *求體積* printf(“vol=%7.2fn”,vol);*輸出求出的體積* 案例3.11 已知圓柱體的底半徑為radius,高為high,求其體積.*功能:講明函數scanf()的標準及作用.*青島大學軟件技術學院main() float r

46、adius,high,vol,pi=3.1415926; printf(Please input radius & high: ); scanf(%f%f,&radius,&high); *從鍵盤輸入兩個實數賦給變量r,h* vol=pi*radius*radius*high; printf(radius=%7.2f, high=%7.2f, vol=%7.2fn,radius,high,vol); 程序運行結論似下: Please input radius & high: 1.52.0 radius=1.50,high=2.00,vol=14.14青島大學軟件

47、技術學院 在程序中給統計機提供信息,能夠用賦值語句,也能夠用輸入函數.在C語言中,可使用scanf()函數,通過鍵盤輸入,給統計機同時提供多個、隨意率性的信息.1. scanf()函數的一樣標準scanf(標準字符串, 輸入項首地址表);(1)標準字符串.標準字符串能夠見諒3種類型的字符:標準指示符、空白字符(空格、Tab鍵和回車鍵)和非空白字符(又稱一樣字符).標準指示符與printf()函數的相近,空白字符做為相鄰2個輸入信息的缺省分隔符,非空白字符在輸入有效信息時,必須原樣共同輸入.青島大學軟件技術學院(2)輸入項首地址表由如果干個輸入項首地址組成,相鄰2個輸入項首地址之間,用逗號分開.

48、輸入項首地址表中的地址,能夠是變量的首地址,也能夠是字符數組名或指針變量.變量首地址的示意方式: &變量名其中“&”是地址運算符.例似,案例2.11中的“&radius”是指變量radius在內存中的首地址. 2scanf()函數的功能:從鍵盤上接收標準化輸入.運行案例3.11的程序時,從鍵盤上輸入2個實數,分不存入&radius、&high起始的存儲單元中,即輸入兩個實數分不賦給radius和high. 青島大學軟件技術學院 二二. 標準指示符標準指示符 標準指示符的一樣形式為標準指示符的一樣形式為:% * 寬度寬度 F|N h|l 類類型字符型字符

49、1類型字符類型字符 類型字符似表類型字符似表3-6所示所示.例似例似,在在案例案例3.11的的scanf()函數語句中函數語句中,標準字符串標準字符串“%f%f”. 2寬度寬度n 指定該項輸入信息所占列數為指定該項輸入信息所占列數為n. 換句話講換句話講,讀取輸入信息中相應的讀取輸入信息中相應的n位位,但按需要的位但按需要的位數賦給相應的變量數賦給相應的變量,多余部分被舍舍多余部分被舍舍. 例似例似,scanf(%3c%3c,&ch1,&ch2); printf(ch1=%c,ch2=%cn,ch1,ch2); 假定輸入假定輸入“abcdefg”,那么系統將讀取的那么系統將讀取

50、的“abc”中的中的“a”賦給變量賦給變量ch1;將讀取的;將讀取的“def”中的中的“d”賦給變量賦給變量ch2,所以所以printf()函數的輸出結論為函數的輸出結論為:ch1=a,ch2=d.青島大學軟件技術學院 3賦值抑制字符賦值抑制字符* 示意本輸入項對應的信息讀入后示意本輸入項對應的信息讀入后,不賦給相應的變量(該變量不賦給相應的變量(該變量由下一個標準指示符輸入)由下一個標準指示符輸入). 例似例似,scanf(%2d%*2d%3d,&num1,&num2); printf(num1=%d,num2=%dn,num1,num2); 假定輸入假定輸入“1234567

51、89”,那么系統將讀取那么系統將讀取“12”同時賦值給同時賦值給num1;讀取;讀取“34”、但舍舍掉(、但舍舍掉(“*”的作用);讀取的作用);讀取“567”同時同時賦 值 給賦 值 給 n u m 2 . 所 以所 以 , p r i n t f ( ) 函 數 的 輸 出 結 論函 數 的 輸 出 結 論為為:num1=12,num2=567. 4類型修飾符類型修飾符F、N、h、l. 其含義與其含義與printf()中的一樣中的一樣,分不為遠指針、近指針、短整型和分不為遠指針、近指針、短整型和長整型長整型.青島大學軟件技術學院 三三. 信息輸入操縱信息輸入操縱 1似果相鄰似果相鄰2個標準

52、指示符之間個標準指示符之間,不指定信息分不指定信息分隔符(似逗號、冒號等)隔符(似逗號、冒號等),那么相應的那么相應的2個輸入信息之個輸入信息之間間,到少用一個空格分開到少用一個空格分開,大概用大概用Tab鍵分開鍵分開,大概輸入大概輸入1個信息后個信息后,按回車按回車,接著再輸入下接著再輸入下1個信息個信息. 例似例似,scanf(%d%d,&num1,&num2); 假定給假定給num1輸入輸入12,給給num2輸入輸入36,那么精確那么精確的輸入操縱為的輸入操縱為:1236 大概大概:12 36 注注:使用使用“ ”符號示意按回車鍵操縱符號示意按回車鍵操縱,在輸入信息在輸入

53、信息操縱中的作用是操縱中的作用是,關照系統輸入操縱結束關照系統輸入操縱結束.青島大學軟件技術學院 2“標準字符串”中表現的一樣字符(包羅轉義字符形式的字符),務必原樣輸入. 例似,scanf(%d,%d,&num1,&num2); 假定給num1輸入12,給num2輸入36,精確的輸入操縱為:12,36 另外,scanf()函數中、標準字符串內的轉義字符(似n),系統同時不把它當轉義字符來解講,從而產生一個操縱操縱,而是將其視為一樣字符,所以也要原樣輸入. 例似:scanf(num1=%d,num2=%dn,&num1,&num2); 假定給num1輸入12,給

54、num2輸入36,精確的輸入操縱為: num1=12,num2=36n青島大學軟件技術學院 提高人機交互性定見提高人機交互性定見:為改善人機交互性為改善人機交互性,同時簡化輸入操縱同時簡化輸入操縱,在設計輸入操縱時在設計輸入操縱時,一樣先用一樣先用printf()函數輸出一個提示信息函數輸出一個提示信息,再用再用scanf()函數履行信息輸入函數履行信息輸入. 例似例似,將將scanf(num1=%d,num2=%dn,&num1,&num2);改為改為: printf(num1=); scanf(%d,&num1); printf(num2=); scanf(%d,&

55、amp;num2); 3輸入信息時輸入信息時,遇到以下情況遇到以下情況,系統信任該信息結束系統信任該信息結束: (1)遇到空格)遇到空格,大概回車鍵大概回車鍵,大概大概Tab鍵鍵. (2)遇到輸入域寬度結束)遇到輸入域寬度結束.例似例似“%3d”,只取只取3列列. (3)遇到非法輸入)遇到非法輸入.例似例似,在輸入數值信息時在輸入數值信息時,遇到字母等非數遇到字母等非數值符號值符號(數值符號僅由數字字符數值符號僅由數字字符0-9、小數點和正負號構成、小數點和正負號構成).青島大學軟件技術學院 4使用標準講明符“%c”輸入單個字符時,空格和轉 義字符均做為有效字符被輸入. 例似,scanf(%c

56、%c%c,&ch1,&ch2,&ch3); printf(ch1=%c,ch2=%c,ch3=%cn,ch1,ch2,ch3); 假定輸入:ABC ,那么系統將字母A賦值給ch1,空格賦值給ch2,字母B賦值給ch3. 青島大學軟件技術學院3.10.3 單個字符輸入輸出單個字符輸入輸出getchar()和和 putchar()函數函數一一. 單個字符的輸出單個字符的輸出putchar()函數函數案例案例3.12 putchar() 函數的標準和使用方式函數的標準和使用方式.*功能功能:講明講明putchar()函數的標準和使用方式函數的標準和使用方式.*#include

57、 stdio.h*編譯預操作號令編譯預操作號令:文件見諒文件見諒*main() char ch1=N, ch2=E, ch3=W; putchar(ch1); putchar(ch2); putchar(ch3);*輸出輸出* putchar(n); putchar(ch1); putchar(n);*輸出輸出ch1的值的值,同時換行同時換行* putchar(E); putchar(n);*輸出字符輸出字符E,同時換行同時換行* putchar(ch3); putchar(n); 青島大學軟件技術學院程序運行結論似下:NEWNEW1putchar()函數的標準: putchar(ch); 其中ch能夠是一個字符變量或常量,也能夠是一個轉義字符.2putchar()函數的作用:向終端輸出一個字符.(1)putchar()函數只能用于單個字符的輸出,且一次只能輸出一個字符.另外,從功能角度來看,printf()函數能夠完全代替putchar()函數.(2)在程序中使用putchar()函數,務必

溫馨提示

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

評論

0/150

提交評論