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

下載本文檔

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

文檔簡介

第1章預(yù)備知識

C

語言程序設(shè)計2023/11/1621.1程序設(shè)計與算法概述主要內(nèi)容:計算機語言與程序設(shè)計算法結(jié)構(gòu)化程序設(shè)計

2023/11/1631.1.1計算機語言與程序設(shè)計1.計算機語言是人與計算機進行交流的工具計算機語言分為:機器語言機器指令(由0和1組成),可直接執(zhí)行難學、難記依賴機器的類型匯編語言用助記符代替機器指令,用變量代替各類地址。克服記憶的難點其他與機器語言類似高級語言類似數(shù)學語言、接近自然語言、具有通用性和可移植性,不依賴具體的計算機類型。2023/11/164例如:00100011111011010110000101110110機器語言程序MOVAX,

300HADDBX,AXMOV[2100H],BX

HLT匯編語言源程序main(){inta,b,c;a=300;b=18;c=a+b;printf(“a+b=%d\n”,c);}高級語言源程序(C)源程序需要翻譯2023/11/165匯編源程序的翻譯:將匯編源程序翻譯為目標程序的過程稱為匯編匯編過程:圖1.1匯編過程匯編程序連接程序匯編連接匯編語言源程序機器語言目標程序可執(zhí)行程序(.ASM)(.OBJ)(.EXE)運行運行結(jié)果2023/11/166高級語言的翻譯:編譯方法圖1.2編譯過程(.C或.PAS等)編譯程序連接程序編譯連接高級語言源程序機器語言目標程序可執(zhí)行程序(.OBJ)(.EXE)運行運行結(jié)果解釋程序高級語言源程序解釋執(zhí)行運行結(jié)果圖1.3解釋過程(.BAS)解釋方法2023/11/1672.程序設(shè)計用計算機解決一個實際應(yīng)用問題時的整個處理過程稱為程序設(shè)計

提出問題確定數(shù)據(jù)結(jié)構(gòu)確定算法編寫程序調(diào)試和運行程序輸入程序翻譯(編譯或解釋)得到運行結(jié)果2023/11/1681.1.2算法什么是算法為解決某一應(yīng)用問題而采用的解題步驟算法的描述方式

用自然語言描述算法

用流程圖描述算法

用N-S結(jié)構(gòu)圖描述算法

例如:輸出兩個數(shù)中的最大數(shù)2023/11/169用自然語言描述算法第一步:輸入x和y的值第二步:比較x和y的值,如果x大于y,則輸出x的值,否則輸出y的值。

易于理解,但冗長,不夠精確,難于描述復(fù)雜算法。例如當描述“輸出10個數(shù)中最大數(shù)”的算法時,會冗長、難于理解2023/11/1610圖1.5用流程圖描述算法用流程圖描述算法NYz=yz=xx>y?開始輸入x和y結(jié)束輸出z起止框輸入/輸出框判斷框處理框流程線2023/11/1611用N-S結(jié)構(gòu)圖描述算法輸入x、y的值x>yTFz=xz=y輸出z的值圖1.7用N-S結(jié)構(gòu)圖描述的算法已經(jīng)證明,任何復(fù)雜的問題都可以三種基本算法結(jié)構(gòu)來描述:順序、選擇、循環(huán)。因此用計算機語句描述的程序也包含三種基本結(jié)構(gòu)。

2023/11/16121.1.3結(jié)構(gòu)化程序設(shè)計程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)程序:按照書寫順序依次執(zhí)行語句選擇結(jié)構(gòu)程序:按照條件判斷選擇執(zhí)行語句循環(huán)結(jié)構(gòu)程序:通過條件控制循環(huán)執(zhí)行語句三種基本結(jié)構(gòu)的共同點:都是只有一個入口和一個出口;結(jié)構(gòu)內(nèi)的每一個框都有機會被執(zhí)行;結(jié)構(gòu)內(nèi)沒有死循環(huán)。2023/11/1613結(jié)構(gòu)化程序設(shè)計的基本原則:如果一個程序僅包含這三種基本結(jié)構(gòu)(由這些基本結(jié)構(gòu)順序組成),則稱為結(jié)構(gòu)化程序。結(jié)構(gòu)化程序設(shè)計的基本原則:采用自頂向下、逐步細化的方法進行設(shè)計;采用模塊化原則和方法進行設(shè)計。即將大型任務(wù)從上向下劃分為多個功能模塊,每個模塊又可以劃分為若干子模塊,然后分別進行模塊程序的編寫;每個模塊都是用結(jié)構(gòu)化程序?qū)崿F(xiàn),即都只能由三種基本結(jié)構(gòu)組成,并通過計算機語言的結(jié)構(gòu)化語句實現(xiàn)。2023/11/16141.2C語言概述主要內(nèi)容:C語言的發(fā)展C語言的特點C程序的基本結(jié)構(gòu)C程序的執(zhí)行過程2023/11/16151.2.1C語言的發(fā)展發(fā)展過程

B語言:Bell實驗室,1970年在PDP機器上用其編寫UNIX系統(tǒng)CPL語言:劍橋大學,1963年BCPL語言:劍橋大學,1967年C語言:Bell實驗室,1972~1973年用其改寫UNIX系統(tǒng)經(jīng)簡化進一步簡化保持精練、接近硬件的優(yōu)點,克服數(shù)據(jù)類型過少的不足2023/11/16161.2.2C語言的特點語言簡潔,表達能力強,易于理解只有32個關(guān)鍵字,9種控制語句數(shù)據(jù)構(gòu)造能力強運算符豐富程序書寫格式自由可直接訪問物理地址,實現(xiàn)對硬件和低層系統(tǒng)軟件的訪問語言生成的代碼質(zhì)量高可移植性好增加學習難度2023/11/16171.2.3C程序的基本結(jié)構(gòu)【例1.1】計算并輸出一個數(shù)a的平方。

main(){

floata,b;a=5.2;b=a*a;printf("b=%f\n",b);

}

main

為函數(shù)名程序從這里開始運行函數(shù)體開始函數(shù)體結(jié)束函數(shù)體內(nèi)定義a,b為a賦值計算并輸出平方值b執(zhí)行程序的輸出結(jié)果為:b=27.039997

2023/11/16181.2.3C程序的基本結(jié)構(gòu)【例1.2】輸入兩個數(shù),輸出其中的大數(shù)。intmax(intx,inty)

/*max函數(shù)*/{

intz;if(x>y)z=x;elsez=y;return(z);}main()

/*主函數(shù)*/{inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);/*調(diào)用max函數(shù),求a和b中大數(shù)*/

printf("max=%d\n",c);}2023/11/1619C程序結(jié)構(gòu)C程序由函數(shù)構(gòu)成必須有,且只能有一個main(主函數(shù))總是從main函數(shù)開始執(zhí)行函數(shù)由函數(shù)首部和函數(shù)體組成函數(shù)首部指定函數(shù)名、函數(shù)參數(shù)、類型函數(shù)體從{開始,到}結(jié)束函數(shù)內(nèi)有語句2023/11/1620C程序結(jié)構(gòu)(續(xù))語句包括說明性語句、可執(zhí)行語句以;表示語句結(jié)束注釋可以出現(xiàn)在程序的任何位置

用/*和*/括起來,必須成對出現(xiàn)書寫格式C語言沒有行的概念,書寫格式自由。習慣小寫字母,縮進格式。2023/11/16211.2.4C程序的執(zhí)行過程

1.源程序文件的建立和編輯

編寫源程序,形成.C文件需用編輯工具:tc.exe、記事本2.編譯

編譯源程序,形成目標程序.Obj文件需用編譯工具:tcc.exe3.連接

連接OBJ文件和調(diào)用的庫函數(shù),形成運行程序

.exe

文件需用連接工具:tlink.exe4.運行

.exe

文件運行jc1_2TurboC提供集成化開發(fā)環(huán)境2023/11/16221.3C程序的符號系統(tǒng)主要內(nèi)容:基本字符標識符2023/11/16231.3.1基本字符大寫英文字母:ABC……XYZ

小寫英文字母:abc……xyz

數(shù)字:012……9

空白符:空格符、換行符、制表符

特殊字符:+-*/<>()[]{}_=!#%.,;:‘

“|&?$^\~

2023/11/16241.3.2標識符

由字母、下劃線和數(shù)字組成的字符序列用于程序中的變量、符號常量、數(shù)組、函數(shù)、數(shù)據(jù)類型等操作對象的名字1.系統(tǒng)定義標識符具有固定名字和特定含義的標識符分為關(guān)鍵字和預(yù)定義標識符

2.用戶定義標識符

用于對用戶使用的變量、數(shù)組、函數(shù)等操作對象進行命名2023/11/1625關(guān)鍵字

數(shù)據(jù)類型:

int、char、float、double、short、long、void、signed、unsigned、enum、struct、union、const、typedef、volatile存儲類別:auto、static、register、extern語句命令字:break、case、continue、default、do、else、for、goto、if、return、switch、while運算符:sizeof2023/11/1626預(yù)定義標識符系統(tǒng)標準庫函數(shù)scanf、printf、putchar、getchar、strcpy、strcmp、sqrt等編譯預(yù)備處理命令include、define等2023/11/1627對標識符的規(guī)定

用戶定義標識符必須以字母或下劃線“_”開頭不能含有除字母、數(shù)字和下劃線“_”外的其他字符標識符中大小寫字母含義不同關(guān)鍵字必須用小寫字母。不允許使用關(guān)鍵字為變量、數(shù)組、函數(shù)等操作對象命名預(yù)定義標識符允許用戶對它們重新定義,當重新定義后將改變它們原來的含義28本章主要內(nèi)容本章介紹C語言的基礎(chǔ),包括:數(shù)據(jù)類型運算符和表達式均是程序設(shè)計的基本知識為什么討論這些知識?通常程序要對數(shù)據(jù)進行操作處理:處理的對象是數(shù)據(jù)通過運算符和表達式進行操作29例如:【例2.1】計算圓的面積,半徑為5cm。

程序如下:main(){float

r,area;

r=5;

area=3.14*r*r;

printf("%f\n",

area);}運算結(jié)果是輸出圓的面積:78.500000程序中用到的數(shù)據(jù):r、area、5、3.14對數(shù)據(jù)進行的運算:*、=例jc2_130分析:計算機操作處理時,要完成以下工作:在內(nèi)存中給半徑r和運算結(jié)果area

開辟存儲空間,存放它們的值。應(yīng)該留多大的地方來存放它們的值?數(shù)據(jù)

5和3.14與r

、area

不同,它們是在編寫程序時就給出確定的值,在運算過程中不會改變。這樣的數(shù)計算機怎么處理?對整數(shù)5

和小數(shù)3.14,計算機存放時是否有區(qū)別?涉及數(shù)據(jù)類型的基本知識31C語言的數(shù)據(jù)類型C數(shù)據(jù)類型數(shù)組類型結(jié)構(gòu)體類型共用體類型枚舉類型整型字符型實型(浮點型)空類型單精度型雙精度型基本類型指針類型構(gòu)造類型本章討論基本類型數(shù)據(jù)322.1.1整型數(shù)據(jù)1.整型數(shù)據(jù)的類型基本整型數(shù)據(jù)int,分配2Byte短整型數(shù)據(jù)shortint,分配2Byte長整型數(shù)據(jù)longint,分配4Byte整型數(shù)據(jù)均以二進制補碼形式存儲問題:為什么要采用補碼?如何表示?33計算機中正、負數(shù)的表示例如:109=(1101101)2要區(qū)別:+109和-109方法是:將符號也數(shù)碼化即: 正的符號+用

0表示 負的符號-用

1表示∴計算機中的數(shù)表示方法是:

符號位+二進制數(shù)值(以8bit為例)

+109→+1101101→01101101

-109→-1101101→1110110134問題:計算機計算復(fù)雜化例如計算:

(-19)+(+22)10010011+00010110解決的方法是:使用反碼或補碼的表示方法(按前述表示的編碼稱為原碼),即能將減法一律轉(zhuǎn)換為加法。需要判斷符號是否相同:如果相同,結(jié)果符號不變,并進行絕對值相加如果不同,結(jié)果取絕對值大的數(shù)的符號,并進行絕對值相減35原碼、反碼和補碼正數(shù):原碼、反碼、補碼相同符號位為0,數(shù)值為對應(yīng)的二進制數(shù)。+109[01101101]原=[01101101]反=[01101101]補負數(shù):原碼符號位為1,數(shù)值為絕對值的二進制數(shù)。

-109 [11101101]原反碼符號位為1,數(shù)值為絕對值的二進制數(shù)各位變反。

-109 [10010010]反

補碼符號位為1,數(shù)值為絕對值的二進制數(shù)各位變反加1。-109 [10010011]補362.有符號和無符號整型數(shù)據(jù)有符號的整型數(shù)據(jù)signedint無符號的整型數(shù)據(jù)unsignedint區(qū)別是將最高位看作符號位還是數(shù)據(jù)位例如:

1111111110101000作為有符號數(shù)使用時,最高為符號位為負數(shù),值是:-88(再求一次補)作為無符號數(shù)使用時,最高為數(shù)據(jù)位為無符號的數(shù),值是:6544837例如:main(){unsignedintm;m=65448;printf("\nm=%d\n",m);printf("m=%u\n",m);}例jc2_a輸出結(jié)果:m=-88m=65448按有符號數(shù)輸出按無符號數(shù)輸出38整型數(shù)據(jù)的類型及規(guī)定方括號表示可選項int分配2Byte,long分配4Byte類型名稱類型符bit取值范圍整型(短整型)[signed]int[signed]short[int]16215~215-1(-32768~32767)無符號整型unsigned[int]160~216-1(0~65535)長整型[signed]long[int]32-231~231-1無符號長整型unsignedlong[int]320~232-1392.1.2實型數(shù)據(jù)1.實型數(shù)據(jù)的類型

單精度實型數(shù)據(jù)float,分配4Byte雙精度實型數(shù)據(jù)double,分配8

Byte2.實型數(shù)據(jù)的存儲

單精度實型指數(shù)部分小數(shù)部分

小數(shù)的符號位指數(shù)的符號位40實型數(shù)據(jù)的類型及規(guī)定C標準并未具體規(guī)定各種實型數(shù)據(jù)所占字節(jié)數(shù),也不規(guī)定具體小數(shù)和指數(shù)部分的位數(shù)。一般而言,小數(shù)部分位數(shù)多,數(shù)據(jù)表示的有效數(shù)字多,精度就高;而指數(shù)部分位數(shù)多,則表示的數(shù)據(jù)范圍更大。有效數(shù)字的意義?類型類型符Byte絕對值的范圍有效數(shù)字單精度型float410-37~10387~8

位雙精度型double810-307~1030815~16位例jC2_a412.1.3字符型數(shù)據(jù)字符型數(shù)據(jù)char,分配1Byte

字符型數(shù)據(jù)是指字母、數(shù)字、各種符號等用ASCII值表示的字符例如'a'是一個char類型數(shù)據(jù),稱作字符常量,存儲:011000012.1.4空類型空類型void通常與指針或函數(shù)結(jié)合使用422.2常量、變量與標準函數(shù)主要內(nèi)容:常量變量標準庫函數(shù)432.2.1常量在運行程序的過程中值保持不變的量1.整型常量十進制:0~9八進制:0~7,以0開頭十六進制:0~9,A~F/a~f,以0x或0X開頭例如:100-80+12301002401000730x380x100X100XFF0x0a441.整型常量整型常量的類型:根據(jù)值大小默認類型。整型常量后面加l或L,則認為是longint型例如:123L、0L、432l、0x100l注意:十六進制常量中可以使用大寫字母A~F,也可以使用小寫字母a~f。八進制常量中不能出現(xiàn)數(shù)字8或9例如:018、0921非法452.實型常量十進制形式

1.01.+12.0-12.00.0指數(shù)形式

1e31.8e-3-123E-6-.1E-3等價于:1×1031.8×10-3

-123×10-6

-0.1×10-3指數(shù)只能是整數(shù),而尾數(shù)則可以是整數(shù)也可以是小數(shù),無論指數(shù)或尾數(shù)均不能省略例如:1e、E.5、E-3

非法實型常量的類型:默認為double型,后面加F(或f),則強調(diào)表示該數(shù)是float類型例如:3.5f、1e2F

463.字符型常量可視字符常量

單引號括起來的單個可視字符例如:'a'、'A'、'+'、'3'、''等

轉(zhuǎn)義字符常量單引號括起來的\與可視字符組合,例如:\0字符串結(jié)束標志\n回車換行\(zhòng)t跳到下一個輸出位置\"雙引號字符\dddddd為1到3位八進制數(shù)所代表的字符\xhhhh為1到2位十六進制數(shù)所代表的字符474.字符串常量用雙引號括起的一個字符序列例如:"ABC"、"123"、"a"、"\n\t""\nGoodmorning"字符串常量的長度:所包含的字符個數(shù)

字符串常量的存儲方式:

\nGoodmorning\0a\0所占存儲單元數(shù):串長度+1例如:字符串結(jié)束標記485.符號常量以標識符來代表的常量事先編譯預(yù)處理命令define定義編譯時先由系統(tǒng)替換為它所代表的常量,再進行編譯例如:

#defineLEN

2.5main(){floata,b;a=2*3.14*LEN;b=3.14*LEN*LEN;printf("a=%f,b=%f\n",a,b);}定義符號常量使用符號常量編譯前系統(tǒng)進行替換495.符號常量main(){floata,b;a=2*3.14*2.5;b=3.14*2.5*2.5;printf("a=%f,b=%f\n",a,b);}define是編譯預(yù)處理命令,必須以“#”開頭編譯預(yù)處理命令在第7章討論。替換為502.2.2變量1.變量的有關(guān)概念在程序運行過程中,其值改變的數(shù)據(jù),稱為變量,變量用標識符表示,稱為變量名。變量必須“先定義后使用”系統(tǒng)為變量分配存儲單元,存儲變量的值。編寫程序時通過變量名來存、取變量值。a510變量值為變量分配的存儲單元變量名例如:有變量a它的值是510512.變量定義變量定義的一般格式:

數(shù)據(jù)類型說明符變量列表;例如:inti,j;

longk,m;floatx,y;charch1,ch2;必須使用合法的標識符作變量名不能使用關(guān)鍵字為變量命名523.變量的初始化:允許在說明變量的時候?qū)ψ兞抠x初值。例如:inta=5,b=10+2;

doublex=23.568,y;charch1='a',ch2=66,ch3='\142';表示定義變量并對變量存儲單元賦值。錯誤的初始化:

inta=3+b,b=5;

floatm=n=23.16;

532.2.3標準庫函數(shù)由C編譯系統(tǒng)定義的一種函數(shù),存放在系統(tǒng)函數(shù)庫中,用戶可以根據(jù)需要隨時調(diào)用常用函數(shù)如:printf、scanf、fabs、sqrt、sin、(常用數(shù)學函數(shù)參見教材

P30表2.5)函數(shù)調(diào)用形式:函數(shù)名([參數(shù)表])例如:putchar('a')sqrt(x)例jc2_3542.3運算符和表達式主要內(nèi)容:算術(shù)運算符和算術(shù)表達式賦值運算符和賦值表達式關(guān)系運算符和關(guān)系表達式邏輯運算符和邏輯表達式位運算符和位運算表達式條件運算符和條件表達式逗號運算符和逗號表達式其他運算符及其運算55運算符的有關(guān)概念作用:對運算對象完成規(guī)定的操作運算類型:按運算對象分:單目、雙目、三目按功能分:算術(shù)、賦值、關(guān)系、邏輯條件、逗號、位、其他56運算符的優(yōu)先級和結(jié)合性優(yōu)先級指各種運算符號的運算優(yōu)先順序例如:算術(shù)運算優(yōu)先于關(guān)系運算算術(shù)運算中先*/后+-結(jié)合性指運算符號和運算對象的結(jié)合方向分為:從左向右(左結(jié)合)和從右向左(右結(jié)合)例如:算術(shù)運算符為左結(jié)合

a-b+4賦值運算符為右結(jié)合

a=b=5(C語言規(guī)定見教材P297附錄B)57本章涉及的運算符+-*/%++--+-=+=-=*=/=%=&=|=^=>>=<<=><>=<===!=&&||!&|^~<<>>?:,&sizeof(數(shù)據(jù)類型標識符)類型種類算術(shù)運算符賦值運算符關(guān)系運算符邏輯運算符位運算符條件運算符逗號運算符其他運算符58表達式的有關(guān)概念什么是表達式由運算符將運算對象連接成的式子,它描述了一個具體的求值運算過程。計算表達式的值按照運算符的運算規(guī)則求值求值時注意運算符的優(yōu)先級和結(jié)合性表達式值的類型自動轉(zhuǎn)換強制轉(zhuǎn)換59例如:表達式:150+'b'*2-12.456b=(++a)-2a/=a*=(a=2)f=a>b>c--a||++b&&c++max=a>b?a:ba=3,a+=3,a*a 1/(float)a+660算術(shù)運算算術(shù)運算符的優(yōu)先級

()+-++--

*/%

+-

同級同級同級

單目雙目

低沒有乘方運算符,要計算a3要寫作a*a*a的連乘,或用標準庫函數(shù)pow(a,3)“/”的運算對象可為各種類型數(shù)據(jù),但是當進行兩個整型數(shù)據(jù)相除時,運算結(jié)果也是整型數(shù)據(jù)“%”要求運算對象必須是整型數(shù)據(jù),功能是求兩數(shù)相除的余數(shù),余數(shù)的符號與被除數(shù)的符號相同。61自增自減運算++--是單目運算符有前綴和后綴兩種形式

前綴形式:先自增(自減)再引用;后綴形式:先引用再自增(自減);功能:前綴形式++a

等價于

a=a+1

--

a

等價于

a=a–

1后綴形式a++

等價于a=a+1

a--

等價于a=a–

1表達式的值會不同62例如:當a=5時⑴++a表達式的值為6,且

a=6⑵

a++表達式的值為5,且

a=6⑶

b=++a

等價于

a=a+1;b=a表達式的值為6,且a=6,

b=6⑷b=a++等價于

b=a;a=a+1表達式的值為5,且a=6,

b=5

63說明:++和--的運算對象只能是變量(或運算結(jié)果是變量的表達式),不能是常量(或運算結(jié)果是數(shù)值的表達式)。

例如:

5++、(a+2)++

不合法。具有右結(jié)合性,結(jié)合方向為從右到左。例如:

–a++

等價于-(a++)

如果有多個運算符連續(xù)出現(xiàn)時,C系統(tǒng)盡可能多的從左到右將字符組合成一個運算符例如:

i+++j

等價于(i++)+j

-i+++-j

等價于-(i++)+(-j)

64main(){inta=5;printf("%d%d\n",a,a++);}說明(續(xù)):對函數(shù)參數(shù)的求值順序:

TurboC系統(tǒng)先計算最右邊的參數(shù)值,再依次計算左面的參數(shù)值?!纠?.5】有多個函數(shù)參數(shù)且為同一變量自增的運算處理。

輸出結(jié)果:65運行例2.565說明(續(xù)):【例2.6】有多個函數(shù)參數(shù)且為同一變量多次自增的運算處理。

main(){inta=5;printf("%d%d\n",a,(a++)+(a++));}輸出結(jié)果:711運行例2.666賦值運算賦值運算符(右結(jié)合)

=+=-=*=/=%=&=|=^=>>=<<=賦值表達式將表達式的值存入變量對應(yīng)的內(nèi)存單元中m=12b=(++a)-2m%=3+n等價于

m=m%(3+n)x*=(x=5)67說明:賦值號左邊必須是變量,右邊可以是C語言任意合法的表達式例如:n=t+2<s合法

a+b=15

不合法賦值運算符僅優(yōu)先于“,”,且具有右結(jié)合性例如:

a=b=b*c>10等價于:a=(b=(

(b*c)>10)

)賦值號與數(shù)學中的等號含義不同例如:數(shù)學中a=b等價于b=aC語言中a=b不等價于b=a68關(guān)系運算關(guān)系運算符(左結(jié)合)

>>=<<=

==!=較高較低關(guān)系表達式用關(guān)系運算符將運算對象連接成的式子例如:12<'C'+1(字符型數(shù)據(jù)比較ASCII值)a==b>=c等價于a==(b>=c)與(a==b)>=c不等價關(guān)系運算符優(yōu)先于賦值,低于算術(shù)69說明:關(guān)系運算的結(jié)果應(yīng)該是邏輯值。C語言用數(shù)值用1表示邏輯真,0表示邏輯假例如:7>5的值是1,5>7的值是0

'a'>'b'的值是0,'a'<'b'的值是1即關(guān)系表達式的值:0或1實型數(shù)可進行大于或小于比較,但通常不進行==或!=的關(guān)系運算70邏輯運算符邏輯運算符&&||!邏輯運算符的運算規(guī)則運算對象邏輯運算結(jié)果aba&&ba||b!a非0非0110非000100非00110000171邏輯表達式邏輯表達式用邏輯運算符將運算對象連接成的式子例如:0&&'b'a&&b||c&&da||b-5||c/4!x+y>=z邏輯運算符的優(yōu)先級和結(jié)合性:!是單目運算符,右結(jié)合,高于算術(shù)&&和||是雙目運算符,左結(jié)合,高于賦值運算符,低于關(guān)系運算符72邏輯運算規(guī)則從左到右依次進行邏輯計算運算對象為非0表示邏輯真運算對象為0表示邏輯假邏輯運算的結(jié)果為0或1例如設(shè):a=15,b=0,c=-2a&&b&&c結(jié)果為0a||b||c結(jié)果為1(a+c)||b&&c結(jié)果為173邏輯運算規(guī)則(續(xù))運算按照從左至右的順序進行,一旦能夠確定邏輯表達式的值,就立即結(jié)束運算——邏輯運算的短路性質(zhì)例如設(shè):a=1,b=0,c=-2a&&b&&c(a++)||++b&&--c為0,運算終止,表達式值為0為非0,運算終止,表達式值為1且a為2,b為0,c為-2(b,c保持原值)74關(guān)系與邏輯運算符的應(yīng)用表示數(shù)學公式a>b>c判斷a,b,c三條線段能否組成一個三角形

a,b不同時為負

a+b>c&&a+c>b&&b+c>aa>=0||b>=0!(a<0&&b<0)(a<0&&b>=0)||(a>=0&&b<0)||(a>=0&&b>=0)a>b&&b>c75位運算符~&^|<<>>位邏輯運算符移位運算符單目位運算符的運算對象只能是整型數(shù)據(jù)或字符型數(shù)據(jù),不能是實型數(shù)據(jù)運算對象一律按二進制補碼參加運算,并按位進行運算位運算的結(jié)果是一個整型數(shù)據(jù)低于單目、算術(shù)運算符,高于其他運算符低于單目、算術(shù)和關(guān)系運算符,高于其他運算符76位邏輯運算符的運算規(guī)則假設(shè)ai和bi均是一個二進制位(bit)

運算對象邏輯運算結(jié)果aibiai&biai|biai^bi?ai000001010111100110111100例如:假設(shè)a=10,b=010求a&b、a|b、a^b、?a77程序如下:

main(){inta=10,b=010;printf("%d%d\n",a&b,a|b);printf("%d%d\n",a^b,~a);}輸出結(jié)果:8102-110000000000001010&00000000000010000000000000001000即:a&b的值是80000000000001010?

1111111111110101即:?a的值是-11運行jc2_b78移位運算例如:a<<ba+8>>b-1等價于(a+8)>>(b-1)例如:假設(shè)a=10,b=2,求a<<b、a+8>>b-1

main(){inta=10,b=2;printf("%d%d\n",a<<b,a+8>>b-1);}輸出結(jié)果:409運行jc2_c請自行分析運行結(jié)果79條件表達式運算條件運算符:?:條件表達式的一般形式表達式1?表達式2:表達式3例如:m<n?x:a+3a++>=10&&b-->20?a:bx=3+a>5?100:200C語言中唯一的三目運算符,要正確區(qū)分用?和:分隔的表達式涉及條件運算符的優(yōu)先級與結(jié)合性80條件運算符優(yōu)先級條件運算符優(yōu)先級高于賦值、逗號運算符,低于其他運算符例如:⑴m<n?x:a+3⑵a++>=10&&b-->20?a:b⑶x=3+a>5?100:200等價于:(m<n)?(x):(a+3)等價于:(a++>=10&&b-->20)

?a:b等價于:x=

((3+a>5)

?100:200)81條件運算符的結(jié)合性

條件運算符具有右結(jié)合性當一個表達式中出現(xiàn)多個條件運算符時,應(yīng)該將位于最右邊的問號與離它最近的冒號配對,并按這一原則正確區(qū)分各條件運算符的運算對象。例如:w<x?x+w:x<y?x:y

與w<x?x+w:(x<y?x:y)等價

與(w<x?x+w:x<y)?x:y不等價82逗號表達式運算逗號表達式的一般形式

表達式1,表達式2,……,表達式n逗號表達式的值從左向右,依次對表達式求值,最后得到表達式n

的值就是逗號表達式的值例如:⑴a=5,

a++,

a*3

表達式值為18,且a=6⑵t=1,t+5,t++表達式值為1,且t=2⑶x=(a=3*5,

a*4

)賦值表達式的值為60,且x=60,a=1583取地址運算符&為單目運算符運算對象只能是變量運算結(jié)果是變量的存儲地址例如有定義:inta,student;charch;可以對變量a、ch、student進行&運算:&a&ch&student84長度運算符sizeof為單目運算符運算對象只能是變量名或數(shù)據(jù)類型標識符

運算結(jié)果為該變量或該數(shù)據(jù)類型的長度main(){inta=5;doublex;printf("%d%d",sizeof(int),sizeof(a));printf("%d%d",sizeof(double),sizeof(x));printf("%d%d\n",sizeof(float),sizeof(char));}輸出結(jié)果:2288

4

1運行jc2_d852.4運算中數(shù)據(jù)類型的轉(zhuǎn)換2.4.1數(shù)據(jù)類型的自動轉(zhuǎn)換轉(zhuǎn)換原則:

自動將精度低、表示范圍小的運算對象類型向精度高、表示范圍大的運算對象類型轉(zhuǎn)換char,shortdoublelongfloatunsignedint高精度低精度例如有定義:inta;char

ch;表達式:a-ch*2+35La-ch*2+35.862.賦值運算中的類型轉(zhuǎn)換<實型變量>=<整型表達式>小數(shù)部分自動補0<整型變量>=<實型表達式>自動舍去實型表達式的小數(shù)部分(注意不進行四舍五入)

<字符變量>=<整型表達式><整型變量>=<長整型表達式>自動截取表達式值的低字節(jié)賦值,舍去高字節(jié)<整型變量>=<字符數(shù)據(jù)><長整型變量>=<整型表達式>自動給高字節(jié)補0或補12023/11/1687程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)N-S結(jié)構(gòu)圖流程圖ABAB選擇結(jié)構(gòu)YNABP成立?PTFAB2023/11/1688程序的三種基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)NYP成立?A當P成立時

A直到型循環(huán)

A當P成立時YNAP成立?當型循環(huán)N-S結(jié)構(gòu)圖流程圖2023/11/1689本章主要內(nèi)容:C語言的語句類型數(shù)據(jù)輸出數(shù)據(jù)輸入順序結(jié)構(gòu)程序設(shè)計2023/11/16903.1C語言的語句類型主要內(nèi)容:說明性語句表達式語句控制語句復(fù)合語句2023/11/16913.1.1說明性語句對程序中使用的變量、數(shù)組、函數(shù)等操作對象進行定義、聲明的描述語句只起說明作用,不產(chǎn)生可執(zhí)行的機器指令代碼。

例如:inta,b;

floatfunction(int,int);C程序由函數(shù)組成。函數(shù)的格式:函數(shù)名(參數(shù)表){

說明部分;執(zhí)行部分;}數(shù)據(jù)類型說明語句可執(zhí)行語句2023/11/1692表達式后面加一個分號,構(gòu)成表達式語句x=3;y=y+5;x=a-b&&c||d;printf("x=%d,y=%d\n",x,y);sort(a,10);3.1.2表達式語句賦值語句函數(shù)調(diào)用語句注意:①分號是語句必不可少的一部分②單獨的一個分號“;”構(gòu)成一個空語句例如:;(空語句,是最簡單的C語句)2023/11/16933.1.3控制語句1.選擇分支控制語句

if()…else…

switch(){…} 2.循環(huán)控制語句

for()…

while()…do…while()3.其他控制語句

break、continue、gotoreturn2023/11/16943.1.4復(fù)合語句用一對花括號“{}”括起來的若干條語句

花括號中可以是說明語句、表達式語句、控制語句,也可以是復(fù)合語句例如:⑴if(a>b){max=a;min=b;}

⑵for(n=1;n<10;n++)

{p=n+p;if(p>=100)

{

printf(“%d\n”,p);break;

}

}

2023/11/16953.1.4復(fù)合語句(續(xù))復(fù)合語句中如果有說明性語句,應(yīng)該寫在可執(zhí)行語句的前面例如:

main(){inta,b;a=b=100;{floatc=10.23;printf("%f\n",c);}printf("%d%d\n",a,b);}要特別注意:花括號的配對花括號的位置C語言學習的難點之一2023/11/16963.2數(shù)據(jù)輸出主要內(nèi)容:字符輸出函數(shù)格式輸出函數(shù)2023/11/16973.2.1字符輸出函數(shù)函數(shù)調(diào)用的一般形式

putchar(ch)功能:在標準輸出設(shè)備(即顯示器屏幕)上輸出一個字符。例如:putchar('b');putchar('\n');putchar('\101');putchar(st);2023/11/1698說明putchar是C語言的標準庫函數(shù),使用時必須加編譯預(yù)處理命令:#include"stdio.h"

#include<stdio.h>【例3.1】利用putchar函數(shù)輸出字符。#include"stdio.h"

main(){charc1,c2;c1='a';c2='b';putchar(c1);putchar(c2);putchar('\n');putchar(c1-32);putchar(c2-32);putchar('\n');}也可改為c1=97;c2=98;

輸出結(jié)果:abAB例jc3_12023/11/16993.3.2格式輸出函數(shù)函數(shù)調(diào)用的一般形式printf(格式控制,參數(shù)2,…,參數(shù)n)

功能:按格式控制所指定的格式,在標準輸出設(shè)備上輸出參數(shù)2、…、參數(shù)n的值。例如有程序段:inta=123,b=100;printf("%d%d%d\n",a,b,a+b);printf("c=%d+%d=%d\n",a,b,a+b);2023/11/16100格式控制用雙引號括起的字符串,用于指定輸出數(shù)據(jù)的類型、格式、個數(shù)包括:普通字符和格式說明符照原樣輸出

printf("c=%d+%d=%d\n",a,b,a+b);格式說明符:指定輸出3個十進制整型數(shù),分別為變量a、b、a+b的值2023/11/16101輸出格式說明符整型數(shù)據(jù)

%d以有符號十進制形式輸出整型數(shù)%o以無符號八進制形式輸出整型數(shù)%x以無符號十六進制形式輸出整型數(shù)%u以無符號十進制形式輸出整型數(shù)實型數(shù)據(jù)

%f以小數(shù)形式輸出實型數(shù)%e以指數(shù)形式輸出實型數(shù)%g按數(shù)值寬度最小的形式輸出實型數(shù)字符型數(shù)據(jù)

%c輸出一個字符%s輸出字符串其他

%%輸出字符%本身在%和格式符之間可以使用附加說明符2023/11/16102附加格式說明符l輸出長整型數(shù)(只可與d、o、x、u結(jié)合用)m指定數(shù)據(jù)輸出的寬度(即域?qū)挘?n對實型數(shù)據(jù),指定輸出n位小數(shù);對字符串,指定左端截取n個字符輸出+使輸出的數(shù)值數(shù)據(jù)無論正負都帶符號輸出-使數(shù)據(jù)在輸出域內(nèi)按左對齊方式輸出整數(shù)位數(shù)+小數(shù)位數(shù)+小數(shù)點自動對n位后小數(shù)四舍五入

例如:%ld——輸出十進制長整型數(shù)%m.nf——右對齊,m位域?qū)?,n位小數(shù)或n個字符%-m.nf——左對齊2023/11/16103例3.2整型數(shù)據(jù)的輸出main(){inta=11,b=22;intm=-1;longn=123456789;printf("%d%d\n",a,b);printf("a=%d,b=%d\n",a,b);printf("m:%d,%o,%x,%u\n",m,m,m,m);printf("n=%d\n",n);printf("n=%ld\n",n);}程序輸出:1122a=11,b=22m:-1,177777,ffff,65535n=-13035n=123456789例jc3_a2023/11/16104例3.3實型數(shù)據(jù)的輸出main(){floatx=1234.56,y=1.23456789;doublez=1234567.123456789;printf("x=%f,y=%f\n",x,y);printf("z=%f\n",z);printf("z=%e\n",z);printf("z=%g\n",z);printf("z=%18.8f\n",z);printf("x=%10.3f\n",x);printf("x=%-10.3f\n",x);printf("x=%4.3f\n\n",x);}程序輸出:x=1234.560059,y=1.234568z=1234567.123457z=1.23457e+06z=1234570z=1234567.12345679x=1234.560x=1234.560x=1234.560例jc3_b2023/11/16105例3.4字符型數(shù)據(jù)的輸出main(){intm=97;charch='B';printf("m:%d%c\n",m,m);printf("ch:%d%c\n",ch,ch);printf("%s\n","student");printf("%10s\n","student");printf("%-10s\n","student");printf("%10.3s\n","student");printf("%.3s\n\n","student");}程序輸出:m:97ach:66Bstudentstudentstudentstustu例jc3_c2023/11/16106注意:printf函數(shù)格式控制中的格式說明符與輸出參數(shù)的個數(shù)和類型必須一一對應(yīng)。格式說明符的%和后面的描述符之間不能有空格。除%X、%E、%G外類型描述符必須是小寫字母。長整型數(shù)應(yīng)該用%ld(或%lo、%lx、%lu)格式輸出,否則會出現(xiàn)輸出錯誤。printf函數(shù)的參數(shù)可以是常量、變量或表達式。在計算各參數(shù)值時,TurboC采用從右至左的順序求值。2023/11/161073.3數(shù)據(jù)輸入主要內(nèi)容:字符輸入函數(shù)格式輸入函數(shù)2023/11/161083.3.1字符輸入函數(shù)函數(shù)調(diào)用的一般形式

getchar()功能:從標準輸入設(shè)備(即鍵盤)上交互輸入一個字符。例如:getchar();c=getchar();printf("%c\n",getchar());2023/11/16109例如:【例3.8】getchar函數(shù)的應(yīng)用。

#include"stdio.h"main(){charch;ch=getchar();printf("%c%d\n",ch,ch);printf("%c%d\n\n",ch-32,ch-32);}程序運行時輸入:m

并按回車鍵后輸出結(jié)果是:m109M77例jc3_82023/11/16110說明:getchar是C語言的標準庫函數(shù),使用時必須加編譯預(yù)處理命令:#include"stdio.h"

#include<stdio.h>getchar函數(shù)需要交互輸入,接收到輸入字符之后才繼續(xù)執(zhí)行程序。連續(xù)使用getchar函數(shù)時,要注意字符的輸入形式,例如執(zhí)行如下程序段:charch1,ch2;ch1=getchar();ch2=getchar();必須連續(xù)輸入兩個字符,中間不能有其他字符2023/11/161113.3.2格式輸入函數(shù)函數(shù)調(diào)用的一般形式scanf(格式控制,地址參數(shù)2…,地址參數(shù)n);功能:按格式控制指定的格式,從標準輸入設(shè)備(即鍵盤)交互輸入數(shù)據(jù),并依次存放到對應(yīng)地址參數(shù)指定的變量中(即將輸入值賦給變量)。

例如:scanf("%d%f",&a,&f);scanf("%o,%f",&b,&x);scanf("a=%d,b=%d",&a,&b);2023/11/16112格式控制用雙引號括起的字符串,用于指定輸入數(shù)據(jù)的類型、格式、個數(shù)以及輸入的形式

包括:普通字符和格式說明符照原樣輸入

scanf("a=%d,b=%d",&a,&b);格式說明符:指定輸入2個十進制整型數(shù)賦給變量a和b2023/11/16113輸入格式說明符整型數(shù)據(jù)

%d輸入十進制整型數(shù)%u輸入無符號的十進制整型數(shù)%o輸入八進制整型數(shù)%x輸入十六進制整型數(shù)實型數(shù)據(jù)

%f輸入小數(shù)形式的單精度實型數(shù)%e輸入指數(shù)形式的單精度實型數(shù)字符型數(shù)據(jù)

%c輸入單個字符%s輸入一個字符串在%和格式符之間可以使用附加說明符2023/11/16114附加格式說明符l與d、o、x、u結(jié)合輸入長整型數(shù)與f結(jié)合輸入double型數(shù)m指定數(shù)據(jù)輸入的寬度(即域?qū)挘?忽略讀入的數(shù)據(jù)(即不將讀入數(shù)據(jù)賦給相應(yīng)變量)例如:%ld、%lo——輸入十進制、八進制長整型數(shù)%lf、%le——輸入雙精度實型數(shù)%mf——輸入m位數(shù)(域?qū)挘?*d——忽略輸入的一個整型數(shù)對float和double型指整數(shù)位數(shù)+小數(shù)點+小數(shù)位數(shù)2023/11/16115例如:scanf("%d%d%d",&a,&b,&c);

輸入3個整型十進制數(shù),以空白符(空格、tab鍵或回車鍵)分隔

scanf("%d,%o,%f",&a,&b,&x);

輸入3個數(shù),以“,”分隔scanf("a=%d,b=%d",&a,&b);

輸入的形式是:a=32,b=28(普通字符要照原樣輸入)2023/11/16116程序:main(){inta,b,c;longm;floatx;doubley;charch,string[20];printf("inputa,b,c,m:");scanf("%d%o%x%ld",&a,&b,&c,&m);printf("a=%d,b=%d,c=%d,m=%ld\n",a,b,c,m);printf("inputx,y:");scanf("%f%lf",&x,&y);getchar();printf("x=%f,y=%f\n",x,y);printf("inputch,string:");scanf("%c%s",&ch,string);printf("ch=%c,string=%s\n\n",ch,string);}運行jc3_d2023/11/16117使用scanf函數(shù)應(yīng)注意:要求在程序運行中輸入數(shù)據(jù),輸入的數(shù)據(jù)個數(shù)和類型必須與格式說明符一一對應(yīng)。地址參數(shù)形式:&變量名(除數(shù)組或指針變量)格式控制中有普通字符時,必須照原樣輸入。格式控制中無普通字符時,輸入的數(shù)值型數(shù)據(jù)和字符串用空白符分隔,字符型數(shù)據(jù)不必分隔。double型數(shù)據(jù)輸入時,必須用%lf或%le格式實型數(shù)輸入時域?qū)挷荒苡胢.n形式的附加說明為了減少不必要的輸入量,除了逗號、分號、空格符以外,格式控制中盡量不要出現(xiàn)普通字符,也不要使用

'\n'

、'\t'

等轉(zhuǎn)義字符2023/11/16118scanf("%c%c%c",&ch1,&ch2,&ch3);要輸入:abc

不能輸入:a

b

c

注意數(shù)值型數(shù)據(jù)與char型數(shù)據(jù)的混合輸入注意(續(xù)):格式符之間若無普通字符,則:輸入的數(shù)值型數(shù)據(jù)用空白符分隔輸入的char型數(shù)據(jù)不必分隔

例如:scanf("%d%d",&m,&n);scanf("%c",&ch);錯誤輸入:32

28

a

正確輸入:32

28a

2023/11/161193.4順序結(jié)構(gòu)程序設(shè)計3.4.1順序結(jié)構(gòu)程序的一般算法描述變量定義變量賦值運算處理輸出結(jié)果可用:變量初始化賦值語句輸入函數(shù)調(diào)用語句注意各個語句的順序2023/11/161203.4.2順序結(jié)構(gòu)程序設(shè)計舉例【例3.15】數(shù)據(jù)交換。從鍵盤輸入a、b的值,輸出交換以后的值。

思路:在計算機中交換變量a和b的值,不能只寫下面兩個賦值語句a=b;b=a;?正確的交換方法:c=a;a=b;b=c;2023/11/16121程序:main(){inta,b,c;printf("\ninputa,b:");scanf("%d,%d",&a,&b);printf("\nbeforeexchange:a=%db=%d\n",a,b);c=a;a=b;b=c;printf("afterexchange:a=%db=%d\n",a,b);}程序運行情況如下:inputa,b:32,57

beforeexchange:a=32b=57afterexchange:a=57b=32

運行jc3_152023/11/16122舉例:【例3.16】已知三條邊a、b、c,求三角形面積。計算三角形面積的海倫公式:其中:設(shè)定義:整型變量a、b、c實型變量s、area2023/11/16123本章主要內(nèi)容4.1if語句4.1.1if語句的一般形式4.1.2if語句的嵌套4.2switch語句4.2.1switch語句的一般形式4.2.2break語句4.3選擇結(jié)構(gòu)程序設(shè)計舉例2023/11/16124簡單分支語句語句一般格式if(表達式)

語句功能:計算表達式的值,如果是一個非0值(即邏輯真),就執(zhí)行內(nèi)嵌語句,否則(即邏輯假)跳過內(nèi)嵌語句,順序執(zhí)行后續(xù)語句。內(nèi)嵌語句,可為:賦值語句函數(shù)調(diào)用語句控制語句復(fù)合語句空語句可為算術(shù)、關(guān)系、邏輯、賦值等表達式2023/11/16125簡單分支語句的算法:例如:⑴if(x>0)m++;⑵if(a>b){c=a;a=b;b=c;}

表達式非0

TF

語句N-S結(jié)構(gòu)圖語句流程圖NY表達式非0?2023/11/16126雙重分支語句語句一般格式if(表達式)

語句1

else語句2

功能:計算表達式的值,如果它的值是一個非0值(邏輯真),就執(zhí)行內(nèi)嵌語句1,之后跳過內(nèi)嵌語句2,執(zhí)行后續(xù)語句;否則跳過內(nèi)嵌語句1,執(zhí)行內(nèi)嵌語句2,之后執(zhí)行后續(xù)語句。

2023/11/16127雙重分支語句的算法:例如:⑴if(x>0)m++;elsem--;⑵if(ch>='a'&&ch<='z')

{ch=ch-32;

printf("%c\n",ch);}elseprintf("%c\n",ch);

表達式非0

TF

語句1語句2N-S結(jié)構(gòu)圖語句1

語句2流程圖NY表達式非0?2023/11/16128多重分支語句語句一般格式if(表達式1)

語句1

elseif(表達式2)

語句2

……

elseif(表達式m)

語句m

else語句

n功能:依次計算并判斷表達式i,為非0時執(zhí)行后面的語句,都為0時,執(zhí)行語句n無論執(zhí)行完那個語句分支,都轉(zhuǎn)到后續(xù)語句2023/11/16129多重分支語句的算法流程圖表達式2?表達式1?語句n語句1

語句2

語句m…YNYNNY表達式m?2023/11/16130多重分支語句的算法N-S結(jié)構(gòu)圖表達式1?

TF

表達式2?語句1TF

語句2…

表達式m?TF

語句m語句n例如:if(a<0)x=-1;elseif(a==0)x=0;elsex=1;2023/11/16131if語句的簡單應(yīng)用【例4.1】輸入一個字符,如果是大寫字母,則將其轉(zhuǎn)換為小寫字母輸出,否則直接輸出。輸入:用getchar或scnaf函數(shù)ch是否為大寫字母:ch>='A'&&ch<='Z'(或ch>=65&&ch<=90)大寫字母轉(zhuǎn)換為小寫字母:ch=ch+32輸出:用putchar或printf函數(shù)思路:2023/11/16132程序:#include"stdio.h"main(){charch;ch=getchar();if(ch>='A'&&ch<='Z')ch=ch+32;printf("%c\n",ch);}程序運行情況如下:G

g

運行jc4_1可使用條件表達式代替putchar(ch>='A'&&ch<='Z'?ch+32:ch);putchar('\n')2023/11/161334.1.2if語句的嵌套如果if的內(nèi)嵌語句中又使用了一個if語句,則構(gòu)成if語句的嵌套。

【例4.a】比較兩個整數(shù)的關(guān)系。#include<stdio.h>main(){intx,y;printf("EnterintegerXandY:");scanf("%d%d",&x,&y);

if(x!=y)

if(x>y)printf("X>Y\n");

elseprintf("X<Y\n");

elseprintf("X=Y\n");}應(yīng)該正確判斷:if的內(nèi)嵌語句if和else的配對運行jc4_a提倡縮格書寫有利于閱讀程序2023/11/16134

if語句嵌套的形式簡單if語句的嵌套形式if(表達式)if語句雙重(或多重)分支if語句的嵌套形式if(表達式)if語句else

if語句可以是各種形式的if語句可以是各種形式的if語句如果是簡單if語句,必須用“{}”括起2023/11/16135例如:⑴if(c<=100)

if(c>=50)printf("50<=c<=100\n");⑵if(c<=100)if(c>=50)printf("50<=c<=100\n");elseprintf("c<50\n");else

if(c<=150)printf("100<c<=150\n");elseprintf("c>150\n");⑶if(c<=100)if(c>=50)printf("50<=c<=100\n");elseprintf("c<50\n")與哪個if配對?2023/11/16136再例如:if(a>b) if(a>c) if(a>d)m=1;elsem=2;elsem=3; 問題:哪一個else和哪一個if相匹配?規(guī)則:在嵌套的if~else語句中,else總是與上面的離它最近的尚未配對的if

配對。2023/11/16137舉例【例4.4】輸入一個數(shù),判斷它是奇數(shù)還是偶數(shù),如果是奇數(shù)則進一步判斷它是否為5的倍數(shù)。

定義變量x輸入x的值

x是奇數(shù)

TF

輸出“odd”x是5的倍數(shù)輸出“even”TF是5的倍數(shù)2023/11/16138程序:main(){

溫馨提示

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

最新文檔

評論

0/150

提交評論