C語言程序設計第二版ppt課件(完整版)_第1頁
C語言程序設計第二版ppt課件(完整版)_第2頁
C語言程序設計第二版ppt課件(完整版)_第3頁
C語言程序設計第二版ppt課件(完整版)_第4頁
C語言程序設計第二版ppt課件(完整版)_第5頁
已閱讀5頁,還剩490頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設計(第二版)第一章 C程序設計初步知識本章目錄1.1 簡介C語言發(fā)展史及特點 1.2 C語言程序的基本標識符 1.3 C程序的舉例1.4 C語言的編譯環(huán)境 1.1簡介C語言發(fā)展史及特點1C語言的發(fā)展史 程序設計語言是人與計算機進行信息交流的工具。從1954年第一種高級語言FORTRAN問世后不久,不同風格、不同用途、不同規(guī)模、不同版本的程序設計語言風涌而起。在這些語言中,C語言以其高效、靈活、功能豐富,表達力強,移植性好而受青睞。1.1簡介C語言發(fā)展史及特點2C語言的特點 C語言是一種模塊化的程序設計語言。結構化程序設計語言,直接支持順序、分支和循環(huán)三種典型的基本結構,是程序設計便

2、于使用“自頂向下逐步求精”的結構化程序設計技術。C語言通常被稱為中級語言,這并不意味著C語言的功能不如高級語言,而是因為它把高級語言的先進思想與匯編語言的控制和靈活性有機結合了起來。語言簡潔,結構緊湊,使用方便、靈活。運算極其豐富,數(shù)據(jù)處理能力強。C語言一共有34種運算符。可移植性好。C語言程序基本上可以不作任何修改,就能運行于各種不同型號的計算機和各種操作系統(tǒng)環(huán)境上??梢灾苯诱{(diào)用系統(tǒng)功能,實現(xiàn)對硬件的操作。1.2 C語言程序的基本標識符任何一種高級語言,都有自己的基本詞匯符號和語法規(guī)則,程序代碼都是由這些基本詞匯符號根據(jù)該語言規(guī)則編寫而成,C語言也不例外。C語言規(guī)定了其所需要的基本字符集和標

3、識符。 1.2 C語言程序的基本標識符1.字符集 在計算機鍵盤上有的字符都可以作為C語言的有效字符。滿足C語言文法要求的字符集如下:1)英文字母az,AZ;2)阿拉伯數(shù)字09;3)特殊符號(下表) +_(下劃線)#*(.&空格/):;%?“=|1.2 C語言程序的基本標識符2.標識符 C語言的標識符主要用來表示常量、變量、函數(shù)和類型的名字,是只起標識作用的一類符號,標識符由數(shù)字、下劃線或英文字母構成且第一個必須是字母或下劃線。它包括如下三個類型:1)關鍵字 所謂關鍵字,就是這樣一類標識符,其每一個都有特定含義,不允許用戶把它們作為變量名使用,C語言的關鍵字都用小寫英文字母表示,共有常用的36個

4、關鍵字,如下表1.2。表1.2 C語言的關鍵字autodefaultfloatlongstaticvoid breakdoforregisterstructvolatilecasedoublegotorestrictswitchwhilecharelseifreturntypedefconstenuminlineshortunioncontinueexternint signedunsigned1.2 C語言程序的基本標識符2)預定義標識符 除了上述保留字外,還有一類具有特殊含義的標識符,它們被用作庫函數(shù)名和預編譯命令,這類標識符在c語言中成為預定義標識符。一般來說不要把預定義標識符再定義為其

5、他標識符(用戶定義標識符)使用。 預定義標識符包括預編譯程序命令和c編譯系統(tǒng)提供的庫函數(shù)名。其中預編譯程序命令有:define undef include ifdef ifndef endif line1.2 C語言程序的基本標識符3)用戶定義標識符 用戶定義標識符也就是名字是用戶根據(jù)自己的需要定義的一類標識符。用于標識變量名、符號常量名、用戶定義函數(shù)名、類型名和文件指針名等。這類標識符主要由英文字母、數(shù)字和下劃線構成,但開頭字符一定是字母或下劃線,下劃線(_)起到字母的作用,它還可用于一個長名字的描述。 如有一個變量,名字為checkdiskspace,這樣識別起來就比較困難,如果合理使用下

6、劃線,把它寫成check_disk_space,那么,標識符的可讀性就大大增強。1.3 C程序的舉例例1.1 求一個學生英語、數(shù)學、語文成績的平均分的C語言程序。/*功能:求三個數(shù)的平均值*/main() /* main()稱為主函數(shù)*/float a,b,c,ave; /* 定義a,b,c,ave為實型數(shù)據(jù)*/a=7;b=9;c=12;ave=(a+b+c)/3; /*計算平均值*/printf(ave=%fn,ave); /* 在屏幕上輸出ave的值 */程序運行結果:1.3 C程序的舉例例1.2要求輸入圓半徑值,計算圓面積并輸出的C語言程序。#include #define PI 3.1

7、4159main() /*計算圓的面積*/ int r; float s; scanf(%d,&r); /*輸入圓的半徑*/ s=PI*r*r; printf(s=%fn,s); /*輸出圓的面積的值*/程序運行結果:1.3 C程序的舉例例1.3比較兩個兒童的身高,并輸出最高的身高的C語言程序。main() /*主函數(shù)*/float max(float x,float y); /*對要用的函數(shù)進行聲明*/float num1,num2,num3; /* 定義num1、num2、max為實型變量 */scanf(%f,%f,&num1,&num2); /* 由鍵盤輸入num1、num2的值 */

8、num3=max(num1,num2);printf(max=%fn,num3); /* 在屏幕上輸出調(diào)用max的函數(shù)值 */float max(float x,float y) /* x和y分別取num1和num2傳遞的值*/if(xy) return x; /* 如果xy,將x的值返回給max */ else return y; /* 如果xy不成立,將y的值返回給max */1.3 C程序的舉例程序運行結果:1.3 C程序的舉例結合以上示例,可以看出C語言程序結構有以下基本特點:1C語言程序是由函數(shù)(如:main函數(shù)和max函數(shù))組成的,每一個函數(shù)完成相對獨立的功能。函數(shù)是C語言程序的基

9、本單位。main和max都是函數(shù)名,函數(shù)名后面的一對圓括號“()”是用來寫函數(shù)的參數(shù)的。參數(shù)可以有,也可以沒有,但圓括號不能省略。2函數(shù)體用“”和“”括起來,分別表示函數(shù)的開始和結束。函數(shù)體一般包含聲明部分和執(zhí)行部分。3一個C語言程序總是從main()函數(shù)開始執(zhí)行。如果程序中包含多個函數(shù),從main函數(shù)中開始執(zhí)行,程序執(zhí)行完后在main中結束。1.3 C程序的舉例4C語言編譯系統(tǒng)區(qū)分字母大小寫。C語言把大小寫字母視為兩個不同的字符。5C語言規(guī)定每條語句或數(shù)據(jù)說明均以分號(;)結束。分號是語句不可缺少的組成部分。6 主函數(shù)main()既可以放在max()函數(shù)之前,也可以放在max()函數(shù)之后。習

10、慣上,將主函數(shù)main()放在最前面。7C語言程序中所調(diào)用的函數(shù),既可以是由系統(tǒng)提供的庫函數(shù),也可以是由設計人員自己根據(jù)需要而設計的函數(shù)。例如,在例1.2中,printf()函數(shù)是C語言編譯系統(tǒng)庫函數(shù)中的一個函數(shù),它的作用是在屏幕上按指定格式輸出指定的內(nèi)容;max()函數(shù)是由用戶自己設計的函數(shù),它的作用是計算兩個數(shù)中的較大值。 1.4 C語言的編譯環(huán)境 Turbo C(TC)是一個集源程序編輯、編譯、連接、運行和調(diào)試于一體,用菜單驅動的集成軟件環(huán)境,具有使用簡單、方便、速度快、高效、功能強等特點。C語言程序員可在Turbo C環(huán)境下完成所有的工作。 運行C語言程序的一般過程1.4 C語言的編譯

11、環(huán)境 1) 啟動TC,進入TC集成環(huán)境。2) 編輯。如果源程序存在語法錯誤,則修改源程序中的錯誤。3) 編譯。如果編譯成功,則可進行下一步操作,否則返回2)修改源程序,再重新編譯,直至編譯成功。4) 連接。如果連接成功,則可進行下一步操作,否則,根據(jù)系統(tǒng)的下一步提示,進行相應修改,再重新連接,直至連接成功。5) 運行及查看結果。通過觀察程序運行結果,驗證程序的正確性。如果出現(xiàn)邏輯錯誤,則必須返回2)修改源程序,再重新編譯、連接和運行,直至程序正確6) 運行結果若正確,便可退出TC集成環(huán)境,結束本次程序運行。1.4 C語言的編譯環(huán)境 2.進入Turbo C(具體操作方法現(xiàn)場演示)1)啟動方式2)

12、主菜單的基本操作3)退出Turbo C3.編寫源程序4.文件保存在編輯源程序過程中,隨時都可以按F2鍵(或File|Save),將當前編輯的文件存盤,然后繼續(xù)編輯。這是一個良好的習慣! 1.4 C語言的編譯環(huán)境 5常用編輯鍵1) 可用Insert鍵控制工作狀態(tài)是否為“插入狀態(tài)”。按下Insert鍵,可看到屏幕編輯窗口上有“Insert”,這時為插入狀態(tài),此時可在屏幕當前光標處插入所要輸入的字符。2) 在插入狀態(tài)下,再按一下Insert鍵可取消插入狀態(tài),狀態(tài)行上的“Insert”標識消失,此時鍵入的字符將覆蓋光標處的字符。3)Delete鍵將刪除光標所在的字符。4)Ctrl+Y鍵,可刪除光標所在

13、的一行。5)Ctrl+N鍵,可用來插入一行。 6編譯、連接源程序文件7運行與查看結果1)運行當前正在編輯的源程序文件2) 查看運行結果8. 建立工作環(huán)境本章小結 本章開始介紹了C語言的發(fā)展史及其特點。C語言是一門經(jīng)典的程序設計語言,它的功能豐富、表達能力強、使用靈活、應用面廣、目標程序效率高、可移植性好、能對硬件直接進行操作等優(yōu)點。通過實例介紹了C語言的簡單編程,并進行了總結。一個C語言程序是由一個或多個函數(shù)所組成。函數(shù)包括函數(shù)說明和函數(shù)體兩個部分。在函數(shù)定義之外還可以包含一個說明部分,該說明部分叫做外部說明等。詳細講解了上機過程及編譯和運行環(huán)境。其中包括從編寫好一個C程序到完成運行的基本過程

14、。包括啟動、編輯、編譯、連接、執(zhí)行和運行查看結果等步驟。Turbo C是一個集編輯、編譯、連接、執(zhí)行和調(diào)試于一體的語言程序開發(fā)系統(tǒng),使用非常方便。 Thank You !第二章 數(shù)據(jù)類型、運算符和表達式本章目錄2.1 C語言的數(shù)據(jù)類型 2.2 常量 2.3 變量2.4 運算符和表達式 2.5 數(shù)據(jù)類型的轉換 2.1 C語言的數(shù)據(jù)類型 一個程序應包括數(shù)據(jù)結構和算法。數(shù)據(jù)結構是在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式。算法是如何對數(shù)據(jù)結構進行處理達到編程者的目的的想法,由于每個人的想法不一樣,所以程序代碼有可能不相同,但最后都能達到自己的目的。根據(jù)不同的編程語言,程序的概念可以這樣表示: 程序=算

15、法+數(shù)據(jù)結構+程序設計方法+語言環(huán)境 C語言的數(shù)據(jù)結構是以數(shù)據(jù)類型形式出現(xiàn)的。C的數(shù)據(jù)類型如下: 構造類型 整型int 字符型 char 實型(浮點型) 枚舉類型enum 基本類型 空類型void 指針類型 * 單精度型 float 雙精度型 double數(shù)據(jù)類型 數(shù)組類型 結構體類型struct 共用體類型 union2.2常量 在程序執(zhí)行過程中,其值始終保持不變的量稱之為常量。常量具有一定的類型,類型由其表示形式?jīng)Q定。在C語言中,常量可以分為整型常量、實型常量、字符型常量、字符串常量、符號常量等。 2.2常量1. 整型常量 整型常量就是整型常數(shù),它是一種從字面即可判斷其值的常量。C語言中常

16、量可以用十進制、八進制和十六進制表示。 1十進制整數(shù)。由數(shù)字09組成但第一個數(shù)不能為0的整數(shù) 。如:123,-456,0。 2八進制整數(shù)。以0開頭由07組成的整數(shù)。 如0123表示八進制數(shù)123。 3十六進制整數(shù)。以0 x開頭由數(shù)字09和字母af(AF)組成的的數(shù)。如0 x123,代表數(shù)十六進制的123。 整型常量的寫法一定要合法,下面各數(shù)不合法:078,3a。 其中078表示八進制數(shù),但包含了07以外的數(shù)8。3a表示十進制數(shù),但包含了09以外的字符a。2.2常量2 .實型常量 實數(shù)又稱浮點數(shù),就是日常生活中的帶小數(shù)點的數(shù)。實型常量有兩種表示形式: (1)十進進小數(shù)形式。它由數(shù)字和小數(shù)點組成(

17、注意必須有小數(shù)點)。如.123、123.、123.0、0.0都是十進制小數(shù)形式。其中123.0末尾的數(shù)字0可以省略,.123小數(shù)點前面的0可以省略,0.0可以省略其中一個0但不能都省略。 (2)指數(shù)形式。如123e3或123E3都代表123103。但注意字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須有整數(shù),如e3,2.1e3.5,.e3,e等都不是合法的指數(shù)形式。 一個實數(shù)可以有多種指數(shù)表示形式。例如123.456可以表示為,12.3456e1,1.23456e2,0.123456e3等。把其中的1.23456e2稱為“規(guī)范化的指數(shù)形式”,即在字母e(或E)之前的小數(shù)部分中,小數(shù)點左邊應有一

18、位(且只能有一位)非零的數(shù)字。一個實數(shù)在用指數(shù)形式輸出時,是按規(guī)范化的指數(shù)形式輸出的。例如,指定將實數(shù)5689.65按指數(shù)形式輸出,必然輸出5.68965e+003。2.2常量3.字符型常量 由字符組成的、其值不能被改變的量稱為字符型常量。根據(jù)組成結構的不同,字符型常量可分為字符常量、轉義字符和字符串常量。1字符常量和轉義字符 C的字符常量是用單引號()括起來的一個字符。如a,x, D,? , $等都是字符常量。注意,a和A是不同的字符常量。 除了以上形式的字符常量外,C還允許用一種特殊形式的字符常量,就是以一個“”開關的字符序列。例如,前面已經(jīng)遇到過的,在printf函數(shù)中的n,它代表一個“

19、換行”符。這是一種“控制字符”,在屏幕上是不能顯示的。在程序中也無法用一個一般形式的字符表示,只能采用特殊形式來表示。“”使后跟的一個字符失去了原有的意義,因此又稱作轉義字符。如,n中的“n”不代表字母n,而作為“回車換行”符處理。轉義字符是一種特殊形式的字符常量,主要用以表示控制代碼和圖形符號。常用的轉義字符見下表:2.2常量字符形式等價于ASCII碼轉義字符的意義ax077鳴鈴bx088退格,將當前位置移到前一列fX0C12走紙換頁nX0A10回車換行rX0D13回車,將當前位置移到本行開頭tX099水平制表(跳到下一個tab位置)X5C92反斜杠字符“”X2739單引號字符X2234雙引

20、號字符dddddd代表1-3位八進制數(shù)所代表的字符xhhhh代表1-2位十六進制數(shù)所代表的字符 表中,ddd是用八進制數(shù)表示的ASCII碼。例如:用八進制數(shù)102(相當于十進制數(shù)66)代表ASCII字母“B”;用033代表Esc。從ASCII碼表中能夠查到常用的轉義字符。xhh是用十六進制數(shù)表示的ASCII碼。例如:用x1B同樣可以代替Esc。 由此可知,用轉義字符可以表示任一ASCII碼;并且任一ASCII碼可以有多種表示方法。2.2常量有關字符常量的幾點說明: 1)單引號本身只作定界符使用,而不是字符常量的一部分。 2)因字符“”和“”在字符常量中有特殊用途,因此,他們不能直接作字符常量使

21、用。若要將這兩個字符用作字符常量,應寫為和,即在這些字符前再加一個反斜杠“”。 3)英文字母區(qū)分大小寫。注意,a和A是不同的字符常量。 4)字符常量具有數(shù)值,其值對應于ASCII碼值,是0-255之間的整數(shù)。例如,A的值是65,a為97。因此,字符型常量與整型常量可以混合使用。在不至于引起混淆的情況下,0-255之間的整數(shù)可以用字符常量表示。 例如,把63寫成A-2,反之亦然。 5)輸出字符常量時的輸出格式控制符用%c。2.2常量例2.1 字符型常量與整型常量混合使用實例。要求編程輸出字符“#”以及其ASCII碼值,求a+1的值和輸出其ASCII字符,輸出整數(shù)65以及該數(shù)字所對應的ASCII字

22、符。main()printf(%c , %d n , # , # ) ;printf(%c , %d n, a+1, a+1 ) ;printf(%c , %d n , 65 , 65 ) ;運行結果如下: 2.2常量2字符串常量 字符串常量是一對雙引號括起來的字符序列,如, “How do you do.”, “CHINA”, “a”, “$123.45” 都是字符串常量??梢灾苯虞敵鲆粋€字符串。如 printf(“How do you do.”); 不要將字符常量與字符串常量混淆。a是字符常量,“a”是字符串常量,二者不同。有人不能理解a和“a”究竟有什么區(qū)別?C規(guī)定:在每一個字符串的結尾

23、加一個“字符串結束標志”,以便系統(tǒng)據(jù)此判斷字符串是否結束。C規(guī)定以字符0作為字符串結束標志。0是一個ASSCII碼為0的字符,從ASSCII代碼中可以看到ASSCII碼為0字符是“空操作字符”,即它不引起任何控制動作,是一個不可顯示的字符。如果有一個字符串“CHINA”,實際上在內(nèi)存中是 它的長度不是5個字符,而是6個字符,最后一個字符為0。 CIHNA02.2常量4 符號常量 在程序設計中,對于某些有特定含義的、經(jīng)常使用的常量可以用標識符來代替。用標識符代表常量,可增加程序的可讀性和可維護性。 在C語言中,代表常量的標識符稱作符號常量。符號常量在使用之前必須先定義,符號常量定義的一般格式為:

24、 #define 標識符 常量 其中#define表示宏定義的一個命令,宏定義必須寫在一行上。標識符稱為“宏名”,字符串稱為“宏體”。其功能是把該標識符定義為其后的常量值。一經(jīng)定義,在程序中所有出現(xiàn)該標識符的地方均代表該常量值。習慣上符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區(qū)別。 2.2常量例2.2宏定義的使用#define PI 3.14159 /*宏定義命令定義PI 為3.14159*/main() float s,r; /*s,r定義為實型變量用來存放實型數(shù)據(jù)*/ r=5; /*5賦值給r*/ s=PI*r*r; printf(s=%fn,s);運行結果為:2.2常量使用符

25、號常量的好處是:(1)含義清楚。如上面的程序中,看程序時從PI就可知道它代表“”。因此定義符號常量名時應考慮“見名知意”。(2)在需要改變一個常量時能做到“一改全改”。在定義符號常量時,應注意以下幾點:如果程序中有多個符號常量,必須用多個命令行分別定義。即一行只能定義一個符號常量。#define PI 3.1415926#define TRUE 1符號常量代表的常量可以是前文介紹的各種形式的常量,還可以代表程序的其他語法成分。2.2常量例2.3#define P printfmain()char a,b;a=x;b=y;a=a-32;b=b-32;P(%c,%cn%d,%dn,a,b,a,b)

26、; 運行結果為:這里用P代表了庫函數(shù)名printf,3)符號常量的定義可以放在程序的任何位置,但必須在使用之前預先定義;因此,一般放在程序的開始位置。2.3變量在程序運行過程中,其值可以改變的量稱為變量。一個變量 必須有一個名字即變量名,變量名要遵守標識符的命名規(guī)則。變量名在內(nèi)存中占據(jù)一定的存儲單元。在該存儲單元中存放變量的值。 下面各節(jié)分別介紹整型、實型(浮點型)、字符型變量。2.3變量1.整型變量 1整型變量的分類 整型變量的用來存放整型常量的。根據(jù)數(shù)值的范圍將變量定義為基本整型、短整型或長整型。分別表示: 1)基本整型,以int表示。 2)短整型,以short int表示,或以short

27、表示。 3)長整型,以long int表示,或以long表示。 在Turbo C中一個int型的變量值的范圍-215(215-1),即-3276832767??梢詫⒆兞慷x為“無符號”和“有符號”類型,即加上修飾符unsigned和修飾符signed。如果既不指定為signed,也不指定為unsigned,則隱含為有符號(signed)。歸納起來,可以用以下6種整型變量。即: 有符號基本整型 signed int 無符號基本整型 unsigned int 有符號短整型signed short int 無符號短整型unsigned short int 有符號長整型signed long int

28、無符號長整型unsigned long int2.3變量 標準沒有具體規(guī)定以上各類數(shù)據(jù)所占內(nèi)存字節(jié)數(shù),只要求long型數(shù)據(jù)長度不短于int型,short型不長于int型。具體如何實現(xiàn),由各計算機系統(tǒng)自行決定。Turbo C系統(tǒng)對各類數(shù)據(jù)分配如下: 數(shù)據(jù)類型所占字節(jié)數(shù)(個)所占位數(shù)(bit)int216short 216long 432unsigned int 216unsigned short 216unsigned long 432表2.2 數(shù)據(jù)類型 一個unsigned int型的變量值的范圍065535。 在計算機內(nèi)整形數(shù)據(jù)占2個字節(jié)。以2為例,把2轉化為二進制之后,它的存儲形式為:00

29、000000000000102.3變量2.整型變量的定義 C規(guī)定在程序中所以用到的變量都必須在程序中先定義后使用,即“強制類型定義”。每個變量必須要有確定的類型。整型變量定義的一般形式: 整型數(shù)據(jù)類型名 變量名;例如:int a,b; (指定變量a、b為整形)unsigned short c,d; (指定變量c、d為無符號短整型)long e,f; (指定變量e,f為長整型) 對變量的定義,一般是放在一個函數(shù)的開頭部分的聲明部分(也可以放在函數(shù)中某一分程序內(nèi),但作用域只限它所在的分程序)。C語言允許在一個定義中定義多個變量,變量之間用逗號隔開。變量定義之后,編譯系統(tǒng)就會為其分配相應的存儲空間。

30、 2.3變量例2.4整型變量的定義與使用。main()int a,b; /*定義a,b為基本整型變量*/unsigned u;/*定義u為無符號整型變量*/a=12;u=10;b=a+u;printf(a+u=%dn,b); 運行結果為: 可以看到不同種類的整型數(shù)據(jù)可以進行算術運算。在本例中是int型數(shù)據(jù)與unsigned int 型數(shù)據(jù)進行相加相減運算。 2.3變量3整型號數(shù)據(jù)的溢出 在Turbo C中一個int 型變量的最大允許值為32767,如果再加1,會出現(xiàn)什么情況?例2.5 整型數(shù)據(jù)的溢出。main()int a,b;a =32767;b=a+1;printf(“%d,%d”,a,b

31、); 運行結果為 :2.3變量 2.實型變量 1實型變量的分類 C語言中實型變量用來存放實型常量的。實型變量分為單精度(float型)、雙精度(double型)和長雙精度型(long double)。 數(shù)據(jù)類型 所占字節(jié)數(shù)(個)所占位數(shù)(bit) 有效位數(shù) float 4 32 67 double 8 64 1516表2.32實型變量的定義對每一個實型變量都應在使用前必須先定義。實型變量定義的一般形式:實型數(shù)據(jù)類型名 變量名;例如float x,y, (指定x,y為單精度實數(shù))double z; (指定z為雙精度實數(shù))2.3變量3實型數(shù)據(jù)的使用 由于實型變量是由有限的存儲單元組成的,因此能提供

32、的有效數(shù)字總是有限的,在有效位以外的數(shù)字將被舍去。由此可能會產(chǎn)生一些誤差。例2.6 實型數(shù)據(jù)的舍入誤差。main()float a,b;a=123456.789e5;b=a+20;printf(a=%fnb=%f,a,b);運行結果為:2.3變量程序內(nèi)printf函數(shù)中的“%f”是輸出一個實數(shù)時的格式符。程序運行時,輸出b的值與a相等。原因是:a的值比20大很多,a+20的理論值應是12345678920,而一個實型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準確地表示該數(shù)。運行程序得到的a和b的值是12345678848.000000,可以看到,前8位是準確的,后幾位是不

33、準確的,把20加到后幾位上,是無意義的。應當避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)。如果想得到預期效果,讀者可以把float改為double類型 。與此類似問題有很多,讀者編程時應當注意。2.3變量3.字符型變量 1字符型變量的分類 字符型變量用來存放字符常量,C語言的字符型變量分為有符號型(char)變量和無符號型(unsigned char)變量。數(shù)據(jù)類型所占字節(jié)數(shù)(個) 所占位數(shù)(bit) 取值范圍有效位數(shù) char 1 8 -128128 67unsigned char 1 8 025515162字符變量的定義 用到字符型變量時必須先定義。請注意字符型變

34、量在內(nèi)存中占用1個字節(jié)的存儲空間,只能放一個字符,不要以為在一個字符變量中可以放一個字符串(包括若干字符)。定義的一般形式:字符型數(shù)據(jù)類型名 變量名char c1,c2;其中c1和c2為字符型變量,各可以放一個字符。 2.3變量 3字符型變量的使用 例2.7:向字符變量賦以整數(shù)。 main() char c1,c2; c1=65; c2=97; printf(c1=%c c2=%cn,c1,c2); printf(c1=%d c2=%dn,c1,c2); 運行結果: 2.3變量 定義c1,c2為字符變量。但在第3和第4行中,將整數(shù)65和97分別賦給c1和c2,它的作用相當于以下兩個賦值語句:

35、c1=A;c2=a; 因為A和a的ASCII碼為65和97。在程序的第3和第4行是把65和97兩個整數(shù)直接存放到c1和c2手內(nèi)存單元中?!?c”是輸出字符時必須使用的格式符??梢钥吹剑鹤址蛿?shù)據(jù)和整型數(shù)據(jù)是通用的。它們既可以用字符格式輸出(用%c),也可以用整數(shù)形式輸出(用%d)。但應注意字符數(shù)據(jù)只占一個字節(jié),它只能存放0255或-128128范圍內(nèi)的整數(shù)。2.3變量 例2.8:大小寫字母的轉換。 main() char c1 , c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(%c %c,c1,c2); 運行結果為:2.3變量 所有用到的變量 “先定義,

36、后使用”。這樣做的目的是: 1凡未被事先定義的,不作為變量名,這就能保證程序中變量名使用得正確。例如,如果在定義部分寫了 int abc; 而在執(zhí)行語句中錯寫成acb。 如: acb=30; 在編譯時檢查出acb未經(jīng)定義,不作為變量名。因此輸出“變量acb未經(jīng)聲明”的信息,便于用戶發(fā)現(xiàn)錯誤,避免變量名使用時出錯。 2每一個變量被指定為一確定類型,在編譯時就能為其分配相應的存儲單元。如指定a、b為int型,Turbo C編譯系統(tǒng)為a和b 各分配兩個字節(jié),并按整數(shù)方式存儲數(shù)據(jù)。 3指定每一變量屬于一個類型,這就便于在編譯時,據(jù)此檢查該變量所進行的運算是否合法。例如,整型變量a和b,可以進行求余運算

37、: a%b %是“求余”,得到a/b的余數(shù)。如果將a、b的指定為實型變量,則不允許進行“求余”運算,在編譯時會給出有關“出錯信息”。2.3變量4.變量賦初值 程序中常需要對一些變量賦初值。賦初值的方式如下: 1語言允許在定義變量的同時使變量初始化。如: int a=3:/*指定a為整型變量,初值為3*/ float f=3.56;/*指定f為實型變量,初值為3.56*/ char c=a;/*指定c為字符型變量,初值為a*/ 2也可以使被定義的變量的一部分賦初值。如 int a,b,c=5; 表示指定a、b、c為整型變量,只對c初始化,c的值為5。 3對于幾個變量同時賦初值。如 int a=3

38、,b=3,c=3; 表示a、b、c的初值都是3。不能寫成: int a=b=c=3; 初始化不是在編譯階段完成的,而是在程序運行時執(zhí)行本函數(shù)時賦予初值的。2.4運算符和表達式 C語言中運算符和表達式數(shù)量很多。豐富的運算符和表達式使C語言功能十分完善。這也是語言的主要特點之一。 C語言的運算符不僅具有不同的優(yōu)先級,而且還有一個特點,就是它的結合性。在表達式中,各運算量參與運算的先后順序不僅要遵守運算符優(yōu)先級別的規(guī)定,還要受運算符結合性的制約,以便確定是自左向右進行運算還是自右向左進行運算。這種結合性是其它高級語言的運算符所沒有的,因此也增加了C語言的復雜性。2.4運算符和表達式 1 .算術運算符

39、和算術表達式 1C語言提供了豐富的算術運算符,能夠參與各種復雜的運算,基本的算術運算符有如下: 1) + 加法運算符,雙目運算符,即應有兩個量參與加法運算。如a+b,4+8等。自左至右結合性。也可以表示取正值運算符,屬于單目運算符,自右至左結合性。 2)- 減法運算符,雙目運算符。也可以表示取負值運算符,屬于單目運算,如-x,-5等,自右至左結合性。 3)* 乘法運算符,雙目運算符,自左至右結合性。 4) / 除法運算符,雙目運算符,自左至右結合性。參與運算量均為整型時,結果也為整型,舍去小數(shù)。如果運算量中有一個是實型,則結果為雙精度實型。2.4運算符和表達式例2.9main()int a=1

40、5,b=2,c;c=a/b;printf(%d ,c);運行結果為: 參與運算量均為整型時,結果也為整型,舍去小數(shù)。如果運算量中有一個是實型,則結果為雙精度實型。2.4運算符和表達式 5)% 求余運算符(模運算符),雙目運算符,自左至右結合性。要求參與運算的量必須為整型。求余運算的結果是兩數(shù)相除后的余數(shù)。如100%3的結果1。1.5%2是非法的。 6)算術運算符中的運算符和數(shù)學中的使用是一樣的,先乘、除和求余后加減。2算術表達式 算術表達式是由算術運算符和括號連接起來的式子,運算對象可以是常量、變量和函數(shù)等。算術表達式的值可以是整型或實型。以下是算術表達式的例子: a+b,(a*2)c,(x+

41、r)*8-(a+b)7, sin(x)+sin(y) 其中sin(x)是求解正弦函數(shù),應用sin(x)時應在程序的開始部分加上#include “math.h”在C語言中使用算術運算符注意的問題: 1)算術表達式中的*不能省略。如求三角形的面積公式s=ab/2;在C語言中寫成:s=a*b/2 2)算術表達式中只能出現(xiàn)C語言中允許使用的運算字符。如數(shù)學面積公式式r2 中的,在C語言中沒有這個字符,我們可以通過宏定義的方法實現(xiàn)。 3)算術表達式中只能通過()來改變運算對象的運算順序。2.4運算符和表達式 2. 自增,自減運算符+ 自增1的運算符,其功能是使變量的值自增1。- 自減1的運算符,其功能

42、是使變量的值自減1。自增1,自減1運算符均屬于單目運算,都具有右結合性??捎幸韵聨追N形式: 1+i i自增1后再參與其它運算。2-i i自減1后再參與其它運算。3i+ i參與運算后,i的值再自增1。4i- i參與運算后,i的值再自減1。 在理解和使用上容易出錯的是i+和i-。特別是當它們出在較復雜的表達式或語句中時,常常難于弄清,因此應仔細分析。2.4運算符和表達式例2.10main()int i=4,a,b,c,d;a=i+;b=+i;c=i-;d=-i;printf(a=%dnb=%dnc=%dnd=%d,a,b,c,d); 運算結果: 2.4運算符和表達式例2.11main()int i

43、=4;printf(“%dn%dn%dn%d”,+i,i+,-i,i-);運行結果: 兩個例子中的區(qū)別在于printf函數(shù),在C語言中printf函數(shù)的參數(shù)應從后向前運算即現(xiàn)算i-,-i,i+,+i。讀者可以上機運行體會。 2.4運算符和表達式 3.賦值運算符和賦值表達式 1 賦值運算符 1) 簡單賦值運算符 “=” 在C語言中,“= ”稱為賦值運算符。它的作用是將一個數(shù)據(jù)賦給一個變量,與數(shù)學中的等號不同,它的結合性是自右至左的。優(yōu)先級僅高于逗號運算符。 2)復合賦值運算符 C語言中提供了+=,-=,*=,=,%=,=,&=,=,|=等復合運算符。在賦值符“=”之前加上其它二目運算符。 2.4

44、運算符和表達式 3.賦值運算符和賦值表達式2賦值表達式 由賦值運算符將變量和表達式連接起來的式子稱為賦值表達式。 1)簡單賦值表達式一般形式為: 變量=表達式 例如: x=a+b w=sin(a)+sin(b) y=i+ 賦值表達式的功能是計算表達式的值再賦予左邊的變量。 a=b=c=5 可理解為 a=(b=(c=5)2.4運算符和表達式2)復合賦值表達式一般形式為: 變量 雙目運算符=表達式例如a+=5 等價于a=a+5x*=y+7 等價于x=x*(y+7)r%=p 等價于r=r%p在C中,凡是表達式可以出現(xiàn)的地方均可出現(xiàn)賦值表達式。例如,式子x=(a=5)+(b=8)是合法的。它的意義是把

45、5賦予a,8賦予b,再把a,b相加,和賦予x ,故x應等于13。在C語言中也可以組成賦值語句,按照C語言規(guī)定,任何表達式在其末尾加上分號就構成為語句。因此如x=8;a=b=c=5;都是賦值語句,在前面各例中我們已大量使用過了。2.4運算符和表達式3賦值運算的類型轉換如果賦值運算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動進行類型轉換,即把賦值號右邊的類型換成左邊的類型。具體規(guī)定如下:1)實型賦予整型,舍去小數(shù)部分。2)整型賦予實型,數(shù)值不變,但將以浮點形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。3)字符型賦予整型,由于字符型為一個字節(jié),而整型為二個字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高

46、八位為0。 4)整型賦予字符型,只把低八位賦予字符量??傊煌蛿?shù)據(jù)間的賦值歸根到底是按照存儲單元的存儲形式直接賦給。2.4運算符和表達式例2.12main() int a,b=65; float x,y=8.88; char c1=k,c2; a=y; x=b; printf(%d,%fn ,a,x); a=c1; c2=b; printf(%d, %c,a,c2); 運行結果為:2.4運算符和表達式 本例說明了賦值運算中的類型轉換規(guī)則。a為整型變量,被賦予實型量y值8.88后,舍去小數(shù)部分只取整數(shù)8。x為實型變量,被賦予整型量b值65,后增加了小數(shù)部分。字符型變量c1的值賦予整型變量a

47、(直接把c1的一個字節(jié)放到了變量a的低字節(jié)中,高字節(jié)補0),整型變量b賦予字符型變量c2 ,是整型變量b的低八位賦給字符型變量c2(b的低八位為01000001,即十進制65,按ASCII碼對應于字符A)。2.4運算符和表達式 4 .逗號運算符和逗號表達式 1逗號運算符 C語言中逗號“,”是一種運算符,稱為逗號運算符。 2逗號表達式 逗號表達式是把兩個表達式連接起來組成一個表達式。 一般形式為: 表達式1,表達式2表達式n 逗號表達式的結合方向是自左至右的,先求解表達式1,然后求解表達式2最后求解表達式n的值,最后最后求解表達式n的值作為整個逗號表達式的值。 例2.13 main() int

48、a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); printf(y=%d,x=%d,y,x); 運行結果為:2.4運算符和表達式 本例中,(x=a+b),(b+c)是一個逗號表達式,y的值是整個逗號表達式的值,也就是表達式(b+c)的值,x是第一個表達式的值。對于逗號表達式還要說明幾點:1)程序中使用逗號表達式,要分別求逗號表達式內(nèi)各表達式的值2)并不是在所有出現(xiàn)逗號的地方都組成逗號表達式,如在變量說明中,函數(shù)參數(shù)表中逗號只是用作各變量之間的間隔符。3)在本章中逗號運算符的優(yōu)先級最低,其次賦值運算符,最高是算術運算符。2.4運算符和表達式 5 .條件運算符1條件運算符 C語言

49、中把“?:”稱作條件運算符。條件運算符要求有三個操作對象,是C語言中唯一的三目運算符,它連接三個運算分量。2條件表達式 一般形式如下: 表達式1?表達式2:表達式3 它的執(zhí)行過程是:先計算表達式1,如果其值為真,則求解表達式2的值,并作為結果值,否則求解表達式3的值作為結果值。例如:max=(ab)?a:b; 該語句執(zhí)行時,當ab條件成立,變量max取a值,否則取b值。2.4運算符和表達式例2.14 main() int a,b; a=2;b=3; printf(%d,(ab)?a:b); 運算結果:條件運算符的優(yōu)先級較低,只高于賦值運算符和逗號運算符。2.4運算符和表達式 6長度運算符 C語

50、言中sizeof()稱作長度運算符。它是單目運算符。主要用于計算變量或數(shù)據(jù)類型所占的內(nèi)存字節(jié)數(shù)的大小。一般形式: 1sizeof(數(shù)據(jù)類型名) 計算數(shù)據(jù)類型在內(nèi)存中的所占的字節(jié)數(shù) 2sizeof(變量名) 計算變量在內(nèi)存中的所占的字節(jié)數(shù)例2.15main()int a; float b;printf(“%d ,%d ,%d ,%d ,%d”,sizeof(a),sizeof(int),sizeof(b),sizeof(float),sizeof(d ouble);2.4運算符和表達式運行結果: a是整型變量所占字節(jié)數(shù)為2,int是整型變量的基數(shù)據(jù)類型所占字節(jié)數(shù)2,b是實型單精度變量所占字節(jié)數(shù)4

51、,float是實型單精度變量類型所占字節(jié)數(shù)4,double是實型雙精度類型所占字節(jié)數(shù)8。2.5數(shù)據(jù)類型的轉換 變量的數(shù)據(jù)類型是可以轉換的。轉換的方法有兩種,一種是自動轉換,一種是強制轉換。 1.自動轉換 自動轉換發(fā)生在不同數(shù)據(jù)類型的量混合運算時,由編譯系統(tǒng)自動完成。自動轉換遵循以下規(guī)則如圖2.1: 1若參與運算量的類型不同,則先轉換成同一類型,然后進行運算。2轉換按數(shù)據(jù)長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型后再進行運算。3所有的浮點運算都是按雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉換成double型,再作運算。4ch

52、ar型和short型參與運算時,必須先轉換成int型。 5在賦值運算中,賦值號兩邊量的數(shù)據(jù)類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。 如果右邊量的數(shù)據(jù)類型長度左邊長時,將丟失一部分數(shù)據(jù),這樣會降低精度。下面程序段表示了類型自動轉換的規(guī)則。2.5數(shù)據(jù)類型的轉換例2.16floatlongunsigned intintchar shortdouble圖2.1main()int s;float a=5.5;s=a;printf(s=%dn,s); 運行結果為: 本例程序中,a為實型變量賦初值5.5;s為整型變量。在執(zhí)行s=a語句后,由于s為整型,賦值結果仍為整型,舍去了小數(shù)部分,結果為5。

53、 2.強制類型轉換 1強制類型轉換運算符()在C語言中稱為強制類型轉換運算符。 一般形式為: (類型說明符) (表達式) 2強制類型轉換運算符的使用 強制類型轉換運算符功能是把表達式的運算結果強制轉換成類型說明符所表示的類型。例如: (float) a 把a轉換為實型 (int)(x+y) 把x+y的結果轉換為整型 3在使用強制轉換時應注意以下問題:1)類型說明符和表達式都必須加括號(2.5數(shù)據(jù)類型的轉換單個變量可以不加括 號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之后再與y相加了。2)無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變量的數(shù)據(jù)長度進行的

54、臨時性轉換,而不改變數(shù)據(jù)說明時對該變量定義的類型。2.5數(shù)據(jù)類型的轉換2.5數(shù)據(jù)類型的轉換例2.17main()float f=5.75;printf(int)f=%d,f=%fn,(int)f,f); 運行結果為:本章小結 本章首先介紹了數(shù)據(jù)類型的概念分類,C語言的基本數(shù)據(jù)類型包括整型、實型、字符型和枚舉(后面的章節(jié)講)。按在程序中值是否可以改變分為常量和變量的。常量可以是整型常量、實型常量、字符型常量、字符串常量和符號常量等幾種。整型常量可以用八進制、十進制和十六進制表示。實型常量可以用小數(shù)和指數(shù)形式表示。字符型常量用單引號括起來的量表示。字符串常量用雙引號括起來的量表示。 變量的應用必須

55、是先定義后使用。變量名必須符合標識符的命名規(guī)則。本章中講的變量有整形變量、實型變量和字符型變量。不同類型的變量占內(nèi)存空間是不一樣的。 C語言提供了豐富的運算符,用它們可以組織各種類型的表達式。使用運算符中一定要注意運算符的運算規(guī)則、優(yōu)先級和結合性。 不同數(shù)據(jù)之間可以進行混合運算。在運算時,先將不同類型的數(shù)據(jù)要先轉化成同一類型,然后再進行計算。數(shù)據(jù)類型的轉換總是從低級別向高級別類型轉換。Thank You !第二章 數(shù)據(jù)類型、運算符和表達式本章目錄2.1 C語言的數(shù)據(jù)類型 2.2 常量 2.3 變量2.4 運算符和表達式 2.5 數(shù)據(jù)類型的轉換 2.1 C語言的數(shù)據(jù)類型 一個程序應包括數(shù)據(jù)結構和

56、算法。數(shù)據(jù)結構是在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式。算法是如何對數(shù)據(jù)結構進行處理達到編程者的目的的想法,由于每個人的想法不一樣,所以程序代碼有可能不相同,但最后都能達到自己的目的。根據(jù)不同的編程語言,程序的概念可以這樣表示: 程序=算法+數(shù)據(jù)結構+程序設計方法+語言環(huán)境 C語言的數(shù)據(jù)結構是以數(shù)據(jù)類型形式出現(xiàn)的。C的數(shù)據(jù)類型如下: 構造類型 整型int 字符型 char 實型(浮點型) 枚舉類型enum 基本類型 空類型void 指針類型 * 單精度型 float 雙精度型 double數(shù)據(jù)類型 數(shù)組類型 結構體類型struct 共用體類型 union2.2常量 在程序執(zhí)行過程中,其值始終

57、保持不變的量稱之為常量。常量具有一定的類型,類型由其表示形式?jīng)Q定。在C語言中,常量可以分為整型常量、實型常量、字符型常量、字符串常量、符號常量等。 2.2常量1. 整型常量 整型常量就是整型常數(shù),它是一種從字面即可判斷其值的常量。C語言中常量可以用十進制、八進制和十六進制表示。 1十進制整數(shù)。由數(shù)字09組成但第一個數(shù)不能為0的整數(shù) 。如:123,-456,0。 2八進制整數(shù)。以0開頭由07組成的整數(shù)。 如0123表示八進制數(shù)123。 3十六進制整數(shù)。以0 x開頭由數(shù)字09和字母af(AF)組成的的數(shù)。如0 x123,代表數(shù)十六進制的123。 整型常量的寫法一定要合法,下面各數(shù)不合法:078,3

58、a。 其中078表示八進制數(shù),但包含了07以外的數(shù)8。3a表示十進制數(shù),但包含了09以外的字符a。2.2常量2 .實型常量 實數(shù)又稱浮點數(shù),就是日常生活中的帶小數(shù)點的數(shù)。實型常量有兩種表示形式: (1)十進進小數(shù)形式。它由數(shù)字和小數(shù)點組成(注意必須有小數(shù)點)。如.123、123.、123.0、0.0都是十進制小數(shù)形式。其中123.0末尾的數(shù)字0可以省略,.123小數(shù)點前面的0可以省略,0.0可以省略其中一個0但不能都省略。 (2)指數(shù)形式。如123e3或123E3都代表123103。但注意字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須有整數(shù),如e3,2.1e3.5,.e3,e等都不是合法的指

59、數(shù)形式。 一個實數(shù)可以有多種指數(shù)表示形式。例如123.456可以表示為,12.3456e1,1.23456e2,0.123456e3等。把其中的1.23456e2稱為“規(guī)范化的指數(shù)形式”,即在字母e(或E)之前的小數(shù)部分中,小數(shù)點左邊應有一位(且只能有一位)非零的數(shù)字。一個實數(shù)在用指數(shù)形式輸出時,是按規(guī)范化的指數(shù)形式輸出的。例如,指定將實數(shù)5689.65按指數(shù)形式輸出,必然輸出5.68965e+003。2.2常量3.字符型常量 由字符組成的、其值不能被改變的量稱為字符型常量。根據(jù)組成結構的不同,字符型常量可分為字符常量、轉義字符和字符串常量。1字符常量和轉義字符 C的字符常量是用單引號()括起

60、來的一個字符。如a,x, D,? , $等都是字符常量。注意,a和A是不同的字符常量。 除了以上形式的字符常量外,C還允許用一種特殊形式的字符常量,就是以一個“”開關的字符序列。例如,前面已經(jīng)遇到過的,在printf函數(shù)中的n,它代表一個“換行”符。這是一種“控制字符”,在屏幕上是不能顯示的。在程序中也無法用一個一般形式的字符表示,只能采用特殊形式來表示?!啊笔购蟾囊粋€字符失去了原有的意義,因此又稱作轉義字符。如,n中的“n”不代表字母n,而作為“回車換行”符處理。轉義字符是一種特殊形式的字符常量,主要用以表示控制代碼和圖形符號。常用的轉義字符見下表:2.2常量字符形式等價于ASCII碼轉義

溫馨提示

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

評論

0/150

提交評論