C程序設計課件_第1頁
C程序設計課件_第2頁
C程序設計課件_第3頁
C程序設計課件_第4頁
C程序設計課件_第5頁
已閱讀5頁,還剩341頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程內容:課程內容:nC語言程序設計語言程序設計任課班級:電任課班級:電4-4、5課時安排:課時安排:n理論講解理論講解48學時學時n上機實驗上機實驗24學時學時教材:教材:C程序設計程序設計 譚浩強譚浩強 清華大學出版社清華大學出版社C程序設計題解與上機指導程序設計題解與上機指導第1章 算法第2章 C語言概述第3章 數(shù)據(jù)類型、運算符與表達式第4章 順序程序設計第5章 選擇結構程序設計第6章 循環(huán)控制 第10章 指針第7章 數(shù)組 第11章 結構體與共用體第8章 函數(shù) 第12章 位運算第9章 預處理命令 第13章 文件概念概念:為了解決一個問題而采取的方法和步為了解決一個問題而采取的方法和步驟。

2、(是解決一個問題方法的精確描述)驟。(是解決一個問題方法的精確描述)數(shù)據(jù)結構數(shù)據(jù)結構 + 算法算法 = 程序程序程序程序=算法算法 + 數(shù)據(jù)結構數(shù)據(jù)結構 + 設計方法設計方法 + 語言工具語言工具 數(shù)值運算數(shù)值運算計算機算法:計算機算法: 非數(shù)值運算非數(shù)值運算 例例11:有:有A A、B B兩杯,分別盛有酒和醋,要求兩杯,分別盛有酒和醋,要求它們互換(需借一空杯它們互換(需借一空杯C C) ABC酒酒醋醋酒酒 A-C A-C 酒酒 B-A B-A 醋醋 C-B C-B 酒酒這就是以后經(jīng)常會用到的兩變量值交換的算法這就是以后經(jīng)常會用到的兩變量值交換的算法例例2:從十個數(shù)中挑選出最大的數(shù)來。:從十

3、個數(shù)中挑選出最大的數(shù)來。 選任意一數(shù)放入選任意一數(shù)放入A中,設一計數(shù)器中,設一計數(shù)器N=0(表示比較的次數(shù))表示比較的次數(shù)) 將下一數(shù)與將下一數(shù)與A相比,大者放在相比,大者放在A中,且中,且N=N+1 此時須判斷此時須判斷N是否是否n,則停則停止循環(huán),此時止循環(huán),此時S中值為中值為n!。 思考:如果題目改成奇數(shù)相乘,應如何改動程思考:如果題目改成奇數(shù)相乘,應如何改動程序?序?若將的終止條件改成若將的終止條件改成TC B=A C=B 結束結束開始開始輸入數(shù)輸入數(shù)AN=0輸入數(shù)輸入數(shù)BAB?B=AN=N+1NA N=N+1 直到直到N9為止為止 打印打印A五、N-S結構流程圖結構流程圖 A A B

4、 B成立成立 P P 不成立不成立 A BA B當當P1P1 A A A A直到直到P2P2順序結構順序結構選擇結構選擇結構當循環(huán)當循環(huán)直到循環(huán)直到循環(huán) A=C B=A C=B 輸入輸入N 1=T 1=S ST=S T+1=T 直到直到TN 輸出輸出S C語言是當今國際上最流行的、最有發(fā)展前途語言是當今國際上最流行的、最有發(fā)展前途的計算機高級語言,它集計算與軟件開發(fā)的計算機高級語言,它集計算與軟件開發(fā)于一身,即有高級語言的可讀性,又有低于一身,即有高級語言的可讀性,又有低級匯編語言的軟件開發(fā)功能,是一種編譯級匯編語言的軟件開發(fā)功能,是一種編譯語言語言。盡管當初盡管當初C語言是為編寫語言是為編寫

5、UNIX操作系統(tǒng)而設操作系統(tǒng)而設計的,但卻不依賴于計的,但卻不依賴于UNIX操作系統(tǒng),可操作系統(tǒng),可在多種操作系統(tǒng)的環(huán)境下運行在多種操作系統(tǒng)的環(huán)境下運行 。C語言的發(fā)展語言的發(fā)展年代年代 語言名稱語言名稱 改進功能改進功能 設計人或國家地址設計人或國家地址1960ALGOL 面向問題(遠離硬件)面向問題(遠離硬件)1963CPL 部分驅動硬件部分驅動硬件 英國劍橋大學英國劍橋大學1967BCPL 直接驅動硬件,但太簡單直接驅動硬件,但太簡單 英國劍橋大學英國劍橋大學1970B 簡單、接近硬件,簡單、接近硬件, 寫出了第一個寫出了第一個UNIX 美國貝爾實驗室美國貝爾實驗室1972-1973 C

6、 直接驅動硬件,功能強大直接驅動硬件,功能強大 美國貝爾實驗室美國貝爾實驗室C+ 面向對象面向對象VC 可視化編程可視化編程C# 基于基于.net平臺上快速開發(fā)大量應用程序平臺上快速開發(fā)大量應用程序 1、語言簡潔、緊湊、使用方便、靈活(、語言簡潔、緊湊、使用方便、靈活(32個關鍵字、個關鍵字、9種控制語句)種控制語句)2、運算符十分豐富(、運算符十分豐富(34個)個)3、數(shù)據(jù)結構豐富、數(shù)據(jù)結構豐富4、有結構化控制語句、有結構化控制語句5、語法限止不太嚴格,程序設計自由度大語法限止不太嚴格,程序設計自由度大6、允許直接訪問物理地址、位操作(位操作、可直、允許直接訪問物理地址、位操作(位操作、可直

7、接寫匯編語句,加接寫匯編語句,加asm做前綴)做前綴)7 、 生 成 目 標 代 碼 質 量 高 , 程 序 執(zhí) 行 效 率 高、 生 成 目 標 代 碼 質 量 高 , 程 序 執(zhí) 行 效 率 高(.exe、.com效率高)效率高)8、可移植性好(對于機器型號、操作系統(tǒng)要求不高,、可移植性好(對于機器型號、操作系統(tǒng)要求不高,可轉換成其它語言)可轉換成其它語言) 例例1:輸出一句話:輸出一句話 main( ) printf(“this is a C program.n”); 例例2:計算:計算123+456的值,并輸出的值,并輸出 main( ) int a,b,sum; a=123;b=45

8、6; sum=a+b; printf(“sum is %dn”,sum);例例3:比較兩個數(shù)的大小,輸出大的值比較兩個數(shù)的大小,輸出大的值 mian( ) int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max=%d”,c); int max(int x,int y) int z; if (xy) z=x; else z=y; return(z);對子函數(shù)對子函數(shù)max()()的調用的調用max()()函函數(shù)的定義數(shù)的定義C語言的規(guī)則語言的規(guī)則1、C程序由函數(shù)構成。程序由函數(shù)構成。其中至少有一個函數(shù)其中至少有一個函數(shù)ma

9、in( )可可使用庫函數(shù)(使用庫函數(shù)(printf、scanf)也可以自定義函數(shù)也可以自定義函數(shù)(max)2、函數(shù)的兩個組成部分:說明部分、函數(shù)體、函數(shù)的兩個組成部分:說明部分、函數(shù)體說明部分:包括函數(shù)類型、名字、屬性、形參、形說明部分:包括函數(shù)類型、名字、屬性、形參、形參類型參類型函數(shù)體:即函數(shù)體:即 中部分,包括變量定義、執(zhí)行部分中部分,包括變量定義、執(zhí)行部分3、C程序總是從程序總是從main函數(shù)開始執(zhí)行,不論其位置函數(shù)開始執(zhí)行,不論其位置4、書寫格式自由,一行可寫幾個語句,一個語句可寫、書寫格式自由,一行可寫幾個語句,一個語句可寫在幾行上。在幾行上。5、每個語句間用;分隔開,最后一句也須

10、寫上;、每個語句間用;分隔開,最后一句也須寫上;6、輸入輸出也用庫函數(shù)、輸入輸出也用庫函數(shù)printf( )、scanf( )7、/*/表示注釋信息表示注釋信息 一、步驟一、步驟1、輸入與編輯源程序、輸入與編輯源程序2、編譯、編譯3、連接庫函數(shù)、連接庫函數(shù)4、運行目標程序、運行目標程序二、二、Turbo C2.0主要工作文件主要工作文件Tc.exe 集成編譯器集成編譯器Tcconfig.tc環(huán)境設置文件環(huán)境設置文件*.H頭文件頭文件*.BGI圖形顯示驅動程序圖形顯示驅動程序*.LIB 庫文件庫文件*.OBJ模式啟動代碼文件模式啟動代碼文件具體步驟見實際操作具體步驟見實際操作 整型(整型(int

11、) 整型整型 短整型(短整型(short) 長整型(長整型(long) 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 無符號整型(無符號整型(unsigned int) 字符型(字符型(char) 實型實型 單精度型(單精度型(float)數(shù)據(jù)類型數(shù)據(jù)類型 雙精度型(雙精度型(double) 枚舉型枚舉型 數(shù)組類型數(shù)組類型 構造類型構造類型 結構體類型結構體類型 共同體類型共同體類型 指針類型指針類型 空類型空類型一、常量:在程序運行的過程中,其值不能被改變一、常量:在程序運行的過程中,其值不能被改變的量稱為常量。的量稱為常量。 整型常量:整型常量:12、0、-8 實型常量:實型常量:4.6、1.23、-0.9

12、字符型常量:字符型常量:a、B、#、3、= 符號常量:符號常量:#define PRICE 30 例例3.1 一般情況下這種符號常量使用大寫字母表示!一般情況下這種符號常量使用大寫字母表示!二、變量:在程序運行過程中,其值能被改變的量。二、變量:在程序運行過程中,其值能被改變的量。 1、每個變量都有兩個特點:任一變量都有一個名字;、每個變量都有兩個特點:任一變量都有一個名字;任一變量都占據(jù)一塊內存單元。任一變量都占據(jù)一塊內存單元。 2、變量起名原則:、變量起名原則:變量所起的名字不可與變量所起的名字不可與32個保留字重名(個保留字重名(P375上上部)部)必須以字母或下劃線開頭,由字母、數(shù)字或

13、下劃必須以字母或下劃線開頭,由字母、數(shù)字或下劃線組成的長度不超過線組成的長度不超過32的字符串。的字符串。應本著見名知義的原則。應本著見名知義的原則。大寫字母與小寫字母意義不同,被認為是兩個不大寫字母與小寫字母意義不同,被認為是兩個不同的字符。一般變量名用小寫字母表示。同的字符。一般變量名用小寫字母表示。15學生 二教三階二教三階 a4121001H變量名變量名變量地址變量地址變量值變量值 存儲單元存儲單元判斷以下變量名是否合法:判斷以下變量名是否合法: year Day #123 .com a_12 $100 _abcdef 199Y a=b 1_2_3 u-n int 3、變量要先定義后使

14、用、變量要先定義后使用要用到的變量,必須先對其進行定義,才可以要用到的變量,必須先對其進行定義,才可以使用。如果是未經(jīng)定義的變量,在編譯時會檢使用。如果是未經(jīng)定義的變量,在編譯時會檢查出來。會給出提示信息:查出來。會給出提示信息: undefined symbol 變量名變量名 in function main.判斷以下變量名是否合法:判斷以下變量名是否合法: year Day #123 .com a_12 $100 _abcdef 199Y a=b 1_2_3 u-n int 一、整型常量一、整型常量1、十進制數(shù):、十進制數(shù):234、-123等。每數(shù)位都可以是等。每數(shù)位都可以是0-9。2、八

15、進制數(shù):以、八進制數(shù):以0開頭,(開頭,(128)10=0200。每數(shù)位都。每數(shù)位都可以是可以是0-7。3、十六進制數(shù):以、十六進制數(shù):以0 x開頭,(開頭,(128)16=0 x80。每數(shù)每數(shù)位都可以是位都可以是0-9、A-F。二、整型變量二、整型變量1、整型量在內存中的存放形式、整型量在內存中的存放形式例如例如10、-10:10在內存中的存放形式:在內存中的存放形式:2、整型變量的分類、整型變量的分類在在C中,為了更精確描述整型數(shù)據(jù),又進一步分為中,為了更精確描述整型數(shù)據(jù),又進一步分為六種類型,區(qū)別主要是在表示整數(shù)的范圍不同六種類型,區(qū)別主要是在表示整數(shù)的范圍不同。0 0 0 0 0 0

16、0 0 0 0 0 0 1 0 1 0原碼原碼0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0反碼反碼0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0補碼補碼1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0原碼原碼1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1反碼反碼1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0補碼補碼-10在內存中的存放形式:在內存中的存放形式:Signed int 基本整型基本整型 16 -32768+32767 216Short int 短整型短整型 16 -32768+32767 216Long

17、 int 長整型長整型 32 -21億億+21億億 232Unsinged int 無符號整型無符號整型16 065535 216Unsinged short int 無符號短整型無符號短整型 16 065535 216Unsinged long int 無符號長整型無符號長整型 32 042億億 2323、整型變量的定義、整型變量的定義格式應為:格式應為: 變量變量1,變量,變量2,變量,變量3; 例例3.2 注:一般在函數(shù)的開頭就進行定義。注:一般在函數(shù)的開頭就進行定義。4、整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出在運算的過程中,若變量的值超過該類型的范圍,則在運算的過程中,若變量的值超過該類型的范圍

18、,則會產(chǎn)生溢出。會產(chǎn)生溢出。 例例3.3a: 32767b: -327680 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0三、如何判斷整型常量的類型。三、如何判斷整型常量的類型。 要根據(jù)給定的常量的大小,符合哪個類型的范圍要根據(jù)給定的常量的大小,符合哪個類型的范圍就賦給哪個類型的變量。例如就賦給哪個類型的變量。例如50000 如果該常量后面加了一個字母如果該常量后面加了一個字母l或或L,則一定要認則一定要認為是為是long int型的常量,即要賦給型的常量,即要賦給long int型的變量。型的變量。例如例如432L一

19、、實型常量一、實型常量1、十進制小數(shù):由整數(shù)部分、小數(shù)點和小數(shù)部分組成。、十進制小數(shù):由整數(shù)部分、小數(shù)點和小數(shù)部分組成。例如:例如:1.24 -0.345 .222 -234.0 333. 0.0等等2、指數(shù)形式:由實數(shù)部分、指數(shù)形式:由實數(shù)部分、E(e)和整數(shù)部分組成。和整數(shù)部分組成。用于表示一些比較大的數(shù)值。用于表示一些比較大的數(shù)值。例如:例如:123*1022-123E22注意:注意:E之前必須要有數(shù)字,之前必須要有數(shù)字,E之后數(shù)字必須為整數(shù)。之后數(shù)字必須為整數(shù)。e12 4.4e1.5 .e5都是不合法的。都是不合法的。二、實型變量二、實型變量1、實型數(shù)據(jù)在內存中的存放形式(按指數(shù)形式)

20、、實型數(shù)據(jù)在內存中的存放形式(按指數(shù)形式)314.15926+.3141592632、實型變量的分類、實型變量的分類float 單精度單精度 32 6-7 10-37-1038double 雙精度雙精度 64 15-16 10-307-10308long double 長雙精度長雙精度 128 18-19 10-4931-1049323、實型數(shù)據(jù)的舍入誤差、實型數(shù)據(jù)的舍入誤差 例例3.4三、實型常量的類型三、實型常量的類型 一個實型常量賦值給一個實型變量時,只根據(jù)實一個實型常量賦值給一個實型變量時,只根據(jù)實型變量表示的有效數(shù)字的位數(shù),在實型常量中按型變量表示的有效數(shù)字的位數(shù),在實型常量中按從左

21、向右的方向截取數(shù)據(jù)。從左向右的方向截取數(shù)據(jù)。 一、字符型常量一、字符型常量1、在、在C語言中字符型常量是用單引號括起來的一個字語言中字符型常量是用單引號括起來的一個字符。符。 如:如:a、A、3、?、 、$等。等。2、以、以“”開頭的轉義字符開頭的轉義字符n換行換行10t橫向跳格橫向跳格9v豎向跳格豎向跳格b退格退格8r回車回車13f走紙換頁走紙換頁12反斜杠字符反斜杠字符92單引號單引號39“雙引號雙引號34101(65)代表字母)代表字母A,012(10)代表代表換行,換行,x20(32)代表空格字符。代表空格字符。 例如:例如:main( ) printf(“abctderftgn”);

22、 printf(“htibbjk”);結果為:結果為:f a b c g d e h j kddd1至至3位八進制數(shù)所代表的字符位八進制數(shù)所代表的字符xhh1至至2位十六進制數(shù)所代表的字符位十六進制數(shù)所代表的字符二、字符變量二、字符變量 char c1,c2; c1=a;c2=b; 在內存中占一個字節(jié)的空間在內存中占一個字節(jié)的空間三、字符數(shù)據(jù)在內存中的存儲形式三、字符數(shù)據(jù)在內存中的存儲形式 字符的字符的ASCII碼存入內存。在內存中所有的數(shù)據(jù)碼存入內存。在內存中所有的數(shù)據(jù)又是以二進制的形式存放的。例如字符又是以二進制的形式存放的。例如字符a的的ASCII碼為碼為97,b的的ASCII碼為碼為9

23、8。 C1 C2 C1 C297980110000101100010 所以使得在所以使得在C C語言有效的范圍中字符數(shù)據(jù)和整型語言有效的范圍中字符數(shù)據(jù)和整型數(shù)據(jù)之間通用數(shù)據(jù)之間通用 (0127)例例3.6main( )char c=130; printf(“%d,%c”,c,c);結果為:結果為:-126, 因為(因為(130)10=(10000010)2=(-126)補補四、字符串常量四、字符串常量字符串常量是由雙引號括起來的字符序列。字符串常量是由雙引號括起來的字符序列。如:如:“how do you do”,“CHINA”,“a”,“134323.54”每 一 個 字 符 串 的 結 尾

24、 都 有 一 個 字 符 的 結 束 標每 一 個 字 符 串 的 結 尾 都 有 一 個 字 符 的 結 束 標志:志:0,它占一個字節(jié)的寬度。,它占一個字節(jié)的寬度。在在C語言中沒有變量來存放字符串常量,須用字符數(shù)語言中沒有變量來存放字符串常量,須用字符數(shù)組來存放。組來存放?!癮”和和a是有本質的區(qū)別的,是有本質的區(qū)別的,a在內存中只在內存中只占一個字節(jié)的寬度,而占一個字節(jié)的寬度,而“a”在內存中占兩字節(jié)的在內存中占兩字節(jié)的寬度。寬度。 例:例:已知字母已知字母a a的的ASCIIASCII碼為十進制數(shù)碼為十進制數(shù)9797,且設,且設chch為字符型變量,則表達式為字符型變量,則表達式chc

25、h=a+8-3=a+8-3的值為(的值為( )。)。 f或或102一、什么是對變量賦初值一、什么是對變量賦初值變量賦初值就是在定義變量的同時,給變量賦一個值。變量賦初值就是在定義變量的同時,給變量賦一個值。二、如何進行賦初值二、如何進行賦初值 定義的同時賦值:定義的同時賦值:float y=4.6; char z=a; 定義之后賦值:定義之后賦值:int a,b,c; a=20;b=10;c=30;三、在賦初值過程中的問題三、在賦初值過程中的問題1、int x,y,z=3;x,yx,y沒有初值,其初值也不是沒有初值,其初值也不是0 0,而是一個不確定的值,而是一個不確定的值 2、int a=b

26、=c=3; ()應寫成應寫成int a=3,b=3,c=3; 或定義或定義abcabc之后再賦值!之后再賦值!原則:在運算過程中,不同的數(shù)據(jù)類型要先轉換成原則:在運算過程中,不同的數(shù)據(jù)類型要先轉換成同一類型后,才能進行運算同一類型后,才能進行運算 intchar,shortunsignedlongdoublefloat低低高高 1 1、在運算中,先進行、在運算中,先進行水平方向上的轉換。水平方向上的轉換。 2 2、在進行了水平方向上、在進行了水平方向上的轉換后,如果仍然存在的轉換后,如果仍然存在不同類型的數(shù)據(jù),就要進不同類型的數(shù)據(jù),就要進行縱向的類型轉換。行縱向的類型轉換。 例如:例如:3+1

27、+0.1/3-5.3/3L(運算結果的類型和本運算結果的類型和本式子中最高級別的類型是一樣的)式子中最高級別的類型是一樣的) 設有說明:設有說明:char w; char w; intint x; float y; double z; x; float y; double z;則表達式則表達式w w* *x+z-yx+z-y值的數(shù)據(jù)類型為(值的數(shù)據(jù)類型為( )double一、算術運算符一、算術運算符 (+ - * / %)使用使用“/”時注意:時注意: 1/5=0,而不是,而不是0.2,但是,但是1.0/5=0.2 使用使用“%”“%”時注意:該運算符的兩邊只能是整型數(shù)據(jù)時注意:該運算符的兩邊

28、只能是整型數(shù)據(jù)二、算術表達式和算符的優(yōu)先級與結合性二、算術表達式和算符的優(yōu)先級與結合性1 1、算術表達式定義:、算術表達式定義:用算術運算符號和括號將運算對象(也稱操作數(shù))連用算術運算符號和括號將運算對象(也稱操作數(shù))連接起來的、符合接起來的、符合C C語法規(guī)則的式子,稱為算術表達語法規(guī)則的式子,稱為算術表達式。運算對象包括常量、變量、函數(shù)等。式。運算對象包括常量、變量、函數(shù)等。例如例如3+4.53+4.5* *a-ba-b* *4/3+max(c,d)4/3+max(c,d) a a* *b/c-b/c-1.5+a1.5+a2 2、優(yōu)先級和結合性、優(yōu)先級和結合性+ -+ -的優(yōu)先級是的優(yōu)先級

29、是4 4級,級,* * / % / %的優(yōu)先級是的優(yōu)先級是3 3級,它們的結級,它們的結合性都是從左至右的,即左結合的。合性都是從左至右的,即左結合的。三、強制類型轉換運算符(優(yōu)先級三、強制類型轉換運算符(優(yōu)先級2級,右結合)級,右結合)功能:將一個表達式轉換成所需類型,其格式為:功能:將一個表達式轉換成所需類型,其格式為:(類型)(表達式)(類型)(表達式) 例如:(例如:(float)x (int)x+y (int)(x+y) (double)36(float)(5%3) 注意:在強制類型轉換時,要產(chǎn)生的是一個臨時數(shù)據(jù),注意:在強制類型轉換時,要產(chǎn)生的是一個臨時數(shù)據(jù),這個臨時數(shù)據(jù)的類型是指

30、定的類型,而原始數(shù)據(jù)的這個臨時數(shù)據(jù)的類型是指定的類型,而原始數(shù)據(jù)的類型不會發(fā)生改變。類型不會發(fā)生改變。例例3.8四、自增、自減運算符(四、自增、自減運算符(+、-)+是自增運算符。是自增運算符。+k或或k+都是讓變量都是讓變量k的值加的值加1。-是自減運算符。是自減運算符。 -k或或k-都是讓變量都是讓變量k的值減的值減1。+K K含義:先使用含義:先使用K K值加上值加上1 1,再使用,再使用K K值。值。K+K+含義:先使用含義:先使用K K值,然后再將值,然后再將K K值加上值加上1 1。例如:例如: k=1; k=1;k=1; k=1; j=+k; j=k+; j=+k; j=k+;

31、k=2 j=2 k=2 j=1使用時需注意:使用時需注意:1、這兩種、運算符只能用于變量,而不能用于常量、這兩種、運算符只能用于變量,而不能用于常量或表達式?;虮磉_式。2、+、-運算符的優(yōu)先相同,但比算術運算符優(yōu)先級運算符的優(yōu)先相同,但比算術運算符優(yōu)先級要高。其結合性是要高。其結合性是“從右至左從右至左”的。的。i=3; j=-i+; i=3; j=+i;p r i n t f ( “ % d , % d ” , i , j ) ; printf(“%d,%d”,i,j);結果是:結果是:4,-3 結果是:結果是:4,43 3、要避免發(fā)生歧義、要避免發(fā)生歧義i=3;i=3; i=3; i=3;

32、j=(j=(i+)+(i+)+(ii+)+(i+)+(i+); k=(+); k=(+i)+(+i)+(+ii)+(+i)+(+i););在某些在某些C C中是中是i=6 j=12 k=15i=6 j=12 k=15而在而在TCTC、MSCMSC中中i=6 j=9 k=18i=6 j=9 k=184 4、如何組合多個運算符如何組合多個運算符i+ji+j應理解為:(應理解為:(i+i+)+j+j而不是而不是i+(+ji+(+j) )5 5、注意程序的寫法注意程序的寫法i=3;i=3; i=3;j=i+; i=3;j=i+;p r i n t f ( “ % d , % d ” , i , ip

33、r i n t f ( “ % d , % d ” , i , i + + ) ;+ + ) ;printf(“%d,%d”,j,iprintf(“%d,%d”,j,i););結果為:結果為:4 4,3 3結果為:結果為:3 3,4 4 練習:練習:i=3;p=3;求求3+5*8%2+10/5-i+p- -的值:的值:5一、賦值運算符(優(yōu)先級一、賦值運算符(優(yōu)先級1414,右結合),右結合)“=”“=”就是賦值運算符。就是賦值運算符。 格式:變量格式:變量= =表達式表達式二、賦值過程中遇到的問題二、賦值過程中遇到的問題1 1、實型、實型-整型整型 舍棄小數(shù)部分舍棄小數(shù)部分 intint i=

34、3.6; / i=3.6; /* *i i中只存放整數(shù)中只存放整數(shù)3 3* */ /2 2、整型、整型-實型實型 數(shù)值不變,補足有效位數(shù)數(shù)值不變,補足有效位數(shù) float x=3; / float x=3; /* *x x中存放中存放3.0000003.000000* */ / double y=12345;/ double y=12345;/* *y y 中存放中存放12345.000000000012345.0000000000* */ /3 3、double-float double-float 截取前面截取前面7 7位有效數(shù)字,其余舍棄位有效數(shù)字,其余舍棄 float-double f

35、loat-double 數(shù)值不變,有效位擴展到數(shù)值不變,有效位擴展到1616位位4 4、字符型、字符型-整型整型 保持數(shù)值不變且進行保持數(shù)值不變且進行 intint x=0; / x=0; /* *x x中存放整數(shù)中存放整數(shù)4848* */ / intint y= y=xFExFE / /* * y y中存放整數(shù)中存放整數(shù)-2-2* */ / 原最高位若為原最高位若為0 0則高則高8 8位全補位全補0 0,是,是1 1則高則高8 8位全補位全補1 1。5 5、int,short,longint,short,long-char -char 只保留低只保留低8 8位,截斷位,截斷 intint i

36、=289; char c=i;/ i=289; char c=i;/* *c c的值為的值為3333,字符為,字符為!* */ /6 6、intint-long -long 保持數(shù)值不變且進行符號擴展保持數(shù)值不變且進行符號擴展 long- long-intint 只保留低只保留低1616位,截斷位,截斷7 7、unsigned unsigned intint-long -long 不需按符號擴展,將高位補不需按符號擴展,將高位補0 08 8、非、非unsigned-unsigned-同樣長度的同樣長度的unsignedunsigned 原樣賦值,連同符號位也看作是數(shù)值一起傳送。原樣賦值,連同符

37、號位也看作是數(shù)值一起傳送。三、復合的賦值運算符(優(yōu)先級三、復合的賦值運算符(優(yōu)先級1414,右結合),右結合)定義:在賦值運算符之前加上其它運算符。定義:在賦值運算符之前加上其它運算符。例如:例如:x+=3x+=3相當于相當于x=x+3x=x+3 x x* *=(=(y+zy+z) )相當于相當于x=xx=x* *( (y+zy+z) )所以所以A+=BA+=B解釋為:將解釋為:將“A+”A+”移到移到“=”“=”右側得到右側得到“=“=A+B”A+B”,然后然后在左側填上在左側填上“A”A”就得到了就得到了“A=A+B”A=A+B”。共有共有1010種復合運算符:種復合運算符:+=+=、-=

38、-=、* *= =、/=/=、%=%=、 = =、= =、&=&=、=、|=|=四、賦值表達式四、賦值表達式格式為:格式為: a=b=c=5 /a=b=c=5 /* *a=5,b=5,c=5a=5,b=5,c=5* */ /a=5+(c=6) a=5+(c=6) / /* *a=11,c=6a=11,c=6* */ /x=(y=4)+(z=3) /x=(y=4)+(z=3) /* *x=7,y=4,z=3x=7,y=4,z=3* */ /x=(y=4)/(z=3) /x=(y=4)/(z=3) /* *x=1,y=4,z=3x=1,y=4,z=3* */ /例例1 1:x=6x

39、=6; x+=x x+=x* *=x/=3=x/=3;例例2 2:a=12a=12; a+=a-=a a+=a-=a* *a a;例例3 3:b=3b=3; printf(“%d”,aprintf(“%d”,a=b)=b);x=8x=8a=-264a=-264 輸出應為輸出應為3一、逗號運算符一、逗號運算符 (優(yōu)先級(優(yōu)先級1515,左結合),左結合) “ “,”格式為:表達式格式為:表達式1 1,表達式,表達式2 2求解過程是:先求表達式求解過程是:先求表達式1 1,再求表達式,再求表達式2 2。整個表。整個表達式的值是表達式達式的值是表達式2 2的值。的值。如:如:3 3* *3 3,4

40、4* *4 4結果應為結果應為1616。 x=8 x=8* *2,x2,x* *4 4值為:值為:64 64 x=16x=16 x=(z=5,5 x=(z=5,5* *2)2)值為:值為:10 10 z=5z=5 (x=8 (x=8* *2,x2,x* *4),x4),x* *2 2值為:值為:32 32 x=16x=16程序中并不是所有的逗號都要看成逗號運算符,尤程序中并不是所有的逗號都要看成逗號運算符,尤其是在函數(shù)調用時,各個參數(shù)是用逗號隔開的,其是在函數(shù)調用時,各個參數(shù)是用逗號隔開的,這時逗號就不是逗號運算符。這時逗號就不是逗號運算符。 如:如:printf(%d,%d,%d,x,y,z

41、printf(%d,%d,%d,x,y,z); ); C C程序程序 源程序源程序1 1 源程序源程序i i 源程序源程序n n 預編譯命令預編譯命令 函數(shù)函數(shù)1 1函數(shù)函數(shù)n n 說明部分說明部分 執(zhí)行部分(語句)執(zhí)行部分(語句)1、復合語句:用大括號括起來的一些語句。這些語、復合語句:用大括號括起來的一些語句。這些語句被看成一個整體。句被看成一個整體。例如:例如:t=x;x=y;y=t;注意:復合語句的大括號后面沒有分號,如果復合語注意:復合語句的大括號后面沒有分號,如果復合語句中只有一條語句,那么大括號可以省略。句中只有一條語句,那么大括號可以省略。2、控制語句:用來規(guī)定語句的執(zhí)行順序。

42、、控制語句:用來規(guī)定語句的執(zhí)行順序。if (if (條件條件) ) else else 條件語句條件語句for (for (條件條件) 循環(huán)語句循環(huán)語句while (while (條件條件) 循環(huán)語句循環(huán)語句do do while; while;循環(huán)語句循環(huán)語句continue;continue;結束本次循環(huán)語句結束本次循環(huán)語句break;break; 結束循環(huán)語句或結束結束循環(huán)語句或結束switchswitch語語句句switch(switch(表達式表達式) 多分支選擇語句多分支選擇語句gotogoto 標號標號; ;轉向語句轉向語句return(return(表達式表達式););從函數(shù)返

43、回語句從函數(shù)返回語句其中其中 表示循環(huán)體或叫內嵌語句,可以用復合語句表示循環(huán)體或叫內嵌語句,可以用復合語句來表示。來表示。3 3、函數(shù)調用語句:由一個函數(shù)調用加一個分號構成、函數(shù)調用語句:由一個函數(shù)調用加一個分號構成函數(shù)調用語句。函數(shù)調用語句。例如:例如:printf(“maxprintf(“max=%=%d”,cd”,c);); c= c=max(a,bmax(a,b););4 4、表達式語句:在任何一個表達式后加一個分號就表達式語句:在任何一個表達式后加一個分號就構成一條表達式語句。構成一條表達式語句。 例如:例如:x=3;x=3;注意:賦值表達式可以放置在任何可以放置表達式注意:賦值表達

44、式可以放置在任何可以放置表達式的地方也就是說可以放在某些語句中,而賦值語的地方也就是說可以放在某些語句中,而賦值語句只能作為一條語句單獨存在。句只能作為一條語句單獨存在。如:如:if (x=y)6) y=6;if (x=y)6) y=6; 若是若是if (x=y;)6) y=6;if (x=y;)6) y=6;則是錯誤的。則是錯誤的。 5 5、空語句:僅由一個分號構成的語句??照Z句:僅由一個分號構成的語句。 例如:例如: ;表示這里有一條什么也不做的語句;表示這里有一條什么也不做的語句。 C C語言本身不提供輸入輸出語句語言本身不提供輸入輸出語句輸入和輸出操作是由函數(shù)來實現(xiàn)的輸入和輸出操作是由

45、函數(shù)來實現(xiàn)的在在C C語言中沒提供輸入和輸出語句的目的是使語言中沒提供輸入和輸出語句的目的是使C C語言編語言編譯系統(tǒng)更簡單,因為譯系統(tǒng)更簡單,因為C C語言是翻譯語言,沒有輸入輸語言是翻譯語言,沒有輸入輸出語句就避免在編譯時還需處理一些硬件的問題,出語句就避免在編譯時還需處理一些硬件的問題,這樣增強程序的通用性,可移植性。這樣增強程序的通用性,可移植性。在在C C語言函數(shù)庫中有一批語言函數(shù)庫中有一批“標準輸入輸出函數(shù)標準輸入輸出函數(shù)”,在不,在不同的計算機系統(tǒng)內都可以被調用的。同的計算機系統(tǒng)內都可以被調用的。P381P381在使用到在使用到C C語言庫函數(shù)時,要用預編譯命令語言庫函數(shù)時,要用

46、預編譯命令“#“#include”include”將有關的將有關的“頭文件頭文件”包括到用戶源文件中。包括到用戶源文件中。 一、一、putcharputchar( )( )(原形在原形在stdio.hstdio.h中)中)這個函數(shù)的作用是將給定的一個字符常量或一個字符這個函數(shù)的作用是將給定的一個字符常量或一個字符變量輸出到終端。變量輸出到終端。例如:例如:putchar(A); putchar(33); putchar(x); 這里這里x x可以是整型或字符型變量??梢允钦突蜃址妥兞?。例例4.1putchar(n);輸出一個換行回車輸出一個換行回車putchar(101);Aputchar

47、();putchar(015);輸出回車,不換行。輸出回車,不換行。二、二、getchar( ) ( (原形在原形在stdio.hstdio.h中)中)從終端輸入一個字符。該函數(shù)無參數(shù)。從終端輸入一個字符。該函數(shù)無參數(shù)。例如:例如:#include main() char c; c=getchar(); putchar(c);輸入輸入A,輸出也為輸出也為A。注意:輸入時需鍵入回車后,才可處理。注意:輸入時需鍵入回車后,才可處理。printf(“%c”,getchar();putchar(getchar(); 一、一、printfprintf( (格式輸出函數(shù)格式輸出函數(shù)) ) ( (原形在原形

48、在stdio.hstdio.h中)中)作用是向終端輸出任意類型的數(shù)據(jù)。作用是向終端輸出任意類型的數(shù)據(jù)。格式為:格式為:printfprintf( (格式控制字符串,若干表達式格式控制字符串,若干表達式) );1 1、格式控制符:、格式控制符:是用雙引號括起來的字符串,是用雙引號括起來的字符串,包括兩包括兩種信息:種信息:1 1)普通字符進行原樣輸出:)普通字符進行原樣輸出:printf(“thisprintf(“this is my book!”); is my book!”);printf(“xprintf(“x= =% %d d,y,y= =% %d d”,x,y”,x,y););2)2)

49、起格式說明作用,用來控制對應表達式的輸出格式起格式說明作用,用來控制對應表達式的輸出格式(必須小寫)(必須小寫)% %d d、%f%f、%c%c、%o%o、%x%x、%s%s、%e%e、%g%g、%、%u%u2 2、格式字符具體說明:、格式字符具體說明:1 1)% %d d格式符格式符% %d d是按實際長度進行輸出。是按實際長度進行輸出。printf(“xprintf(“x=%=%d,yd,y=%d”,83,35);=%d”,83,35); 結果為:結果為:x=83,y=35x=83,y=35% %mdmd是按照是按照m m指定的寬度進行輸出,且數(shù)據(jù)右靠齊。如指定的寬度進行輸出,且數(shù)據(jù)右靠齊

50、。如果實際寬度要大于果實際寬度要大于m m,則按數(shù)據(jù)的實際寬度進行顯示輸則按數(shù)據(jù)的實際寬度進行顯示輸出。出。x=123;y=12345;printf(“%4d,%-4d,%4d”,x,x,y);x=123;y=12345;printf(“%4d,%-4d,%4d”,x,x,y);結果為:結果為:123,123123,123, ,1234512345% %ldld是將其對應的表達式的值按照長整數(shù)方式輸出。是將其對應的表達式的值按照長整數(shù)方式輸出。x=76543;printf(“x=%x=76543;printf(“x=%ld,xld,x=%=%d”,x,xd”,x,x););結果為:結果為:x=

51、76543,x=11007x=76543,x=11007注意:長整型數(shù)據(jù)一定要用注意:長整型數(shù)據(jù)一定要用% %ldld的形式輸出。的形式輸出。% %mldmldx=76543;printf(“x=%7ldx=76543;printf(“x=%7ld,x=%4ld”,x,x);x=%4ld”,x,x);結果:結果:x=x=76543,x=7654376543,x=765432)%o2)%o格式符:以八進制數(shù)形式輸出整數(shù)。輸出的數(shù)不格式符:以八進制數(shù)形式輸出整數(shù)。輸出的數(shù)不帶符號。帶符號。intint a=-1;printf(“%d,%o”,a,a); a=-1;printf(“%d,%o”,a,

52、a);結果為:結果為:-1-1,17777771777777因為因為-1-1的補碼形式是:的補碼形式是:1111 1111 1111 11111111 1111 1111 1111,所以是,所以是177777177777同樣,也可以使用同樣,也可以使用l l、m m作為說明符。作為說明符。3 3)% %x x格式符:以十六進制形式輸出整數(shù)。也沒有負數(shù)格式符:以十六進制形式輸出整數(shù)。也沒有負數(shù)形式。形式。x=-1;printf(“x=%x=-1;printf(“x=%x,xx,x=%=%d”,x,xd”,x,x););結果為:結果為:FFFF,-1FFFF,-1同樣,同樣,% %x x也可以使用

53、也可以使用l l、m m、-l-l作為說明符。作為說明符。4 4)% %u u格式符:用來以十進制形式輸出無符號數(shù)格式符:用來以十進制形式輸出無符號數(shù)intint a=-2;unsigned a=-2;unsigned intint b=65535; b=65535;printf(“aprintf(“a=%=%d,%o,%x,%un”,a,a,a,ad,%o,%x,%un”,a,a,a,a););printf(“bprintf(“b=%=%d,%o,%x,%un”,b,b,b,bd,%o,%x,%un”,b,b,b,b););結果為:結果為:a=-2,177776,FFFE,65534a=-2

54、,177776,FFFE,65534 b=-1,177777,FFFF,65535 b=-1,177777,FFFF,65535其中:(其中:(-2-2)補補= =(11111111111111101111111111111110) (6553565535)補補= =(11111111111111111111111111111111)同樣,同樣,% %u u也可以使用也可以使用l l、m m、-l-l作為說明符。作為說明符。5 5)% %c c格式符:用來輸出一個字符。格式符:用來輸出一個字符。Printf(“xPrintf(“x=%=%c,yc,y=%c”,A,66);=%c”,A,66);

55、結果為:結果為:x=x=A,yA,y=B=BPrintf(“xPrintf(“x=%5c”,66);=%5c”,66);結果為:結果為:x=x=B B同樣,同樣,% %c c也可以使用也可以使用m m作為說明符。作為說明符。6)%6)%s s格式符:用來輸出一個字符串。格式符:用來輸出一個字符串。% %s s printf(“%s”,”chinaprintf(“%s”,”china”); china”); china%ms printf(“%8s”,”china”); %ms printf(“%8s”,”china”); chianchian%-ms printf(“%-8s,%s”,”chi

56、na”,”is %-ms printf(“%-8s,%s”,”china”,”is good”);good”);chinachinaisisgoodgood%m.nsprintf(“%7.2s,%.4s”,”china”,”chin%m.nsprintf(“%7.2s,%.4s”,”china”,”china”);a”);ch,chinch,chin%-%-m.nsm.ns printf(“%-5.3s”,”china”); printf(“%-5.3s”,”china”);chichi7)%7)%f f格式符:用來輸出實數(shù),以小數(shù)形式輸出。格式符:用來輸出實數(shù),以小數(shù)形式輸出。% %f f整

57、數(shù)部分全部輸出,小數(shù)部分保留整數(shù)部分全部輸出,小數(shù)部分保留6 6位,需注意有位,需注意有效位數(shù)!效位數(shù)!float x=123456.123;double y=1234567890123.456789;printf(“%f,%f”,x,yprintf(“%f,%f”,x,y););結果為:結果為:123456.125001,1234567890123.456790123456.125001,1234567890123.456790% %m.nfm.nf指定輸出的數(shù)據(jù)共占指定輸出的數(shù)據(jù)共占m m位,小數(shù)為位,小數(shù)為n n位。位。float f=123.456;float f=123.456;pr

58、intf(“%f,%10f,%10.2f,%.2f,%-10.2fn”,f,f,f,f,f);123.456001,123.456001,123.46,123.46,123.468 8)e e格式符:以指數(shù)形式輸出實數(shù)。格式符:以指數(shù)形式輸出實數(shù)。% %e e固定小數(shù)部分占固定小數(shù)部分占5 5位,整數(shù)占位,整數(shù)占1 1位,小數(shù)點占位,小數(shù)點占1 1位,位,E E占占1 1位,指數(shù)占位,指數(shù)占2 2位,指數(shù)符號占位,指數(shù)符號占1 1位。整體只占位。整體只占1111位!位!printf(“%e”,123.456);printf(“%e”,123.456);結果為:結果為:1.234561.2345

59、6e+02e+02% %m.nem.ne指定輸出的數(shù)據(jù)共占指定輸出的數(shù)據(jù)共占m m位,小數(shù)為位,小數(shù)為n n位。位。printf(“%e,%10e,%10.2e,%.2e,%-10.2e”,f,f,f,f,f);1 . 2 3 4 5 6 e + 0 2 , 1 . 2 3 4 5 6 e + 0 2 , 1.2e+02,1.2e+02,1.2e+029)g9)g格式符:自動選擇實數(shù)輸出的格式符:自動選擇實數(shù)輸出的f f或或g g格式格式, ,且不輸出且不輸出無意義的零。無意義的零。f=123.456;f=123.456;printf(“%f,%e,%g”,f,f,fprintf(“%f,%e

60、,%g”,f,f,f););結果為:結果為:123.456001,1.23456123.456001,1.23456e+02,123,456e+02,123,4561010)%格式符:作用是輸出一個格式符:作用是輸出一個% %printfprintf(“(“這個月的出勤率是這個月的出勤率是96%”)96%”);注意:除了注意:除了xX,eE,gGxX,eE,gG以外,都不可以使用大寫,只可以外,都不可以使用大寫,只可以用小寫表示。其中可以使用轉義字符。以用小寫表示。其中可以使用轉義字符。二、二、scanfscanf( )( )函數(shù)函數(shù)( (原形在原形在stdio.hstdio.h中)中)其使用格式為:其使用格式為:scanfscanf( (格式控制符,地址表列格式控制符,地址表列) ) 例如:例如:scanf(“%d%d”,&x,&yscanf(“%d%d”,&x,&y););在這個程序中,在這個程序中,& &x,&yx,&y表示變量表示變量x,yx,y的地址。的地址。& &是取地址是取地址運算符。運算符。& &x x代表變量代表變量x x在內存中的地址。在內存中的地址。在輸入時在兩個數(shù)據(jù)之間要用一個或多個空格分隔:在輸入時在兩個數(shù)據(jù)之間要用一

溫馨提示

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

評論

0/150

提交評論