譚浩強(qiáng)_C程序設(shè)計(jì)教程_第1頁(yè)
譚浩強(qiáng)_C程序設(shè)計(jì)教程_第2頁(yè)
譚浩強(qiáng)_C程序設(shè)計(jì)教程_第3頁(yè)
譚浩強(qiáng)_C程序設(shè)計(jì)教程_第4頁(yè)
譚浩強(qiáng)_C程序設(shè)計(jì)教程_第5頁(yè)
已閱讀5頁(yè),還剩287頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章l主要內(nèi)容主要內(nèi)容1.1 1.1 計(jì)算機(jī)與程序、程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)與程序、程序設(shè)計(jì)語(yǔ)言1.2 1.2 語(yǔ)言出現(xiàn)的歷史背景語(yǔ)言出現(xiàn)的歷史背景1.3 1.3 語(yǔ)言的特點(diǎn)語(yǔ)言的特點(diǎn)1.4 1.4 簡(jiǎn)單的簡(jiǎn)單的C C語(yǔ)言程序語(yǔ)言程序1.5 1.5 運(yùn)行程序的步驟和方法運(yùn)行程序的步驟和方法 1.1計(jì)算機(jī)與程序、程序設(shè)計(jì)語(yǔ)言v計(jì)算機(jī)與程序:要讓計(jì)算機(jī)按照人們的愿望工作,必須由人們事先編制好程序,并輸入到計(jì)算機(jī),讓計(jì)算機(jī)執(zhí)行程序才能產(chǎn)生相應(yīng)的操作結(jié)果。v程序設(shè)計(jì)語(yǔ)言:一個(gè)型號(hào)機(jī)器語(yǔ)言的指令的集合稱為該計(jì)算機(jī)的機(jī)器語(yǔ)言;用一些特定的“助記符號(hào)”代替0和1來表示指令的程序設(shè)計(jì)語(yǔ)言稱為匯編語(yǔ)言;接近于人們習(xí)

2、慣使用的自然語(yǔ)言(英文)和數(shù)學(xué)語(yǔ)言稱為“高級(jí)語(yǔ)言”。1.2 語(yǔ)言出現(xiàn)的歷史背景vC語(yǔ)言是國(guó)際上廣泛流行的高級(jí)語(yǔ)言。vC語(yǔ)言是在B語(yǔ)言的基礎(chǔ)上發(fā)展起來的。vB (BCPL)語(yǔ)言是1970年由美國(guó)貝爾實(shí)驗(yàn)室設(shè)計(jì)的, 并用于編寫了第一個(gè)UNIX操作系統(tǒng)。優(yōu)點(diǎn):簡(jiǎn)單,接近硬件,缺點(diǎn):過于簡(jiǎn)單,功能有限。 v1972年至1973年貝爾實(shí)驗(yàn)室的D.M.Ritchie 在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出了C語(yǔ)言,并用之改寫了原來用匯編編寫的UNIX。后來,C語(yǔ)言多次做了改進(jìn),但主要還是在貝爾實(shí)驗(yàn)室使用。 1.2語(yǔ)言出現(xiàn)的歷史背景v1977年出現(xiàn)了可移植C語(yǔ)言編譯程序 ,推動(dòng)了UNIX在各種機(jī)器上實(shí)現(xiàn) ,C語(yǔ)言也迅速得到

3、推廣,其發(fā)展相輔相成。v1978年在Brian W.Kernighan和Dennis M.Ritchie 合著的影響深遠(yuǎn)的名著The C Programming Language中介紹的C語(yǔ)言成為后來廣泛使用的C語(yǔ)言版本的基礎(chǔ) ,被稱為標(biāo)準(zhǔn)C。v1978年以后,C語(yǔ)言先后移植到大、中、小、微型計(jì)算機(jī)上,風(fēng)靡世界,成為最廣泛的幾種計(jì)算機(jī)語(yǔ)言之一。 1.2語(yǔ)言出現(xiàn)的歷史背景v1983年,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語(yǔ)言各種版本對(duì)C的發(fā)展和擴(kuò)充,制定了新的標(biāo)準(zhǔn)ANSI C ,比標(biāo)準(zhǔn)C有了很大的發(fā)展。v1987年,ANSI公布了新標(biāo)準(zhǔn)87 ANSI C。v1989年,ANSI又公布了一個(gè)新的C

4、語(yǔ)言標(biāo)準(zhǔn)C89v1990年,ISO接受C89作為國(guó)際標(biāo)準(zhǔn)通常稱為C90v1999年,ISO對(duì)C語(yǔ)言標(biāo)準(zhǔn)進(jìn)行修訂,在基本保留原來的C語(yǔ)言特征的基礎(chǔ)上,增加了一些面向?qū)ο蟮奶卣?,?jiǎn)稱為 C99。 v目前流行的C語(yǔ)言編譯系統(tǒng)大多是以C89為基礎(chǔ)進(jìn)行開發(fā)的。1.3 語(yǔ)言的特點(diǎn)(1)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。 32個(gè)關(guān)鍵字、9種控制語(yǔ)句,程序形式自由(2)運(yùn)算符豐富。34種運(yùn)算符 (3)數(shù)據(jù)類型豐富,提供整型、浮點(diǎn)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等,能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(如鏈表、樹、棧等)的運(yùn)算。(4)C語(yǔ)言是完全模塊化和結(jié)構(gòu)化的語(yǔ)言。 (5)語(yǔ)法限制不太嚴(yán)格,程序設(shè)

5、計(jì)自由度大。 1.3 語(yǔ)言的特點(diǎn)(6)允許直接訪問物理地址,可直接對(duì)硬件進(jìn)行操作。兼有高級(jí)和低級(jí)語(yǔ)言的功能 。(7)目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。只比匯編程序生成的目標(biāo)代碼效率低10-20%。(8)用C語(yǔ)言編寫的程序可移植性好?;旧喜蛔鲂薷木湍苡糜诟鞣N型號(hào)的計(jì)算機(jī)和各種操作系統(tǒng)。 1.4 簡(jiǎn)單的C語(yǔ)言程序例1.1#include void main( ) printf (This is a C program.n); /*文件包含*/*主函數(shù) */*函數(shù)體開始*/*輸出語(yǔ)句*/*函數(shù)體結(jié)束*/ main-主函數(shù)名, void-函數(shù)類型v每個(gè)C程序必須有一個(gè)主函數(shù)mainv 是函數(shù)開始和結(jié)束

6、的標(biāo)志,不可省v每個(gè)C語(yǔ)句以分號(hào)結(jié)束v使用標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí)應(yīng)在程序開頭一行寫: #include 說明:說明: 本程序的作用是輸出一行信息本程序的作用是輸出一行信息: :This is a C program.This is a C program.例1. 2 求兩數(shù)之和#include #include void main( ) void main( ) / /* *求兩數(shù)之和求兩數(shù)之和* */ / int a,b,sum; int a,b,sum; / /* *聲明,定義變量為整型聲明,定義變量為整型* */ / / /* *以下以下3 3行為行為C C語(yǔ)句語(yǔ)句 * */ / a=123; b

7、=456; a=123; b=456; sum=a+b; sum=a+b; printf(sum is %d printf(sum is %dn,sum);n,sum); /*/表示注釋。注釋只是給人看的,對(duì)編譯和運(yùn)行不起作用。所以可以用漢字或英文字符表示,可以出現(xiàn)在一行中的最右側(cè),也可以單獨(dú)成為一行。說明:說明: 輸出一行信息輸出一行信息:sum is 579:sum is 579例1.3 求2個(gè)數(shù)中較大者。#include #include void main( ) void main( ) / /* * 主函數(shù)主函數(shù)* */ / int max(int x,int y); int max

8、(int x,int y); / / 對(duì)被調(diào)用函數(shù)對(duì)被調(diào)用函數(shù)maxmax的聲明的聲明 * */ / int a, b, c; int a, b, c; / /* *定義變量定義變量a a、b b、c c * */ / scanf(scanf(d,d,d,&a,&b); d,&a,&b); / /* *輸入變量輸入變量a a和和b b的值的值* */ / c=max(a,b); c=max(a,b); / /* *調(diào)用調(diào)用maxmax函數(shù)函數(shù), ,將得到的值賦給將得到的值賦給c c * */ / printf(max=printf(max=dn,c); dn,c); / /* *輸出輸出c c

9、的值的值* */ / v程序運(yùn)行情況如下:程序運(yùn)行情況如下:v8,5 8,5 ( (輸入輸入8 8和和5 5賦給賦給a a和和b)b)vmax=8 (max=8 (輸出輸出c c的值的值) )int max(int x, int y) int z; if (xy) z=x; else z=y; return (z); max(int x, int y) max(a,b);max(a,b); 本程序包括main和被調(diào)用函數(shù)max兩個(gè)函數(shù)。max函數(shù)的作用是將x和y中較大者的值賦給變量z。return語(yǔ)句將z的值返回給主調(diào)函數(shù)main。 1.4 簡(jiǎn)單的C語(yǔ)言程序(1) C程序是由函數(shù)構(gòu)成的。 這使

10、得程序容易實(shí)現(xiàn)模塊化。 (2) 一個(gè)函數(shù)由兩部分組成: 函數(shù)的首部:例1.3中的max函數(shù)首部 int max(int x,int y ) 函數(shù)體:花括號(hào)內(nèi)的部分。若一個(gè)函數(shù)有多個(gè)花括號(hào),則最外層的一對(duì)花括號(hào)為函數(shù)體的范圍。 函數(shù)體包括兩部分 :聲明部分:int a,b,c; 可缺省執(zhí)行部分:由若干個(gè)語(yǔ)句組成??扇笔?.4 簡(jiǎn)單的C語(yǔ)言程序小結(jié):小結(jié):(3) C程序總是從main函數(shù)開始執(zhí)行的,與main函數(shù)的位置無關(guān)。(4) C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語(yǔ)句, 一個(gè)語(yǔ)句可以分寫在多行上,C程序沒有行號(hào)。(5) 每個(gè)語(yǔ)句和數(shù)據(jù)聲明的最后必須有一個(gè)分號(hào)。分號(hào)是C語(yǔ)句的必要組成部分。即使是

11、程序中最后一個(gè)語(yǔ)句也應(yīng)包含分號(hào) 。 1.4 簡(jiǎn)單的C語(yǔ)言程序小結(jié):小結(jié):(6) C語(yǔ)言本身沒有輸入輸出語(yǔ)句。輸入和輸出的操作是由庫(kù)函數(shù)scanf和printf等函數(shù)來完成的。C對(duì)輸入輸出實(shí)行“函數(shù)化”。(7) 可以用 /*/ 對(duì)C程序中的任何一行或數(shù)行做注釋。一個(gè)好的、有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。 1.5 運(yùn)行程序的步驟和方法1.5.1 運(yùn)行程序的步驟上機(jī)輸入與編輯源程序?qū)υ闯绦蜻M(jìn)行編譯與庫(kù)函數(shù)連接運(yùn)行目標(biāo)程序 1.5 運(yùn)行程序的步驟和方法1.5.2上機(jī)運(yùn)行程序的方法l目前使用的大多數(shù)C編譯系統(tǒng)都是集成環(huán)境(IDE)的。可以用不同的編譯系統(tǒng)對(duì)C程序進(jìn)行操作l常用

12、的有Turbo C 2.0、Turbo C+ 3.0、Visual C+6.0等 l前一段時(shí)間,Turbo C 2.0用得比較多,但Turbo C 2.0是用于DOS環(huán)境的,不能用鼠標(biāo)進(jìn)行操作,很不方便,所以今年來不少人改為用Turbo C+ 3.0或Visual C+ 6.0對(duì)C程序進(jìn)行編譯 第二章l主要內(nèi)容主要內(nèi)容2.1 C2.1 C語(yǔ)言的數(shù)據(jù)類型語(yǔ)言的數(shù)據(jù)類型2.2 2.2 常量與變量常量與變量2.3 2.3 整型數(shù)據(jù)整型數(shù)據(jù)2.4 2.4 浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù)2.5 2.5 字符型數(shù)據(jù)字符型數(shù)據(jù)2.6 2.6 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 2.7 2.7 算術(shù)運(yùn)

13、算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.8 2.8 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 2.1 C的數(shù)據(jù)類型C語(yǔ)言提供了以下一些數(shù)據(jù)類型。 2.2 常量與變量 2.2.1 2.2.1 常量常量v在程序運(yùn)行過程中,其值不能被改變的量稱為常量v常量區(qū)分為不同的類型:整型 100,125,-100,0實(shí)型 3.14 , 0.125,-3.789字符型 a, b,2符號(hào)常量符號(hào)常量為了使用方便,可用一個(gè)符號(hào)名來代表一個(gè)常量。例2.1在程序中使用符號(hào)常量 #define PRICE 30#define PRICE 30#include #include void main ( )void

14、main ( ) int num, total;int num, total; num=10;num=10; total=num total=num * * PRICE; PRICE; printf(total=%dn,total);printf(total=%dn,total); 用一個(gè)標(biāo)識(shí)符代表一個(gè)常量。符號(hào)常量的值在其作用域內(nèi)不能改變,也不能再被賦值。 運(yùn)行結(jié)果:運(yùn)行結(jié)果: total=300total=300 程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運(yùn)算如再用賦值語(yǔ)句給PRICE賦值是錯(cuò)的PRICE=40;/

15、* 錯(cuò)誤,不能給符號(hào)常量賦不能對(duì)符號(hào)常量指定類型int PRICE; /* 錯(cuò)誤,PRICE不是變量,不能指 定類型 */ 2.2 常量與變量 2.2.2 2.2.2變量變量v變量代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來存放數(shù)據(jù),也就是變量的值,在程序運(yùn)行期間,這些值是可以改變的。v變量名實(shí)際上是一個(gè)以一個(gè)名字對(duì)應(yīng)代表一個(gè)地址,在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。2.2 常量與變量 2.2.22.2.2標(biāo)識(shí)符標(biāo)識(shí)符v變量的名字必須符合C語(yǔ)言對(duì)標(biāo)識(shí)符標(biāo)識(shí)符的規(guī)定。v用來標(biāo)識(shí)對(duì)象名字(包括變量

16、、函數(shù)、數(shù)組、類型等)的有效字符序列 。vC語(yǔ)言中,有3類標(biāo)識(shí)符:關(guān)鍵字,系統(tǒng)預(yù)定義的標(biāo)識(shí)符 ,用戶標(biāo)識(shí)符。 C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。 2.2 常量與變量 變量命名的規(guī)定:變量的名字必須符合C語(yǔ)言對(duì)標(biāo)示符得規(guī)定 例:例:sum,_total, month, Student_name, lotus_1_2_,BASIC, li_ling M.D.John, ¥123,3D64,ab 2.2 常量與變量v編譯系統(tǒng)將大寫字母和小寫字母認(rèn)為是兩個(gè)不同的字符。 v建議變量名的長(zhǎng)度最好不要超過8個(gè)字符。v在選擇變量名和其它標(biāo)識(shí)符時(shí),應(yīng)注意做到“

17、見名知意”,即選有含意的英文單詞 (或其縮寫)作標(biāo)識(shí)符。v要求對(duì)所有用到的變量作強(qiáng)制定義,也就是“先定義,后使用” 。 2.3 整型數(shù)據(jù)2.3.12.3.1整型常量的表示形式整型常量的表示形式 整型常量即整常數(shù)。在語(yǔ)言中,整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。 如:如:123, -456,4。(2)八進(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。 2.3 整型數(shù)據(jù)2.3.12.3.1整型常量的表示形式整型常量的表示形式(3)十六進(jìn)制整數(shù)。以0 x開頭的數(shù)是16進(jìn)制數(shù)。 如:如:0 x123,代表16進(jìn)

18、制數(shù)123,等于十進(jìn)制數(shù) 291。 -0 x12等于十進(jìn)制數(shù)10。 2.3.22.3.2整型變量整型變量v整型變量用來存放整數(shù)。整型變量的基本類型符為int。vC語(yǔ)言中有以下3類整型變量 :基本整型,短整型,長(zhǎng)整型。 2.3 整型數(shù)據(jù) 2.3.2整型變量整型變量 ANSI C標(biāo)準(zhǔn)沒有具體規(guī)定以上各類數(shù)據(jù)所占內(nèi)存的字節(jié)數(shù)而是由各計(jì)算機(jī)系統(tǒng)自行決定。 Turbo C中,int型和short型數(shù)據(jù)都是2個(gè)字節(jié),即16個(gè)二進(jìn)制位。long型數(shù)據(jù)是4個(gè)字節(jié),32位。而VC+則給short型數(shù)據(jù)分配2個(gè)字節(jié),16位,int和long型數(shù)據(jù)都是4個(gè)字節(jié),32位 。 2.3 整型數(shù)據(jù) 2.3.2整型變量整型變

19、量一般情況下,存儲(chǔ)整數(shù)時(shí)存儲(chǔ)單元中的第一個(gè)二進(jìn)位用來代表數(shù)值符號(hào),而在實(shí)際應(yīng)用中,變量的值常常是正的 ,所以存儲(chǔ)單元全部用來存儲(chǔ)數(shù)值本身,此定義無符號(hào)整數(shù)。所以歸納起來,在C語(yǔ)言中,可以定義和使用6種整型變量共六種共六種有符號(hào)基本整型有符號(hào)短整型有符號(hào)長(zhǎng)整型無符號(hào)基本整型無符號(hào)短整型無符號(hào)長(zhǎng)整型(signed)int (signed)short (int )(signed) long (int)unsigned intunsigned short (int)unsigned long (int) 注意:注意:括號(hào)表示其中的內(nèi)容是可選的. 2.3 整型數(shù)據(jù) 2.3.2整型變量整型變量v整數(shù)類型的

20、有關(guān)數(shù)據(jù):例2.2 整型變量的定義與使用#include #include void main()() int a,b,c,d; /*指定、為整指定、為整型變量型變量* unsigned ; *指定為無符號(hào)整型變量指定為無符號(hào)整型變量* 12;-24;10; ; printf(,);,); 可以看到不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算可以看到不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算 運(yùn)行結(jié)果:運(yùn)行結(jié)果: , 2.3 整型數(shù)據(jù) 2.3.3整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式 數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式存放。數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式存放。 如如: : int i; /int i; /* *

21、定義為整型變量定義為整型變量 * */ / i=10; / i=10; /* * 給給i i賦以整數(shù)賦以整數(shù)10 10 * */ / i i (a) (b)0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 010例2.3 整型數(shù)據(jù)的溢出#include #include void main()void main()int a,b; int a,b; a=32767; a=32767; b=a+1; b=a+1; printf(“%d,%dn”,a,b); printf(“%d,%dn”,a,b); 數(shù)值是以補(bǔ)碼表示的。一個(gè)整型變量只能容納數(shù)值是以補(bǔ)碼表示的。一個(gè)整型變量只能容納-32

22、768-327683276732767范圍內(nèi)的數(shù),無法表示大于范圍內(nèi)的數(shù),無法表示大于3276732767或小于或小于-32768-32768的數(shù)。遇此情況就的數(shù)。遇此情況就發(fā)生發(fā)生“溢出溢出”。運(yùn)行結(jié)果:運(yùn)行結(jié)果: 32767,-3276832767,-32768 如果系統(tǒng)給一個(gè)整型變量分配2個(gè)字節(jié),則變量的最大允許值為32767,若超出最大職則出現(xiàn)溢出現(xiàn)象。 2.4 浮點(diǎn)型數(shù)據(jù) 2.4.12.4.1浮點(diǎn)型常量的表示形式浮點(diǎn)型常量的表示形式兩種表兩種表示形式示形式十進(jìn)制小數(shù)十進(jìn)制小數(shù)指數(shù)指數(shù)0.1230.1233e-33e-3注意注意: :字母字母e(e(或或E)E)之前必須有數(shù)字,且之前必

23、須有數(shù)字,且e e后面的指數(shù)必須為整數(shù)后面的指數(shù)必須為整數(shù) 2.4 浮點(diǎn)型數(shù)據(jù) 2.4.2 2.4.2 浮點(diǎn)型變量浮點(diǎn)型變量 1 1)浮點(diǎn)型變量分為單精度()浮點(diǎn)型變量分為單精度(floatfloat型)、雙精度(型)、雙精度(doubledouble型)和長(zhǎng)雙精型)和長(zhǎng)雙精度型(度型(long doublelong double)三類形式。)三類形式。 2.4 浮點(diǎn)型數(shù)據(jù) 2.4.2 2.4.2 浮點(diǎn)型變量浮點(diǎn)型變量 2)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式:一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指

24、數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。3)浮點(diǎn)型數(shù)據(jù)的舍入誤差:由于浮點(diǎn)型變量是由有限的存儲(chǔ)單元組成的,因此能提供的有效數(shù)字總是有限的。在有效位以外的數(shù)字將被舍去。由此可能會(huì)產(chǎn)生一些誤差例2.4 浮點(diǎn)型數(shù)據(jù)的舍入誤差#include #include void main()void main()float a,b;float a,b; a = 123456.789e5; a = 123456.789e5; b = a + 20 ; b = a + 20 ; printf(“%fn”,b); printf(“%fn”,b); 一個(gè)浮點(diǎn)型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是

25、無意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)“丟失”小的數(shù)運(yùn)行結(jié)果:運(yùn)行結(jié)果: 123456.789e5123456.789e5 2.4.2 2.4.2 浮點(diǎn)型變量浮點(diǎn)型變量.5 字符型數(shù)據(jù) .5.1 字符常量(1)用單引號(hào)包含的一個(gè)字符是字符型常量(2)只能包含一個(gè)字符a,A, 1a,A, 1abcabc、“a”a” 2.5 字符型數(shù)據(jù) .5.1 字符常量字符常量 有些以有些以“”開頭的特殊字符稱為轉(zhuǎn)義字符開頭的特殊字符稱為轉(zhuǎn)義字符 含含 義義 ASCII代碼代碼 換行,將當(dāng)前位置移到下一行開頭換行,將當(dāng)前位置移到下一行開頭 10 水平制表(跳到

26、下一個(gè)水平制表(跳到下一個(gè)Tab位置)位置) 9 退格,將當(dāng)前位置移到前一列退格,將當(dāng)前位置移到前一列 8 回車,將當(dāng)前位置移到本行開頭回車,將當(dāng)前位置移到本行開頭 13 換頁(yè),將當(dāng)前位置移到下頁(yè)開頭換頁(yè),將當(dāng)前位置移到下頁(yè)開頭 12 a 發(fā)出鈴聲發(fā)出鈴聲 7 代表一個(gè)反斜杠字符代表一個(gè)反斜杠字符“”92 代表一個(gè)單撇號(hào)字符代表一個(gè)單撇號(hào)字符 39 代表一個(gè)雙撇號(hào)字符代表一個(gè)雙撇號(hào)字符34 到位八進(jìn)制數(shù)所代表的字符到位八進(jìn)制數(shù)所代表的字符 到位十六進(jìn)制數(shù)所代表的字符到位十六進(jìn)制數(shù)所代表的字符 例2.5 轉(zhuǎn)義字符的使用#include #include void void ()() ( ab c

27、t ab ct derftgnderftgn); ; printf(htibbj kn); printf(htibbj kn);v打印機(jī)上的顯示結(jié)果:打印機(jī)上的顯示結(jié)果: fab c gde h jikv顯示屏上的運(yùn)行結(jié)果:顯示屏上的運(yùn)行結(jié)果: f gde j k 2.5 字符型數(shù)據(jù) 2.5.22.5.2字符變量字符變量v字符型變量用來存放字符常量,注意只能放一個(gè)字字符型變量用來存放字符常量,注意只能放一個(gè)字符。符。v字符變量的定義形式如下:字符變量的定義形式如下:char c1,c2;char c1,c2;v在本函數(shù)中可以用下面語(yǔ)句對(duì)在本函數(shù)中可以用下面語(yǔ)句對(duì)c1,c2c1,c2賦值:賦值:

28、 c1c1aa;c2c2 b b ;v一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。 2.5 字符型數(shù)據(jù) 2.5.3 2.5.3 字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法v一個(gè)字符常量存放到一個(gè)字符變量中,實(shí)際上并不是把該字符的字型放到一個(gè)字符常量存放到一個(gè)字符變量中,實(shí)際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的內(nèi)存中去,而是將該字符的相應(yīng)的ASCIIASCII代碼放到存儲(chǔ)單元中。這樣使字符代碼放到存儲(chǔ)單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意注意: : 一個(gè)字符數(shù)據(jù)既可以以字符形式輸一

29、個(gè)字符數(shù)據(jù)既可以以字符形式輸, ,也可以以整數(shù)形式輸出以字符也可以以整數(shù)形式輸出以字符形式輸出時(shí)形式輸出時(shí), ,系統(tǒng)先將存儲(chǔ)單元中的系統(tǒng)先將存儲(chǔ)單元中的I I碼轉(zhuǎn)換成相應(yīng)字碼轉(zhuǎn)換成相應(yīng)字符,符, 然后輸出。然后輸出。 以整數(shù)形式輸出時(shí),直接將碼作以整數(shù)形式輸出時(shí),直接將碼作為整數(shù)輸出。也可以對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,為整數(shù)輸出。也可以對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算, 此時(shí)相當(dāng)于對(duì)此時(shí)相當(dāng)于對(duì)它們的碼進(jìn)行算術(shù)運(yùn)算。它們的碼進(jìn)行算術(shù)運(yùn)算。 例2.6 向字符變量賦予整數(shù)。 #include #include void main()void main() char c1,c2; char c1,c2; c1=9

30、7; c1=97; c2=98; c2=98; printf(“%c %cn”,c1,c2); printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); printf(“%d %dn”,c1,c2); 在第在第4 4和第和第5 5行中,將整數(shù)行中,將整數(shù)9797和和9898分別賦給分別賦給c1c1和和c2c2,它的作用相當(dāng)于,它的作用相當(dāng)于以下兩個(gè)賦值語(yǔ)句:以下兩個(gè)賦值語(yǔ)句:c1c1;c2;c2; 因?yàn)橐驗(yàn)閍a和和bb的的ASCIIASCII碼為碼為9797和和9898v運(yùn)行結(jié)果:運(yùn)行結(jié)果: 97 9897 98例2.7 大小寫字母的轉(zhuǎn)換 #include

31、 #include void main()void main() char c1,c2 char c1,c2; c1=a;c1=a; c2=b; c2=b;c1=c1-32;c1=c1-32;c2=c2-32;c2=c2-32; printf(“ printf(“c c cc,c1,c2c1,c2);); 程序的作用是將兩個(gè)小寫字母程序的作用是將兩個(gè)小寫字母a a和和b b轉(zhuǎn)換成大寫字母轉(zhuǎn)換成大寫字母A A和和B B。從。從代碼表中可以看到每一個(gè)小寫字母比它相應(yīng)的大寫字母代碼表中可以看到每一個(gè)小寫字母比它相應(yīng)的大寫字母的的ASCIIASCII碼大碼大3232。語(yǔ)言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)

32、運(yùn)算。語(yǔ)言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。 v運(yùn)行結(jié)果:運(yùn)行結(jié)果: 2.5 字符型數(shù)據(jù) 2.5.3 字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法 有些系統(tǒng)(如有些系統(tǒng)(如Turbo C,VC+Turbo C,VC+)將字符變量定義為)將字符變量定義為signed charsigned char型。其存儲(chǔ)單元中的最高位作為符號(hào)位,型。其存儲(chǔ)單元中的最高位作為符號(hào)位,它的取值范圍是它的取值范圍是-128-128127127。如果在字符變量中存放。如果在字符變量中存放一個(gè)一個(gè)ASCIIASCII碼為碼為0 0127127間的字符,由于字節(jié)中最高位間的字符,由于字節(jié)

33、中最高位為為0 0,因此用,因此用%d%d輸出字符變量時(shí),輸出的是一個(gè)正整輸出字符變量時(shí),輸出的是一個(gè)正整數(shù)。如果在字符變量中存放一個(gè)數(shù)。如果在字符變量中存放一個(gè)ASCIIASCII碼為碼為128128255255間的字符,由于在字節(jié)中最高位為間的字符,由于在字節(jié)中最高位為1 1,用,用%d%d格式符輸格式符輸出時(shí),就會(huì)得到一個(gè)負(fù)整數(shù)。出時(shí),就會(huì)得到一個(gè)負(fù)整數(shù)。 2.5 字符型數(shù)據(jù) 2.5.4 2.5.4 字符串常量字符串常量v字符串常量是一對(duì)雙撇號(hào)括起來的字符序列字符串常量是一對(duì)雙撇號(hào)括起來的字符序列. .v合法的字符串常量合法的字符串常量: :“How do you do.”, “CHIN

34、A”How do you do.”, “CHINA”, “ “a” a” , “$123.45”$123.45”v可以輸出一個(gè)字符串,如可以輸出一個(gè)字符串,如printf(“How do you do.”)printf(“How do you do.”); 2.5 字符型數(shù)據(jù) 2.5.4 字符串常量字符串常量 是字符常量, “a”是字符串常量,二者不同。 如:如:假設(shè)被指定為字符變量 :char c c= a; “a” ;c “CHINA”; 結(jié)論:結(jié)論:不能把一個(gè)字符串常量賦給一個(gè)字符變量。v規(guī)定:在每一個(gè)字符串常量的結(jié)尾加一個(gè)規(guī)定:在每一個(gè)字符串常量的結(jié)尾加一個(gè) “ “字符字符串結(jié)束標(biāo)志串

35、結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。規(guī)定以字符規(guī)定以字符作為字符串結(jié)束標(biāo)志。作為字符串結(jié)束標(biāo)志。 如:如:如果有一個(gè)字符串常量” ,實(shí)際上在內(nèi)存中是:CHINA0 它占內(nèi)存單元不是個(gè)字符,而是個(gè)字符,最后一個(gè)字符為。但在輸出時(shí)不輸出。 2.5 字符型數(shù)據(jù) 2.5.4 字符串常量字符串常量 2.6 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 混合運(yùn)算:整型(包括int,short,long)、浮點(diǎn)型(包括float,double)可以混合運(yùn)算。在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算.說明: 這種類型轉(zhuǎn)換是由系統(tǒng)自動(dòng)進(jìn)行的。 2.7 算術(shù)運(yùn)算符和算術(shù)

36、表達(dá)式 1. 1. 語(yǔ)言的運(yùn)算符有以下幾類:語(yǔ)言的運(yùn)算符有以下幾類:算術(shù)運(yùn)算符 (+ - * / %)關(guān)系運(yùn)算符 (!)邏輯運(yùn)算符 (!|)位運(yùn)算符 ( |)賦值運(yùn)算符 (及其擴(kuò)展賦值運(yùn)算符)條件運(yùn)算符 (?:)逗號(hào)運(yùn)算符 (,) 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.1 C語(yǔ)言運(yùn)算符和語(yǔ)言運(yùn)算符和C算術(shù)表達(dá)式簡(jiǎn)介算術(shù)表達(dá)式簡(jiǎn)介(8)指針運(yùn)算符 (*和)(9)求字節(jié)數(shù)運(yùn)算符()(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符( (類型) )(11)分量運(yùn)算符(-)(12)下標(biāo)運(yùn)算符()(13)其他 (如函數(shù)調(diào)用運(yùn)算符() 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.1 C語(yǔ)言運(yùn)算符和語(yǔ)言運(yùn)算符和C算術(shù)表達(dá)式簡(jiǎn)介算術(shù)表

37、達(dá)式簡(jiǎn)介2. C語(yǔ)言的表達(dá)式有以下幾類:語(yǔ)言的表達(dá)式有以下幾類:(1)算術(shù)表達(dá)式:如2+6.7*3.5+sin(0.5)(2)關(guān)系表達(dá)式:如x0,y0 & y0 (表示x0與y0同時(shí)成立,&是邏輯運(yùn)算符,代表“與”)(4)賦值表達(dá)式:如a=5.6(5)逗號(hào)表達(dá)式:如a=3,y=4,z=8 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 1. 1. 基本的算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算符: : (加法運(yùn)算符,或正值運(yùn)算符。如:、) (減法運(yùn)算符,或負(fù)值運(yùn)算符。如:、)* * (乘法運(yùn)算符。如:*) (除法運(yùn)算符。兩個(gè)整數(shù)相除的結(jié)果為整數(shù)兩個(gè)整數(shù)相除的結(jié)果為整數(shù),如:結(jié)果為) (模運(yùn)算符,或稱求余運(yùn)算符,兩側(cè)均應(yīng)為整型

38、 數(shù)據(jù),如:的值為)。 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2. 2. 算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性 用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來的、符合語(yǔ)法規(guī)則的式子,稱為算術(shù)表達(dá)式算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。 例如例如: : *.5a 是一個(gè)合法的表達(dá)式v語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。 在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行,例如先乘除后加減。 v規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性) 算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,即先左后?。 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 3. 3. 強(qiáng)制類型

39、轉(zhuǎn)換運(yùn)算符強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。 一般形式:(類型名)(表達(dá)式)說明: 表達(dá)式應(yīng)該用括號(hào)括起來。 在強(qiáng)制類型轉(zhuǎn)換時(shí),得到一個(gè)所需類型的中間變量,原來變量的類型未發(fā)生變化。例2.8 強(qiáng)制類型轉(zhuǎn)換。 #include #include void main()void main() float x;float x; int i; int i; x=3.6; x=3.6; i=(int)x; i=(int)x; printf(x=%f, printf(x=%f, i=%dn,x,i);i=%dn,x,i); 有兩種類型轉(zhuǎn)換,一種是在運(yùn)算時(shí)不必用戶指定

40、,系統(tǒng)自動(dòng)進(jìn)行的類型轉(zhuǎn)換,如3+6.5。第二種是強(qiáng)制類型轉(zhuǎn)換。當(dāng)自動(dòng)類型轉(zhuǎn)換不能實(shí)現(xiàn)目的時(shí),可以用強(qiáng)制類型轉(zhuǎn)換。v運(yùn)行結(jié)果:運(yùn)行結(jié)果: x3.600000, i=3 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 4. 4. 自增、自減運(yùn)算符自增、自減運(yùn)算符 作用是使變量的值增或減如如: v,(在使用之前,先使的值加 (減)v,(在使用之后,使的值加( 減) 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式i+i+與與+i+i的區(qū)別:的區(qū)別: 是先執(zhí)行后,再使用的值; 是先使用的值后,再執(zhí)行。例如:例如: ; i的值先變成4, 再賦給,j的值為 ; 先將

41、i的值3賦給,的值為,然后變?yōu)?2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式注意:注意: (1)自增運(yùn)算符(),自減運(yùn)算符(),只能用于變量,而不能用于常量或表達(dá)式, (2)和的結(jié)合方向是“自右至左”。 (3)自增(減)運(yùn)算符常用于循環(huán)語(yǔ)句中使循環(huán)變 量自動(dòng)加。也用于指針變量,使指針指向下一個(gè)地址。 (4)使用和時(shí) ,為避免二義性,最好采取大家都能理解的寫法,可以加一些“不必要”的括號(hào),如(i+)+j。 2.8 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符: :將兩個(gè)表達(dá)式連接起來,又稱為“順序求值運(yùn)算符”。 如:如:5, 一般形式一般形式: : 表達(dá)式,表達(dá)式表達(dá)式,表達(dá)

42、式求解過程:求解過程: 先求解表達(dá)式,再求解表達(dá)式。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式的值。 逗號(hào)表達(dá)式 的值為14 2.8 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式例:例:逗號(hào)表達(dá)式*5,* 分析分析: :賦值運(yùn)算符的優(yōu)先級(jí)別高于逗號(hào)運(yùn)算符, 因此應(yīng)先求解*5。的值為5,然后求解*,得。整個(gè)逗號(hào)表達(dá)式的值為。 一個(gè)逗號(hào)表達(dá)式又可以與另一個(gè)表達(dá)式組一個(gè)逗號(hào)表達(dá)式又可以與另一個(gè)表達(dá)式組成一個(gè)新的逗號(hào)表達(dá)式。成一個(gè)新的逗號(hào)表達(dá)式。 如如: :(*,*),a+5 先計(jì)算出的值等于,再進(jìn)行*的運(yùn)算得60(但值未變,仍為15),再進(jìn)行得,即整個(gè)表達(dá)式的值為。 2.8 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 逗號(hào)表達(dá)式的一般形式可以擴(kuò)展為 表達(dá)式

43、,表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式 它的值為表達(dá)式的值。 逗號(hào)運(yùn)算符是所有運(yùn)算符中級(jí)別最低的例例: : (,*) ,*3賦值表達(dá)式,將一個(gè)逗號(hào)表達(dá)式的值賦給,的值等于 逗號(hào)表達(dá)式,包括一個(gè)賦值表達(dá)式和一個(gè)算術(shù)表達(dá)式,的值為,整個(gè)逗號(hào)表達(dá)式的值為18。 2.8 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式注意注意: :并不是任何地方出現(xiàn)的逗號(hào)都是作為逗號(hào)運(yùn)算符。例如函數(shù)參數(shù)也是用逗號(hào)來間隔的。 如如: printf(“%d,%d,%d”,a,b,c);“,”并不是一個(gè)逗號(hào)表達(dá)式,它是printf函數(shù)的3個(gè)參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c) “(,)”是一個(gè)逗號(hào)表達(dá)式

44、,它的值等于的值。 第三章l 主要內(nèi)容主要內(nèi)容3.1 3.1 程序的三種基本結(jié)構(gòu)程序的三種基本結(jié)構(gòu)3.2 C3.2 C語(yǔ)句概述語(yǔ)句概述3.3 3.3 賦值表達(dá)式和賦值語(yǔ)句賦值表達(dá)式和賦值語(yǔ)句3.4 3.4 數(shù)據(jù)輸入輸出的概念及在數(shù)據(jù)輸入輸出的概念及在C C語(yǔ)言中的實(shí)現(xiàn)語(yǔ)言中的實(shí)現(xiàn)3.5 3.5 字符數(shù)據(jù)的輸入輸出字符數(shù)據(jù)的輸入輸出3.6 3.6 簡(jiǎn)單的格式輸入與輸出簡(jiǎn)單的格式輸入與輸出3.7 3.7 較復(fù)雜的輸入輸出格式控制較復(fù)雜的輸入輸出格式控制3.8 3.8 順序結(jié)構(gòu)程序設(shè)計(jì)舉例順序結(jié)構(gòu)程序設(shè)計(jì)舉例3.1 程序的三種基本結(jié)構(gòu)v一個(gè)良好的程序由以下三種基本結(jié)構(gòu)組成: (1) 順序結(jié)構(gòu):各操作

45、步驟順序執(zhí)行,是一種最簡(jiǎn)單的基本結(jié)構(gòu)。 3.2 C語(yǔ)句概述C程序源程序文件1源程序文件2源程序文件n預(yù)處理命令函數(shù)n函數(shù)1數(shù)據(jù)聲明函數(shù)首部函數(shù)體數(shù)據(jù)聲明執(zhí)行語(yǔ)句C程序的結(jié)構(gòu):程序的結(jié)構(gòu): 3.2 C語(yǔ)句概述 v一個(gè)c程序可以有若干個(gè)源程序文件組成v一個(gè)源文件可以有若干個(gè)函數(shù)和預(yù)處理命令以及全局變量聲明部分組成v一個(gè)函數(shù)有函數(shù)首部和函數(shù)體組成v函數(shù)體由數(shù)據(jù)聲明和執(zhí)行語(yǔ)句組成vC語(yǔ)句分為5類類控制語(yǔ)句控制語(yǔ)句函數(shù)調(diào)用語(yǔ)句函數(shù)調(diào)用語(yǔ)句表達(dá)式語(yǔ)句表達(dá)式語(yǔ)句空語(yǔ)句空語(yǔ)句復(fù)合語(yǔ)句復(fù)合語(yǔ)句 3.2 C語(yǔ)句概述 (一)控制語(yǔ)句 完成一定的控制功能 1 if() else 條件語(yǔ)句條件語(yǔ)句 6 break 中止

46、語(yǔ)句中止語(yǔ)句 2 for() 循環(huán)語(yǔ)句循環(huán)語(yǔ)句 7 switch() 多分支選擇語(yǔ)句多分支選擇語(yǔ)句 3 while()循環(huán)語(yǔ)句循環(huán)語(yǔ)句 8 return 返回語(yǔ)句返回語(yǔ)句 4 do while();循環(huán)語(yǔ)句循環(huán)語(yǔ)句 9 goto 轉(zhuǎn)向語(yǔ)句轉(zhuǎn)向語(yǔ)句 5 continue 結(jié)束本次循環(huán)語(yǔ)句結(jié)束本次循環(huán)語(yǔ)句 3.2 C語(yǔ)句概述 (二)函數(shù)調(diào)用語(yǔ)句 由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成 Printf(“This is a C statement.”); 3.2 C語(yǔ)句概述 (三)表達(dá)式語(yǔ)句 由一個(gè)表達(dá)式加一個(gè)分號(hào)構(gòu)成 a = 3 ;分號(hào)賦值表達(dá)式表達(dá)式語(yǔ)句 3.2 C語(yǔ)句概述 (四)空語(yǔ)句 只有一個(gè)分號(hào)的語(yǔ)句

47、 (什么也不做)(什么也不做)v用來做流程的轉(zhuǎn)向點(diǎn)用來做流程的轉(zhuǎn)向點(diǎn)v用來作為循環(huán)語(yǔ)句中的循環(huán)體用來作為循環(huán)語(yǔ)句中的循環(huán)體 3.2 C語(yǔ)句概述 (五)復(fù)合語(yǔ)句 用一對(duì)括起來的語(yǔ)句 z=x+y;t=z/100;printf(“%f”,t);注意:注意:復(fù)合語(yǔ)句中最后一個(gè)語(yǔ)句中最后的分號(hào)不能忽略不寫。復(fù)合語(yǔ)句中最后一個(gè)語(yǔ)句中最后的分號(hào)不能忽略不寫。 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.1 賦值表達(dá)式1.1.賦值運(yùn)算符賦值運(yùn)算符 賦值符號(hào)“”就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。 賦值語(yǔ)句是由賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成例:例: “a=3” 把常量賦把常量賦給變量給變量 也可以將一個(gè)表達(dá)

48、式的值賦給一個(gè)變量 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.1 賦值表達(dá)式. .復(fù)合的賦值運(yùn)算符復(fù)合的賦值運(yùn)算符 在賦值符“”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符。例:例: 等價(jià)于 先計(jì)算加,再賦給 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.1 賦值表達(dá)式v可以這樣理解: a += b ( a += b (其中其中a a為變量,為變量,b b為表達(dá)式為表達(dá)式) )a + = ba + = b(將有下劃線的(將有下劃線的“a+”a+”移到移到“=”=”右側(cè))右側(cè)) | | a = a + b a = a + b(在(在“=”=”左側(cè)補(bǔ)上變量名左側(cè)補(bǔ)上變量名a a) 3.3 賦值表達(dá)式和賦值語(yǔ)句 3

49、.3.1 賦值表達(dá)式v如果是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有括號(hào)。例:例: x %= y + 3 x %= (y + 3) |_ x = x %(y + 3) (不要錯(cuò)寫成(不要錯(cuò)寫成 x = x % y + 3 ) 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.1 賦值表達(dá)式v凡是二元(二目)運(yùn)算符,都可以與賦值符一起組合成復(fù)合賦值符。有關(guān)算術(shù)運(yùn)箅的復(fù)合賦值運(yùn)算符有:,*, v語(yǔ)言采用這種復(fù)合運(yùn)算符,一是為了簡(jiǎn)化程序,使程序精練,二是為了提高編譯效率,能產(chǎn)生質(zhì)量較高的目標(biāo)代碼。 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.1 賦值表達(dá)式3.3.賦值表達(dá)式賦值表達(dá)式 由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起

50、來的式子。v一般形式為:變量變量 賦值運(yùn)算符賦值運(yùn)算符 表達(dá)式表達(dá)式v賦值表達(dá)式的求解過程:先求賦值運(yùn)算符右側(cè)的先求賦值運(yùn)算符右側(cè)的“表達(dá)式表達(dá)式”的值,然后賦給賦值運(yùn)算符左側(cè)的變量。的值,然后賦給賦值運(yùn)算符左側(cè)的變量。v賦值運(yùn)算符左側(cè)的標(biāo)識(shí)符稱為“左值” v出現(xiàn)在賦值運(yùn)算符右側(cè)的表達(dá)式稱為“右值” v注意:注意:并不是任何對(duì)象都可以作為左值的,表達(dá)式和常變量就不能作為左值。任何左值并不是任何對(duì)象都可以作為左值的,表達(dá)式和常變量就不能作為左值。任何左值都可做右值。都可做右值。 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.1 賦值表達(dá)式 說明:賦值運(yùn)算符按照“自右而左”的結(jié)合順序,因此,“a=(b=5

51、)”和“a=b=5”等價(jià) v賦值表達(dá)式中的“表達(dá)式”,又可以是一個(gè)賦值表達(dá)式。 例:例:a=(b=5) 相當(dāng)于執(zhí)行相當(dāng)于執(zhí)行“b=5”和和“ab”兩兩 個(gè)賦值表達(dá)式個(gè)賦值表達(dá)式 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.1 賦值表達(dá)式 分析賦值表達(dá)式: (a=3*5)=4*3 賦值表達(dá)式為左值右值先執(zhí)行括號(hào)內(nèi)的運(yùn)算,將15賦給a,然后執(zhí)行4*3的運(yùn)算,得12,再把12賦給a。最后a的值為12,整個(gè)表達(dá)式的值為12。 賦值表達(dá)式作為左值時(shí)應(yīng)加括號(hào) 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.1 賦值表達(dá)式 求解步驟如下求解步驟如下: : 先進(jìn)行先進(jìn)行“* *”的運(yùn)算,的運(yùn)算, 它相當(dāng)于它相當(dāng)于: : *

52、*,a a的值為的值為144144132132。 再進(jìn)行再進(jìn)行“”的運(yùn)算,相當(dāng)于的運(yùn)算,相當(dāng)于: : =a+(-132)=a+(-132),a a的值為的值為132-132132-132-264-264。v賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.1 賦值表達(dá)式v賦值表達(dá)式作為表達(dá)式的一種,不僅可以出現(xiàn)在賦值語(yǔ)句中,而且可以以表達(dá)式形式出現(xiàn)在其他語(yǔ)句(如輸出語(yǔ)句、循環(huán)語(yǔ)句等)中 。printf(%d,a=b); 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.2 賦值過程中的類型轉(zhuǎn)換v如果賦值運(yùn)算符兩側(cè)的類型一致,則直接進(jìn)行賦值。i=6 (假設(shè)i已定義為int型)v如

53、果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值型或字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。類型轉(zhuǎn)換是系統(tǒng)自動(dòng)進(jìn)行的。 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.2 賦值過程中的類型轉(zhuǎn)換v轉(zhuǎn)換規(guī)則轉(zhuǎn)換規(guī)則: 將浮點(diǎn)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),先對(duì)浮點(diǎn)數(shù)取為整,然后賦予整型變量。 將整型數(shù)據(jù)賦給單、雙精度變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中。 將一個(gè)double型數(shù)據(jù)賦給float變量時(shí),截取其前面7位有效數(shù)字,存放到float變量的存儲(chǔ)單元(4個(gè)字節(jié))中。但應(yīng)注意數(shù)值范圍不能溢出;將一個(gè)float型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到16位,在內(nèi)存中以8個(gè)字節(jié)存儲(chǔ)。 v轉(zhuǎn)換規(guī)

54、則轉(zhuǎn)換規(guī)則:字符型數(shù)據(jù)賦給整型變量時(shí),將字符的ASCII碼賦給整型變量。將一個(gè)占字節(jié)多的整型數(shù)據(jù)賦給一個(gè)占字節(jié)少的整型變量/字符變量時(shí),只將其低字節(jié)原封不動(dòng)地送到該變量 i=289 c=33將有符號(hào)整數(shù)賦值給長(zhǎng)度相同的無符號(hào)整型變量時(shí),按字節(jié)原樣賦值。0 0 0 0 0 0 0 10 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1例3.1有符號(hào)整數(shù)賦值給無符號(hào)整型變量,數(shù)據(jù)會(huì)失真。 #include void main ( ) unsigned a; /* 定義定義a為無符號(hào)整型變量為無符號(hào)整型變量 */ int b; /* 定義定義b為有符號(hào)整型變量為有符號(hào)整型變量 */ b=-

55、1; b a=b; a printf(%un,a); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:4294967295 由于a是無符號(hào)整型變量,因此不能用%d輸出格式符,而要用輸出無符號(hào)數(shù)的“%u”格式符。1 1 11 11 11 11 11 11 111 1 11 11 11 11 11 11 11例:3.2 無符號(hào)整數(shù)賦值給有符號(hào)整型變量,注意數(shù)值范圍。#include void main ( ) unsigned a; int b; a=65535; /* 兩個(gè)字節(jié)兩個(gè)字節(jié)16位全為位全為1 */ b=a; /* b的數(shù)值范圍為的數(shù)值范圍為-3276832767 */ printf(%dn,b);運(yùn)行結(jié)果運(yùn)行結(jié)

56、果 -1 執(zhí)行“b=a”時(shí),將a的兩個(gè)字節(jié)(全1)賦給b,由于是有符號(hào)的整型數(shù),笫1個(gè)二進(jìn)位是1表示此數(shù)是一個(gè)負(fù)數(shù),16位全1是-1的補(bǔ)碼。轉(zhuǎn)換規(guī)則:轉(zhuǎn)換規(guī)則:將無符號(hào)整數(shù)賦值給長(zhǎng)度相同的有符號(hào)整型變量時(shí),應(yīng)將無符號(hào)整數(shù)賦值給長(zhǎng)度相同的有符號(hào)整型變量時(shí),應(yīng)注意不要超出有符號(hào)整型變量的數(shù)值范圍,否則會(huì)出錯(cuò)。注意不要超出有符號(hào)整型變量的數(shù)值范圍,否則會(huì)出錯(cuò)。 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.3 賦值語(yǔ)句v賦值語(yǔ)句是由賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成。 v賦值表達(dá)式的作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量。v賦值表達(dá)式具有計(jì)算和賦值雙重功能。程序中的計(jì)算功能主要是由賦值語(yǔ)句來完成。v語(yǔ)言的賦值語(yǔ)句與其他

57、高級(jí)語(yǔ)言的賦值語(yǔ)句之間的差異: (1) 語(yǔ)言中的賦值號(hào)“”是一個(gè)運(yùn)算符,在其他大多數(shù)語(yǔ)言中賦值號(hào)不是運(yùn)算符。 (2) 要區(qū)別賦值表達(dá)式和賦值語(yǔ)句。其他多數(shù)高級(jí)語(yǔ)言沒有“賦值表達(dá)式”這一概念。 3.3 賦值表達(dá)式和賦值語(yǔ)句 3.3.4 變量賦初值v程序中對(duì)變量賦初值的方法有兩種在定義變量的同時(shí)使變量初始化(更方便)int a=3; * 指定為整型變量,初值為 *float f=3.56; * 為浮點(diǎn)型變量,初值.56 *char c=a; * 指定為字符變量,初值為a *用賦值語(yǔ)句對(duì)變量賦值 int a; * 指定為整型變量*; * 賦值語(yǔ)句,將賦給*3.4 數(shù)據(jù)輸入輸出的概念 及在C語(yǔ)言中的實(shí)

58、現(xiàn)(一).所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的輸出輸出:從計(jì)算機(jī)向外部輸出設(shè)備(顯示器,打印機(jī)) 輸出數(shù)據(jù)輸入輸入:從輸入設(shè)備(鍵盤,鼠標(biāo),掃描儀)向計(jì)算機(jī) 輸入數(shù)據(jù).(二).C語(yǔ)言本身不提供輸入輸出語(yǔ)句,輸入和輸出操作是由C函數(shù)庫(kù)中的函數(shù)來實(shí)現(xiàn)的例如例如: :字符輸入函數(shù): getchar字符輸出函數(shù):putchar格式輸入函數(shù): scanf 格式輸出函數(shù): printf字符串輸入函數(shù):gets 字?jǐn)?shù)穿輸出函數(shù):puts 3.4 數(shù)據(jù)輸入輸出的概念 及在C語(yǔ)言中的實(shí)現(xiàn)(三).在使用系統(tǒng)庫(kù)函數(shù)時(shí),要用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中。例如:在調(diào)用標(biāo)準(zhǔn)輸入輸出

59、庫(kù)函數(shù)時(shí),文件開頭應(yīng)該有: #include “stdio.h” 或: #include 頭文件 3.4 數(shù)據(jù)輸入輸出的概念 及在C語(yǔ)言中的實(shí)現(xiàn)3.5 字符數(shù)據(jù)的輸入輸出3.5.1 用putchar函數(shù)輸出一個(gè)字符 vputchar函數(shù)(字符輸出函數(shù))的作用是向終端輸出一個(gè)字符。v一般形式為 putchar(c) 可以是字符型變量或整型變量 例3.3 輸出單個(gè)字符。#include#includevoid main()void main() char a,b,c;char a,b,c;a=B;b=O;c=Y;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c

60、);putcharputchar(a);putchar(b);putchar(c);putchar(n);(n); 運(yùn)行結(jié)果:BOYputchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);運(yùn)行結(jié)果:B O Y3.5 字符數(shù)據(jù)的輸入輸出3.5.2 用getchar函數(shù)輸入一個(gè)字符 vgetchar函數(shù)(字符輸入函數(shù))的作用是從計(jì)算機(jī)終端輸入一個(gè)字符。 vgetchar函數(shù)沒有參數(shù),一般形式為 getchar()函數(shù)的值就是從輸入設(shè)備得到的字符 例3.4 輸入單個(gè)字符。#include#includevoid main()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論