版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C語言基礎(chǔ)1.1C語言概述1.1.1C語言的產(chǎn)生與發(fā)展1.C語言的產(chǎn)生
C語言於1972年~1973年間,誕生於美國的貝爾實驗室,由Denis.M.Ritchie創(chuàng)建。
C語言的產(chǎn)生基於兩個方面的需要。一是為滿足UNIX操作系統(tǒng)開發(fā)的需要。UNIX操作系統(tǒng)是一個通用的、複雜的電腦管理系統(tǒng)。二是為拉近高級語言與硬體之間距離的需要。
C語言集高級語言與組合語言優(yōu)點於一身。
C語言面對實際應(yīng)用的需要而產(chǎn)生,直至今日仍不改初衷。2.C語言的發(fā)展1960年出現(xiàn)的ALGOL語言是一種面向問題的高級語言,遠離硬體,不適於開發(fā)系統(tǒng)軟體。1963年,英國劍橋大學(xué)推出CPL語言,CPL語言比ALGOL語言接近硬體一些,但規(guī)模較大,難以實現(xiàn)。1969年,劍橋大學(xué)的M.Richards對CPL語言進行簡化,推出BCPL語言(BCPL—BasicCombinedProgrammingLanguage)。1970年,貝爾實驗室的K.Thompson為DEC公司PDP[CD*2]7電腦上運行的一種早期UNIX操作系統(tǒng)設(shè)計了一種類BCPL語言,稱為B語言。B語言規(guī)模小,接近硬體,1971年在PDP-11電腦上實現(xiàn),並寫了UNIX操作系統(tǒng)。1960年~1971年是C語言的萌芽階段。1972年~1973年間,貝爾實驗室的D.M.Ritchie在保留B語言優(yōu)點的基礎(chǔ)上,創(chuàng)建了C語言。1973年,UNIX操作系統(tǒng)被用C語言改寫,稱為UNIX第五版。最初的C語言只是一種UNIX操作系統(tǒng)的工作語言,依附於UNIX系統(tǒng),主要在貝爾實驗室內(nèi)部使用。
UNIX以後的第六版、第七版、SYSTEMⅢ和SYSTEMⅤ都是在第五版的基礎(chǔ)上發(fā)展起來的,C語言也作了多次改進。到1975年,UNIX第六版的公佈,使C語言受到人們的普遍注意。UNIX操作系統(tǒng)的廣泛使用,促進了C語言的迅速發(fā)展與普及,C語言的發(fā)展與普及也促進了UNIX操作系統(tǒng)的推廣。到1978年出現(xiàn)了獨立於UNIX和PDP電腦的C語言,從而,C語言被迅速移植到大、中、小與微型機上。當(dāng)年,B.W.Kernighan和D.M.Ritchie以UNIX第七版的C編譯程序為基礎(chǔ),出版了影響深遠的名著《C程式設(shè)計語言》。
C++語言是C語言發(fā)展的新階段,是一種更好的C語言,是應(yīng)用廣泛的面向?qū)ο蟮某淌皆O(shè)計語言。
3.C語言的標(biāo)準(zhǔn)與方言
各機構(gòu)推出了自己的C語言與版本,某些執(zhí)行過程的微小差別不時引起C程式之間的不相容。美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)從1983年開始,經(jīng)過長達五年的努力,制定了C語言的新標(biāo)準(zhǔn)——ANSIC,現(xiàn)在提及C語言的標(biāo)準(zhǔn)就是指該新標(biāo)準(zhǔn)。ANSIC比原標(biāo)準(zhǔn)C有很大的發(fā)展,解決了經(jīng)典定義中的二義性,給出了C語言的新特點。K&R也以新標(biāo)準(zhǔn)改寫了他們的經(jīng)典著作。任何C程式都必須遵循ANSIC標(biāo)準(zhǔn),本教材的主體也以ANSIC作為基礎(chǔ)。1.1.2C語言的特點
(1)C語言簡潔、緊湊,壓縮了一切不必要的成份。
(2)C語言運算豐富,將括弧、賦值、強制類型轉(zhuǎn)換、取變數(shù)地址等都以運算實現(xiàn)。
(3)C語言數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)類型;用戶能擴充數(shù)據(jù)類型,能夠?qū)崿F(xiàn)各種複雜的數(shù)據(jù)結(jié)構(gòu),完成各種問題的數(shù)據(jù)描述。
(4)C語言是一種結(jié)構(gòu)化程式設(shè)計語言,具有結(jié)構(gòu)化語言所要求的三種基本結(jié)構(gòu)。(5)C語言允許直接訪問物理地址,能進行位運算,能實現(xiàn)組合語言的大部分功能,能直接對硬體進行操作。C語言是高級語言中的低級語言。
(6)C語言提供預(yù)處理機制,有利於大程式的編寫和調(diào)試。
(7)C語言編譯系統(tǒng)小,生成目標(biāo)代碼品質(zhì)高,程式執(zhí)行效率高。
(8)C語言輸入/輸出功能用庫函數(shù)實現(xiàn),編寫的程式移植性好。
(9)C語言語法限制不太嚴(yán)格,程式設(shè)計自由度大,對程式員要求不高。1.2基本語法成份1.2.1字元集
字元是可以區(qū)分的最小符號,構(gòu)成程式的原始基礎(chǔ)。C語言字元集是ASCII字元集的一個子集,包括英文字母、數(shù)字及特殊字元:
·
英文字母:a~z和A~Z
·
數(shù)字:0~9
·
特殊字元:空格?。?^&*--+=~<>/\|.,:;?′″()[]{}
由字元集中的字元可以構(gòu)成C語言進一步的語法成份,如識別字、關(guān)鍵字、特殊的運算符等。1.2.2識別字
識別字在程式中用來標(biāo)識各種程式成份,命名程式中的一些實體,如變數(shù)、常量、函數(shù)、類型、標(biāo)號等對象的名字。
C語言規(guī)定,識別字必須以英文字母或下劃線開頭,是字母、數(shù)字、下劃線的序列。以下是合法的識別字:
x,c,a1,a2,op,y
-1,zhou
-prg,radius,prime,program,prg
-1,cout,sun,day
以下是不合法的識別字:
a.1,1computer,x+y,!abc,99999,$100,π,3c
C語言中標(biāo)識符要區(qū)分大小寫,識別字abc與識別字ABC是不同的識別字。習(xí)慣上符號常量用大寫字母表示,變數(shù)名稱用小寫字母表示。標(biāo)準(zhǔn)C中,識別字的長度可以是任意的,一般有效長度為8個字元,TURBOC中標(biāo)識符最大長度為32個字元。識別字取名時不能與關(guān)鍵字同名,也不能與系統(tǒng)預(yù)先定義的標(biāo)準(zhǔn)識別字(如標(biāo)準(zhǔn)函數(shù))同名,最好能“見名知義”,以提高程式的可讀性。一般選用相應(yīng)英文單詞或拼音的縮寫形式,儘量不要使用簡單代數(shù)符號,如a,b,c,x,y,z等。識別字大多數(shù)採用“匈牙利”表示法,每個單詞第一個字母大寫,如StudentName、YearMonthDate。1.2.3關(guān)鍵字
關(guān)鍵字又稱為保留字,由系統(tǒng)提供,用以表示特定的語法成份,如類型名稱int、float,語句特徵if、switch、while,運算符號sizeof等,是構(gòu)成C語言的語法基礎(chǔ)。常見關(guān)鍵字有31個,參見附錄A。關(guān)鍵字有特定的語法含義,不允許用戶重新定義。關(guān)鍵字在程式中像國家的名字一樣,絕對不能拼錯。1.2.4運算符運算符實際上可以認(rèn)為是系統(tǒng)定義的函數(shù)名字,這些函數(shù)作用於運算對象,得到一個結(jié)果值。運算符通常由1個或多個字元構(gòu)成。根據(jù)運算對象的個數(shù)不同,運算符可分為單目運算符、雙目運算符和三目運算符,又稱為一元運算符、二元運算符和三元運算符。1.3C程式的結(jié)構(gòu)例1-1
在螢?zāi)簧陷敵觥癈語言程式設(shè)計”。/*程式1[CD*2]1,輸出″thisisaCprogram.″*/#include″stdio.h″
main()
{
printf(″thisisaCprogram.\n″);
}運行結(jié)果:thisisaCprogram.例1–2
求兩個整數(shù)之和。
/*程式1-2,求兩個整數(shù)之和*/
#include″stdio.h″
main()
{inta,b;
intsum;
scanf(″%d,%d″,&a,&b);
sum=a+b;
printf(″sum=%d\n″,sum);
}輸入數(shù)據(jù):1999,1
運行結(jié)果:和=2000例1-3
求兩個數(shù)的最大值。
/*程式1-3,求兩個數(shù)的最大值*/
#include″stdio.h″
intmax(intx,inty)/*求最大值函數(shù){intt;
if(x>y)t=x;
elset=y;
return(t);
}
main()/*主函數(shù)*/
{inta,b;
intc;
scanf(″%f,%f″,&a,&b);
c=max(a,b);/*調(diào)用求最大值的函數(shù)*/
printf(″max=%d\n″,c);
}輸入數(shù)據(jù):12,3
運行結(jié)果:max=121.3.1C程式的結(jié)構(gòu)1.函數(shù)
(1)C程式由若干函數(shù)組成,其核心成份是函數(shù)。
①必須有一個且只能有一個主函數(shù)main(),主函數(shù)的名字為main。
②可以是系統(tǒng)預(yù)定義的標(biāo)準(zhǔn)函數(shù),如scanf函數(shù)、printf函數(shù)等,參見附錄C。大多數(shù)函數(shù)由程式員根據(jù)實際問題的需要進行定義,函數(shù)之間是平行的關(guān)係?;洞?C語言被稱為函數(shù)式語言。(2)函數(shù)由函數(shù)頭(函數(shù)的說明部分)與函數(shù)體(函數(shù)的語句部分)兩部分組成。
①函數(shù)頭給出函數(shù)的特徵描述,包括函數(shù)的屬性、類型、名字、參數(shù)及參數(shù)類型。如例1[CD*2]3中的求最大值函數(shù)的函數(shù)頭:
intmax(intx,inty)/*函數(shù)屬性缺省,函數(shù)類型整型,函數(shù)名字max,函數(shù)參數(shù)x,y,整型*/等同於intmax(x,y)intx,y;②函數(shù)體給出函數(shù)功能實現(xiàn)的數(shù)據(jù)描述和操作描述,是程式中用花括弧括起的若干語句。如例1-1中的函數(shù)體:
{
printf(″thisisaCprogram.″);
}
函數(shù)體可以為空,可以沒有數(shù)據(jù)描述部分。2.語句
(1)語句是組成程式的基本單位,函數(shù)功能的實現(xiàn)由若干條語句完成。說明性語句完成數(shù)據(jù)描述,執(zhí)行性語句完成操作描述。
(2)語句由若干關(guān)鍵字加以標(biāo)識,如if-else語句、do-while語句等。C語言語句必須以分號結(jié)束。
(3)C語言本身沒有輸入/輸出語句,C語言的輸入/輸出操作由scanf函數(shù)和printf函數(shù)等庫函數(shù)完成。3.其他
1)預(yù)處理命令
C程式開始往往含有以“?!遍_頭的命令,它們是預(yù)處理命令。如例1-1中#include
″stdio.h″,用以指明包含檔。請參閱第12章。
2)程式注釋在程式中還有以“/*”開始,以“*/”結(jié)束的內(nèi)容,它們是程式中的注釋部分,用以幫助閱讀程式。注釋對程式的執(zhí)行沒有任何影響,編譯時將被過濾掉。加必要的注釋只為增加程式的可讀性。1.3.2C程式的書寫(1)一行一般寫一條語句。當(dāng)然一行可以寫多條語句,一條語句也可以寫在多行上。
(2)整個程式採用緊縮格式書寫。表示同一層次的語句行對齊,縮進同樣多的字元位置。如循環(huán)體中的語句要縮進對齊,選擇體中的語句要縮進對齊。
(3)花括弧的書寫方法較多,本書採用花括弧對齊的書寫方式,左邊花括弧處於第一條語句的開始位置,右邊花括弧獨佔一行,與左邊花括弧對齊。
(4)在程式中恰當(dāng)?shù)厥褂每招?,分隔程式中的語句塊,增加程式的可讀性。1.4C程式的實現(xiàn)1.4.1實現(xiàn)步驟C程式在電腦上的實現(xiàn)與其它高級語言程式的實現(xiàn)一樣,一般要經(jīng)過編輯、編譯、連接、運行四個步驟,如圖1-1所示。圖1-11.編輯
編輯是將C語言的根源程式輸入電腦,並以文本檔的形式存儲在磁片。編輯是建立C根源程式檔的過程,根源程式檔的擴展名為.C或.CPP。編輯可以用任何文字處理軟體完成,一般用編譯器本身集成的編輯器進行編輯。2.編譯
C語言是以編譯方式實現(xiàn)的高級語言,C程式的實現(xiàn)必須經(jīng)過編譯程序?qū)Ω闯淌竭M行編譯,生成目標(biāo)代碼程式。目標(biāo)代碼程式的擴展名為.OBJ。編譯前先進行預(yù)處理。編譯過程主要進行詞法分析和語法分析。編譯有錯時,在螢?zāi)簧狭谐鲥e誤的位置和種類。此時,要返回到編輯步驟修改根源程式,修改後,再進行編譯。3.連接
編譯形成的目標(biāo)代碼程式機器可以識別,但還不能直接執(zhí)行,還需要將目標(biāo)代碼程式與庫檔進行連接處理,連接工作由連接程式完成。經(jīng)過連接,生成可執(zhí)行檔??蓤?zhí)行檔的擴展名為.EXE。連接有錯同樣需返回到編輯步驟修改根源程式,修改後,再進行編譯、連接。4.運行
一個C根源程式經(jīng)過編譯、連接後生成了可執(zhí)行檔。運行可執(zhí)行檔,可通過編譯系統(tǒng)下的運行功能,也可像執(zhí)行DOS的外部命令一樣,輸入執(zhí)行檔案名運行。程式運行後,一般在螢?zāi)簧巷@示運行結(jié)果。根據(jù)運行結(jié)果可以判斷程式是否還有演算法方面的錯誤。編譯時產(chǎn)生的錯誤是語法錯誤,運行時出現(xiàn)的錯誤是邏輯錯誤。出現(xiàn)邏輯錯誤時需要修改演算法,重新編輯、編譯、運行程式。1.4.2程式的執(zhí)行C程式的執(zhí)行總是從主函數(shù)main()開始,不管主函數(shù)在程式中什麼位置。主函數(shù)中的語句依先後順序執(zhí)行,除非改變了程式的執(zhí)行流程。其他函數(shù)通過被調(diào)用執(zhí)行。1.4.3TURBOC上機操作1.啟動TURBOC
只需執(zhí)行TC.EXE檔,即可啟動TURBOC進入TURBOC的操作介面。如使用中文,需先將電腦置於中文操作系統(tǒng)管理之下。用TC加根源程式檔案名可快速啟動TURBOC,立即進入編輯操作。2.TURBOC操作介面啟動TURBOC後,主操作介面如圖1-2所示。圖1-21)組成
TURBOC主操作介面由主菜單區(qū)、編輯窗口、資訊窗口、熱鍵區(qū)四部分組成。
TURBOC的操作採用菜單驅(qū)動,主菜單包括File(檔操作)、Edit(編輯操作)、Run(運行操作)、Compile(編譯操作)、Project(工程檔)、Options(編譯選擇)及Debug(跟蹤排錯)各項。熱鍵區(qū)提供常用操作的快速功能鍵方式,如F1(幫助)、F2(保存檔)、F3(裝入檔)、F5(縮放窗口)、F6(切換窗口)、ALT+F5(用戶螢?zāi)唬?、ALT+X(退出TURBOC)等。2)主窗口當(dāng)前操作窗口為主窗口(工作窗口),主窗口為雙線框表示,按F6可切換主窗口,按F5可縮放主窗口。
3)菜單選擇方式一:按F10進入主菜單區(qū),通過菜單項的大寫字母選擇相應(yīng)菜單項,或通過游標(biāo)控制鍵(→、←、↑、↓)移動高亮度光棒至相應(yīng)菜單項,按回車選擇相應(yīng)菜單項。方式二:用熱鍵ALT加相應(yīng)菜單項的大寫字母,選擇相應(yīng)菜單項。對子菜單項的選擇,操作方法類似。3.編輯
編輯在編輯窗口中進行,有多種方式進入編輯環(huán)境:
方式一:選擇Edit項。方式二:選擇File項的子項New,用於編輯新程式。方式三:選擇File項的子項Load,裝入要修改的程式,用於修改程式。方式四:啟動時採用快速啟動方式。
TURBOC的編輯操作是Wordstar、WPS等字處理軟體編輯操作的子集,它與Wordstar、WPS的編輯操作完全類似。
4.編譯
TURBOC將編譯、連接一道完成。按熱鍵F9或選擇Compile項進入編譯。編譯時發(fā)生錯誤,返回編輯步驟,修改程式後,再編譯程序。
5.運行按熱鍵CTRL+F9或選擇Run項下的子項Run,運行電腦中的程式。按ALT+F5鍵或選擇Run項下的子項UserScreen進入用戶螢?zāi)?查看程式運行結(jié)果。運行時發(fā)生錯誤,返回編輯步驟,修改程式後,再編譯、運行程式。對於沒編譯的程式,選擇運行會先自動進行編譯操作,再運行程式。
演算法舉例
例1求5!(1×2×3×4×5)
s1,1→ps2,2→Is3,P×i→ps4,I+1→Is5,輸出p完整的演算法s1,1→p
s2,2→I
s3,當(dāng)I<=5為真時到s4;為假時到s7
s4,P×i→ps5,I+1→I
s6,轉(zhuǎn)到s3
s7,輸出p
開始1→p2→II<=5ftP×i→pI+1→I
輸出p
結(jié)束迴圈1→p2→II<=5P×i→pI+1→I輸出p流程圖表示N-S圖表示電腦語言表示Main(){intp,I;p=1;I=2;while(I<=5){p=p*I;I++;}printf(“%d”,p);}例250個學(xué)生,列印成績大於等於80的學(xué)生的學(xué)號和成績。s1,I=1s2,I<=50為真時到s3;為假時到s6s3,gi>=80為真時列印ni和gi;為假時空操作s4,I=I+1s5,轉(zhuǎn)到s2s6,結(jié)束開始1→iI<=50列印ni和giI+1→IGi>=80結(jié)束1→iI+1→ItGi>=80f列印ni和giI+1→I流程圖表示N-S圖表示fttf偽代碼表示BEGIN(演算法開始)I=1;WhileI<=50{inputn1andgiI=I+1;}I=1;whileI<=50{ifgi>=80printniandgiI=I+1}END(演算法結(jié)束)三種基本結(jié)構(gòu)的n-s圖表示
ABT
PFAB順序結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)P1成立
AB
直到P1成立當(dāng)型迴圈結(jié)構(gòu)直到型迴圈構(gòu)例4求1-1/2+1/3-1/4+…+1/99-1/00演算法可表示如下:S1,sign=1S2,sum=1S3,deno==2S4,sign=(-1)*signS5,term=sign*(1/deno)S6,sum=sum+termS7,deno=deno+1S8,若deno<=100返回s4,否則演算法結(jié)束開始Sum=1Deno=2sign-=1sign=(-1)*signterm=sign*(1/deno)sum=sum+termdeno=deno+1NDeno>100Y結(jié)束sum=1
Deno=2Sign=1Sign=(-1)*signTerm=sign*1/denosum=sum+termDeno=deno+1直到deno>100
列印sumN-S圖表示流程圖表示電腦語言表示Main(){intsign=1;floatdeno=2.0;,sum=1.0,term;while(deno<=100){sign=-sign;term=sign/deno;sum=sum+term;deno=deno+1;}Printf(“%f”,sum);}習(xí)題:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數(shù)列的前20項之和.例5:對於一個大於或等於3的正整數(shù),判斷它是不是一個素數(shù)S1:輸入n的值s2:I=2(I作為除數(shù))S3:N被I除,得餘數(shù)rS4:如果r=0,表示n能被I整除,則列印n”不是素數(shù)“,演算法結(jié)束;否則轉(zhuǎn)到s5S5:I=I+1S6:如果I<=n-1,返回s3;否則列印n”是素數(shù)“,然後結(jié)束.輸入nW=0I=2R=n/I的餘數(shù)是r=0
否W=1
I=I+1直到了I>或w<>0是w=0
否輸出n是素數(shù)輸出n不是素數(shù)N-S圖表示電腦語言表示#include<math.h>Main(){intn,I,k;scanf(“%d”,&n);k=sqrt(n);for(I=2;I<=k;I++)if(n%I==0)break;if(I>k)printf(“%disaprimenumber”,n);elseprintf(“%disnotaprimenumber”,n);}結(jié)構(gòu)化程式設(shè)計方法
例6:用篩法(埃拉托色尼篩法)求1-200之間的所有素數(shù)
1234567891011121314151617181920………….200A:B:C:
輸入1~n
把所有非素數(shù)去掉
列印全部素數(shù)輸入n的值I=1當(dāng)I<=n
xi=II=I+1A:將x1去掉(使x1=0)I=2當(dāng)I<n的平方根的整數(shù)如xi未去掉,則xi+1xn間全部是xi倍數(shù)的數(shù)去掉
I=I+1B:I=1
當(dāng)I<=n
列印未挖掉的xi
I=I+1C:演算法的進一步細化B1B2B3D3.1數(shù)據(jù)類型-數(shù)據(jù)類型基本類型整型字元型實型(浮點型)單精確度型雙精度型枚舉型構(gòu)造類型數(shù)組類型結(jié)構(gòu)體類型共用體類型指針類型空類型3.1.1常量的定義方法
常量是在程式運算過程中不變的量。常量在程式中經(jīng)常直接出現(xiàn),如123、3.14159、′a′、″computer″,此時只要求它們符合相應(yīng)類型數(shù)據(jù)的表示方法。相應(yīng)於各種數(shù)據(jù)類型,有整型常量、浮點型常量、字元型常量及字串常量。
常量定義是指定義符號常量,用一個識別字來代表一個常量,通過宏定義預(yù)處理指令來實現(xiàn)。格式:#define識別字常量由用戶命名的識別字是符號常量名。作為符號常量名,一般大寫。一旦定義,在程式中凡是出現(xiàn)常量的地方均可用符號常量名來代替。對使用了符號常量的程式在編譯前會以實際常量替代符號常量。例2–5
求圓的面積。/*程式2-5,求圓的面積*/
#definePI3.14
#defineR2
#include″stdio.h″
main(){floats;
s=PI*R*R;
printf(″面積=%6.3f″,s);
}運行結(jié)果:面積=12.5603.1.2變數(shù)定義1.變數(shù)定義方法
i格式:類型名變數(shù)表;變數(shù)的值變數(shù)表是用逗號分開的變數(shù)名。例如:存儲單元①inti,j;/*定義i,j為整型變數(shù)*/
②floatx,y;/*定義x,y為實型變數(shù)*/
③charch;/*定義ch為字元型變數(shù)*/
35
2.變數(shù)的初始化
定義了變數(shù),變數(shù)並沒有值??梢栽诙x變數(shù)的同時給出初值,對變數(shù)進行初始化。例如:
①inti=9;/*定義整型變數(shù)i,初值為9*/
②floatr=1.5;/*定義實型變數(shù)r,初值為1.5*/
③charanswer=′y′;/*定義字元型變數(shù)answer,初值為字元y*/3.2整型3.2.1基本整型1.類型名稱
int
2.取值範(fàn)圍
-32768~+32767(-215~215-1)
3.數(shù)據(jù)表示方法與數(shù)學(xué)上類似,不能有分隔符號。C語言允許使用八進制整數(shù)與十六進制整數(shù),八進制整數(shù)加前導(dǎo)0(數(shù)字),十六進制整數(shù)加前導(dǎo)0X。
4.運算操作
(1)算術(shù)運算包括:+(加法)、-(減法)、*(乘法)、/(除法)、%(求餘),運算規(guī)則除除法外,與數(shù)學(xué)中相同。整數(shù)的除法運算是整除,得到商,如5/3結(jié)果為1。對於負(fù)數(shù),多數(shù)機器採用向零取整法,如-5/3結(jié)果為-1。求餘運算,又稱取模運算,得到餘數(shù),如5%3結(jié)果為2,-5%3結(jié)果為-2。求餘運算在許多場合都非常有用,如判斷整數(shù)a是不是b的倍數(shù),可看a%b是否等於零。a%10得到a的個位數(shù)字,a/10)%10得到a的十位數(shù)字,如此可分離一個整數(shù)的數(shù)字。一般只有除數(shù)大於0,求餘運算才有意義。當(dāng)a小於0時,a%b等於-((-a)%b)。(2)關(guān)係運算包括:<(小於)、<=(小於等於)、==(等於)、!=(不等於)、>(大於)、>=(大於等於)等六種,運算規(guī)則與數(shù)學(xué)中相同,運算結(jié)果為邏輯類型數(shù)據(jù)。關(guān)係運算成立結(jié)果為1,不成立結(jié)果為0。5.存儲
C標(biāo)準(zhǔn)沒有具體規(guī)定各類數(shù)據(jù)存儲的位元組數(shù),各種機器處理有所不同,一般以一個機器字(Word)存放1個int數(shù)據(jù),PC機上int數(shù)據(jù)存儲用兩個位元組。機器中用最高位表示數(shù)的符號,正數(shù)符號位用0表示,負(fù)數(shù)符號位用1表示。負(fù)數(shù)在機器中存放的是其補數(shù)。6.應(yīng)用例2-1
求兩個整數(shù)的積。/*程式2-1,求兩個整數(shù)之積*/
#include″stdio.h″
main(){inta,b;
intm;
printf(″請輸入兩個整數(shù)a,b:″);
scanf(″%d,%d”,&a,&b);
m=a*b;
printf(″積=%d\n″,m);
}輸入數(shù)據(jù):2000,1
運行結(jié)果:積=20003.2.2拓展整型為拓展數(shù)據(jù)處理的範(fàn)圍,C語言通過類型修飾符來改變基本數(shù)據(jù)類型的含義,使之精確適合於不同應(yīng)用場合。拓展後的整型有短整型、長整型及無符號整型。
1.類型修飾符
short:縮短數(shù)值所占位元組數(shù)。
long:擴大數(shù)值所占位元組數(shù)。
signed:有符號位,缺省方式。
unsigned:無符號位。2.短整型短整型類型名稱為shortint或short,在TURBOC中,短整型與基本整型相同。
3.長整型長整型類型名稱為longint或long,取值範(fàn)圍為-231~231-1(-2147483648~2147483647),長整型數(shù)據(jù)可加尾碼L表示,在TURBOC中,存儲占4個位元組,運算與基本整型相同。
4.無符號整型
無符號數(shù)與有符號數(shù)的主要區(qū)別是數(shù)的最高位不作符號處理,表示數(shù)的絕對範(fàn)圍是有符號數(shù)的兩倍。相應(yīng)的無符號整型有無符號基本整型、無符號短整型和無符號長整型。無符號基本整型,類型名稱為unsignedint或unsigned,取值範(fàn)圍為0~65535(0~216-1),存儲占兩個位元組。無符號短整型,類型名稱為unsignedshortint或unsigned,取值、運算、存儲同無符號基本整型。無符號長整型,類型名稱為unsignedlongint或unsignedlong,取值範(fàn)圍為0~4294967295(0~232-1),存儲占4個位元組。無符號整型常用於處理大整數(shù)及地址數(shù)據(jù)。例2–2
整數(shù)9的機器表示。作為int,0000000000001001
作為shortint,0000000000001001
作為longint,00000000000000000000000000001001
以上第一位為符號位,表示正整數(shù)。以下第一位為正常的數(shù)據(jù)位,非符號位。作為unsignedint,0000000000001001
作為unsignedshortint,0000000000001001
作為unsignedlongint,000000000000000000000000000010013.3浮點型3.3.1單精確度型1.類型名稱float
2.取值範(fàn)圍
絕對值範(fàn)圍為10-38~1038,7位有效數(shù)字。3.數(shù)據(jù)表示方法
實數(shù)有一般形式和指數(shù)形式兩種表示方法。一般形式又稱小數(shù)表示法,是一種常規(guī)形式,由整數(shù)部分、小數(shù)點、小數(shù)部分三部分組成。C語言中的實數(shù)可以沒有小數(shù)部分或沒有整數(shù)部分,如20.,.375。指數(shù)形式由尾數(shù)、指數(shù)符號e或E、指數(shù)三部分組成,尾數(shù)是一般形式的實數(shù)。指數(shù)形式適於表示較大或較小的實數(shù)。如2.34e10、2.34e-10,相應(yīng)於數(shù)學(xué)中2.34×1010、2.34×10-10。4.運算操作
實型數(shù)據(jù)的運算操作有算術(shù)運算和關(guān)係運算兩大類,運算符同整型,運算規(guī)則與數(shù)學(xué)中實數(shù)的運算規(guī)則相同,但運算結(jié)果可能是一個近似值。實數(shù)沒有求餘運算。
5.存儲
4個位元組6.應(yīng)用例2–3
求兩個實數(shù)的積。/*程式2-3,求兩個實數(shù)之積*/
#include″stdio.h″
main(){floata,b;
floatm;
printf(″請輸入兩個整數(shù)a,b:″);
scanf(″%f,%f″,&a,&b);
m=a*b;
printf(″積=%6.3f\n″,m);
輸入數(shù)據(jù):1.1,2.21
運行結(jié)果:積=2.431
3.3.2雙精度型雙精度型類型名稱為double或longfloat,取值的絕對值範(fàn)圍為10-308~10308,16位有效數(shù)字,數(shù)的表示與運算操作同單精確度型,8個位元組存儲,能提高計算精度。電腦中太大的數(shù)不能表示,太小的數(shù)也不能表示,超出數(shù)的表示範(fàn)圍稱為溢出,相應(yīng)的有上溢與下溢。對於太大數(shù)的處理必須通過間接的方法進行。3.4字元型3.4.1字元類型
1.類型名稱
char
2.取值範(fàn)圍
ASCII碼字元集中的字元。3.數(shù)據(jù)表示方法
字元數(shù)據(jù)用單引號作界定符,如′a′、′+′、′%′、′:′、′1′、′2′。注意:單引號字元本身及雙引號、反斜杠字元由於有特定的含義,不能如此表示,數(shù)字字元與數(shù)字不同。字元數(shù)據(jù)本身除了可以直接出現(xiàn),還可以通過反斜杠後跟ASCII碼描述。ASCII碼可採用3位八進制數(shù)或2位十六進制數(shù),相應(yīng)描述形式是\ddd與\xhh(位數(shù)不夠,加0補位),這種表示方法稱為轉(zhuǎn)義表示或轉(zhuǎn)碼表示。尤其是一些特殊的字元只能這樣表示,如圖形字元′■′的表示′\376′,單引號、雙引號、反斜杠可表示成′\047′、′\042′、′\134′。
如此字元A可表示為′A′、′\101′、′\x41′。對一些常用的特殊字元,C語言還提供特定的字元來轉(zhuǎn)義表示:
′\n′:回車換行′\\′:反斜杠字元
′\′′:單引號字元′\′′:雙引號字元
′\a′:響鈴報警′\b′:退格
′\f′:走紙換行′\r′:回車
′\t′:橫向跳格′\u′:豎向跳格
4.運算操作
C語言的字元數(shù)據(jù)實際存儲其ASCII碼,存儲形式與整數(shù)的存儲形式類似。C語言中規(guī)定字元數(shù)據(jù)與整型數(shù)據(jù)在ASCII碼取值範(fàn)圍內(nèi)通用,因而C語言中字元數(shù)據(jù)可進行整型數(shù)據(jù)的運算及操作。例如:
①′a′+′b′,等於97+98;
②′a′+2,等於97+2;
③′a′<′b′等於97<98。5.存儲
1個位元組。6.應(yīng)用例2-4
輸出ASCII碼表。/*程式2-4,輸出ASCII碼表*/
#include″stdio.h″
main(){inti;
printf(″ASCII碼表\n″);
for(i=0;i<=255;i++)printf(″字元%c,ASCII碼%d\n″,i,i);
}3.4.2字串?dāng)?shù)據(jù)1.字串表示
字串?dāng)?shù)據(jù)用雙引號作界定符,如:
″chinaone″、″computer″、″$123.45″、″\nabc″、″%d%f″
2.字串存儲字串?dāng)?shù)據(jù)存儲除存儲構(gòu)成字串的字元序列本身外,還必須附加存儲字串的結(jié)束標(biāo)誌空操作字元′\0′存儲一個字串的位元組數(shù)等於字元個數(shù)加1,即字串長度再加1。
3.字串類型
3.5邏輯類型3.5.1邏輯類型
C語言沒有專門提供邏輯類型,而是借用整型、字元型、實型來描述邏輯數(shù)據(jù)。
C語言規(guī)定,0作為邏輯數(shù)據(jù)代表假,非0的數(shù)作為邏輯數(shù)據(jù)代表真。在一個式子裏面要注意區(qū)分作為普通數(shù)據(jù)的數(shù)與作為邏輯數(shù)據(jù)的數(shù)。
C語言同時規(guī)定,邏輯數(shù)據(jù)真為1,邏輯數(shù)據(jù)假為0。如:2<3為真,運算式的值為1;2>3為假,運算式的值為0。3.5.2邏輯運算
假定有邏輯數(shù)據(jù)p、q,邏輯運算的運算規(guī)則為:
①!p,得到與p相反的邏輯數(shù)據(jù)。p為真,!p為假;p為假,!p為真;
②p&&q,只有p、q同時為真時,運算結(jié)果為真;只要p、q有一個為假,運算結(jié)果為假;
③p||q,只要p、q中有一個為真,運行結(jié)果為真;只有p、q同時為假,運算結(jié)果為假。例如:
①!(2>3)等於1;
②(2>3)&&(3>2)等於0;
③(2>3)||(3>2)等於1。3.6標(biāo)準(zhǔn)函數(shù)
函數(shù)調(diào)用通過函數(shù)名進行,以實際數(shù)據(jù)(實參)代替函數(shù)中的參數(shù),即函數(shù)名(實參)。數(shù)學(xué)函數(shù)包含在頭檔math.h中,用#include″math.h″指明。參數(shù)x為double,或float,或int型數(shù),函數(shù)值為double型。常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)有:
①acos(x),求x的反余弦,x必須在-1~1的範(fàn)圍內(nèi)。
②asin(x),求x的反正弦,x必須在-1~1的範(fàn)圍內(nèi)。3.1運算式基礎(chǔ)3.1.1運算式的組成1.運算符
運算符又稱操作符,是一個符號,它指示在一個或多個運算元上完成某種運算操作或動作。
C語言中,除了輸入、輸出及程式流程控制操作以外的所有基本操作都作為運算處理。如,賦值運算符“=”、逗號運算符“,”、括弧運算符“()”。①算術(shù)運算符有+、—、*、/、%、++、--②關(guān)係運算符有<、<=、==、!=、>、>=
③邏輯運算符有!、&&、||
④位運算符有<<、>>、~、|、^、&
⑤賦值運算符有=、+=、-=、*=、/=、%=
⑥條件運算符有?:
⑦逗號運算符有,
⑧指針運算符有*、&
⑨求位元組數(shù)運算符有sizeof
10強制類型轉(zhuǎn)換運算符有(類型)11其他運算符有.、→、()、[]等2.運算元
運算元是運算符的操作對象,可以是常量、變數(shù)、函數(shù)與運算式。常量、變數(shù)、函數(shù)本身就是簡單運算式,從一般意義上講,C語言中所有運算元都是運算式。複雜運算式由運算符連接簡單運算式形成。3.1.2運算式的書寫
C語言的運算式雖然來源於數(shù)學(xué)運算式,是數(shù)學(xué)運算式在電腦中的表示,但在書寫時應(yīng)該注意遵循C語言運算式書寫的原則:
(1)C語言的運算式只能採用線性的形式書寫。例如:①應(yīng)寫成1/3+i+j*j*j。
②應(yīng)寫成(a+b)/(c+d)*e+f。(2)C語言的運算式只能使用C語言中合法的運算符和運算元,對有些操作必須調(diào)用庫函數(shù)完成,而且運算符不能省略。例如:
①πr2應(yīng)寫成3.14159*r*r。
②應(yīng)寫成0.5*a*b*sin(alph)。
③|x-y|應(yīng)寫成fabs(x-y)。
④y+2X
應(yīng)寫成y+pow(2,x)。3.1.3運算式的分類
C語言運算式種類很多,有多種分類方法。我們一般依據(jù)運算的特徵將運算式分為:
①算術(shù)運算式,如a+b*2.0-3.0/5.0。
②關(guān)係運算式,如x>=y,關(guān)係運算式可以認(rèn)為是邏輯運算式的特殊情況。
③邏輯運算式,如(x>=2)&&(x<=8)。
④賦值運算式,如a=b=c=1。
⑤條件運算式,如(a>b)?a:b。
⑥逗號運算式,如a=2,b=a*a,c=sqrt(b)。3.1.4運算式的計算1.運算符優(yōu)先順序C語言將運算符的優(yōu)先順序劃分為15級,初等運算()、[]、→、.優(yōu)先順序最高,單目運算!、~、++、--、-、(類型)、*、&、sizeof優(yōu)先順序次高,算術(shù)運算+、-、*、/、%再次之,然後是關(guān)係運算<、<=、==、!=、>、>=,再然後是邏輯運算&&、||,條件運算式?:,賦值運算=、+=、-=、*=、/=、%=,逗號運算優(yōu)先順序最低,位運算優(yōu)先順序比較分散。2.運算符的結(jié)合性
運算符的結(jié)合性是指,優(yōu)先順序相同的運算從左到右進行(左結(jié)合性)還是從右至左進行(右結(jié)合性),左結(jié)合性是人們習(xí)慣的計算順序。
C語言中,只有單目運算(!、~、++、--、-、*、&)、條件運算(?:)、賦值運算(=、+=、-=、*=、/=、%=)的結(jié)合性是右結(jié)合,其餘運算為左結(jié)合。3.類型轉(zhuǎn)換一般講相應(yīng)的運算只有相應(yīng)類型的數(shù)據(jù)才能進行,不同類型數(shù)據(jù)進行運算時,要進行類型轉(zhuǎn)換。類型轉(zhuǎn)換有自動轉(zhuǎn)換(又稱隱含轉(zhuǎn)換)與強制轉(zhuǎn)換兩種方式。
(1)自動轉(zhuǎn)換。自動轉(zhuǎn)換由系統(tǒng)自動完成,轉(zhuǎn)換的規(guī)則如圖3-1所示。Intusignedlongdouble
↑↑
short,charfloat圖3-1
縱向箭頭方向表示必定要進行的轉(zhuǎn)換,short型、char型數(shù)據(jù)必定先轉(zhuǎn)換成int型,float型數(shù)據(jù)必定先轉(zhuǎn)換成double型,再進行運算。橫向箭頭方向表示類型自動轉(zhuǎn)換的方向。由低向高轉(zhuǎn)換,int型最低,double型最高。int型與usingned型數(shù)據(jù)進行運算,int型轉(zhuǎn)換成unsigned;int型與long型數(shù)據(jù)進行運算,int型轉(zhuǎn)換成long型;int型與double型數(shù)據(jù)進行運算,int型轉(zhuǎn)換成double型。其他類推。這種轉(zhuǎn)換是一種保值映射,在轉(zhuǎn)換中數(shù)據(jù)的精度不受損失。(2)強制轉(zhuǎn)換。強制類型轉(zhuǎn)換通過類型轉(zhuǎn)換運算進行。格式:(類型名)(運算式)將運算式的類型強制轉(zhuǎn)換成類型名指定的類型。如:floatx,y;
(int)(x+y)將運算式x+y的值強制轉(zhuǎn)換成整型強制類型轉(zhuǎn)換在將高類型轉(zhuǎn)換為低類型時,數(shù)據(jù)精度受損,是一種不安全的轉(zhuǎn)換。強制類型轉(zhuǎn)換是暫時性的,一次性的,並不永久改變所轉(zhuǎn)換運算式的類型。如:inta;
(double)a為雙精度,a依然為整型量。
例3–1運算式計算。(1)floatx=2.5,y=4.7;inta=7;
計算x+a%3*(int)(x+y)%2/4
⑦①④③②⑤⑥
①a%3等於1。②x+y等於7.2。③(int)(x+y)等於7。④a%3*(int)(x+y)等於7。⑤a%3*(int)(x+y)%2等於1。⑥a%3*(int)(x+y)%2/4等於0。⑦x+a%3*(int)(x+y)%2/4等於2.5+0,結(jié)果為2.5。
第二項將由整型自動轉(zhuǎn)換為雙精度型進行運算,計算結(jié)果為雙精度型。(2)inta=2,b=3;floatx=3.5,y=2.5;
計算(float)(a+b)/2+(int)x%(int)y
②①③⑦④⑥⑤①a+b等於5。②(float)(a+b)等於5.0,強制轉(zhuǎn)換成float型。③(float)(a+b)/2等於5.0/2.0,結(jié)果為2.5。④(int)x等於3,強制轉(zhuǎn)換成int型。⑤(int)y等於2,強制轉(zhuǎn)換成int型。⑥(int)x%(int)y等於1。⑦(float)(a+b)/2+(int)x%(int)y等於2.5+1.0,結(jié)果為3.5(雙精度型)。(3)inti=3;floatf=1.0;doubled=2.3;
計算10+′a′+i*f-d
①③②④
①′a′轉(zhuǎn)換成97,10+′a′等於107。②i,f轉(zhuǎn)換成雙精度型,i*f等於3.0。③107轉(zhuǎn)換成雙精度型,10+′a′+i*f等於110.0。④10+′a′+i*f-d等於107.7。3.2算術(shù)運算式1.自增運算
自增運算符:++
自增運算是單目運算,運算元只能是整型變數(shù),有前置、後置兩種方式:
++i,在使用i之前,先使i的值增加1,俗稱先增後用。
i++,先使用i的值,然後使i的值增加1,俗稱先用後增。如:i=1999;
j=++i;/*先將i的值增1,變?yōu)?000,後使用。j的值也為2000*/j=i++;/*先使用,j的值為1999。後增,將i的值增1,變?yōu)?000*/
自增運算優(yōu)先順序處於第2級,結(jié)合自右向左。
2.自減運算
自減運算符:--
自減運算與自增運算一樣也是單目運算,運算元也只能是整型變數(shù)。同樣有前置、後置兩種方式:
--i,在使用i之前,先使i的值減1,俗稱先減後用。
i--,先使用i的值,然後使i的值減1,俗稱先用後減。如:i=2000;
j=--i;/*先減,將i的值減1,變?yōu)?999。後使用,j的值也為1999*/
j=i--;/*先使用,j的值為2000。後減,將i的值減1,i的值變?yōu)?999*/自減運算的優(yōu)先順序、結(jié)合性同自增運算。
請?zhí)貏e注意:
(1)自增、自減運算只能用於整型變數(shù),不能用於常量或運算式。
(2)自增、自減運算比等價的賦值語句生成的目標(biāo)代碼更高效。
(3)該運算常用於迴圈語句中,使迴圈控制變數(shù)自動加、減1,或用於指針變數(shù),使指針指向下一個或上一個地址。
(4)運算式中包含有自增、自減運算時,容易出錯,務(wù)請小心。如:i=1;
(++i)+(++i)+(++i)的值為多少呢?有的計算出9(=2+3+4),其實這是錯誤的。計算時先對整個運算式掃描,i先自增3次,由1→2→3→4,如此計算結(jié)果為4+4+4,等於12。(i++)+(i++)+(i++)的值又是多少呢?類似上面分析,應(yīng)為3,當(dāng)然運算式計算完成後i的值同樣改變?yōu)?。3.運算符的組合問題
C語言的運算符一般為一個字元,有的由兩個字元組成,在運算式中出現(xiàn)多個字元時如何組合呢?C編譯系統(tǒng)在處理時原則上盡可能自左而右將若干字元組合成一個運算符,識別字、關(guān)鍵字也按同樣的原則進行處理。如i+++j,解釋為(i++)+j,非i+(++j)。如要表示i+(++j),必須加括弧。例3–2
自增自減運算。/*程式3-2,自增自減運算*/
#include″stdio.h″
main()
{inti,j;
i=j=5;
printf(″i++=%d,j--=%d\n″,i++,j--);
printf(″++i=%d,--j=%d\n″,++i,--j);
printf(″i++=%d,j--=%d\n″,i++,j--);
printf(″++i=%d,--j=%d\n″,++i,--j);
printf(″i=%d,j=%d\n″,i,j);
}運行結(jié)果:
i++=5,j--=5
++i=7,--j=3
i++=7,j--=3
++i=9,--j=1
i=9,j=13.3賦值運算式3.3.1賦值運算
賦值運算符:=
賦值運算是雙目運算,一個運算元為變數(shù),一個運算元為運算式。賦值運算符的右邊是運算式,左邊是變數(shù)。賦值運算時先計算右邊運算式的值,然後將右邊運算式的值賦給左邊變數(shù),即送給左邊變數(shù)對應(yīng)的存儲單元,並以此作為整個賦值運算式的值。
如:inti;
i=3+5%2;/*先計算3+5%2,得到4,然後將4賦給i*/。賦值運算的優(yōu)先順序為第14級,次低,結(jié)合自右向左。賦值運算中的運算式運算元最簡單的形式是一個常量,這時讓變數(shù)得到一個初值。如:inti;floatx;charch;
i=100;x=12.345;ch=′A′;
賦值運算中表達式運算元又可以是賦值運算式,如此可輾轉(zhuǎn)賦值。如:intx,y,z;
x=y=z=0.0;/*相當(dāng)於x=(y=(z=0.0)),x、y、z都得到值0*/③②①3.3.2賦值類型轉(zhuǎn)換
(1)將實型數(shù)據(jù)賦給整型變數(shù)時,捨棄實數(shù)的小數(shù)部分。如:inti;
i=1.23;/*結(jié)果i的值為1*/
(2)將整型數(shù)據(jù)賦給單、雙精度型變數(shù)時,數(shù)值大小不變,但以浮點形式存儲到變數(shù)中。(3)將字元型數(shù)據(jù)賦給整型變數(shù)時,由於字元數(shù)據(jù)只占一個位元組,而整型變數(shù)為兩個位元組,將字元的數(shù)據(jù)放整型變數(shù)的低8位,而對整型變數(shù)的高8位進行擴充。
(4)將基本整型數(shù)據(jù)賦給長整型變數(shù)時,基本整型數(shù)據(jù)放長整型變數(shù)低16位,高16位用符號位擴充。反之將長整型數(shù)據(jù)賦給整型變數(shù)時,只需將長整型數(shù)據(jù)的低16位原封不動送整型變數(shù)中。例如:①inti=-1;
longintj;
j=i;
i的二進位形式:1111111111111111
j的二進位形式:11111111111111111111111111111111
②longinti=-1;
intj;
j=i;
i的二進位形式:11111111111111111111111111111111
j的二進位形式:1111111111111111(5)將無符號整型數(shù)據(jù)賦給長整型變數(shù)時,不存在符號擴展的問題,只需將高位補0即可。將無符號整型數(shù)據(jù)賦給一個占位元組數(shù)相同的整型變數(shù)時,將無符號整型數(shù)據(jù)原樣送整型變數(shù)中,並將最高位當(dāng)作符號位,如果數(shù)據(jù)超出相應(yīng)的整型範(fàn)圍,將產(chǎn)生數(shù)據(jù)錯誤。如果將整型數(shù)據(jù)賦給占位元組數(shù)相同的無符號整型變數(shù),也是原樣照賦,最高位作數(shù)值處理。例如:①unsignedinti=65535;
intj;
j=i;/*j的值為-1*/
②inti=-1;
unsignedintj;
j=i;/*i的值為65535*/
3.3.3複合賦值運算
在基本賦值運算符“=”之前加上任一雙目算術(shù)運算符及位運算符可構(gòu)成複合賦值運算符,又稱帶運算的賦值運算符。算術(shù)複合賦值運算符:+=、-=、*=、/=、%=
位複合賦值運算符:&=、|=、^=、>>=、<<=
一般形式:變數(shù)☆=運算式等價於:變數(shù)=變數(shù)☆運算式☆代表任一雙目算術(shù)運算符或位運算符。複合賦值運算先進行所帶運算,再進行賦值運算。複合賦值運算的優(yōu)先順序同賦值運算。(1)inta=3;
a+=2等價於a=a+2
(2)floatx=1.2,y=2.1;
y*=x+3.4等價於y=y*(x+3.4)(3)inta=1,b=2;
b/=a+=1,等價於b=b/(a=a+1)例3–3
賦值運算。/*程式3-3,賦值運算*/
#include″stdio.h″
main()
{inti,j;
floatx,y;
i=j=1;
x=y=1.1;
printf(″i=%d,j=%d\n″,i,j);
x=i+j;
y+=1;printf(″x=%4.2f,y=%4.2f\n″,x,y);
i=i+++j;
x=2*x+y;
printf(″i=%d,x=%4.2f\n″,i,x);
}運行結(jié)果:
i=1,j=1
x=2.00,y=2.10
i=2,x=6.103.4邏輯運算式3.4.1關(guān)係運算式
關(guān)係運算式是邏輯運算式中的一種特殊情況,關(guān)係運算式由關(guān)係運算符和運算元組成,關(guān)係運算用於完成數(shù)的比較運算。關(guān)係運算有<、<=、==、!=、>、>=,<、<=、>、>=的優(yōu)先順序相同,==、!=的優(yōu)先順序相同,前者的優(yōu)先順序高於後者。關(guān)係運算符的優(yōu)先順序低於算術(shù)運算,高於邏輯運
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西南林業(yè)大學(xué)《材料科學(xué)與工程基礎(chǔ)》2022-2023學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《西京青曲課堂相聲》2021-2022學(xué)年第一學(xué)期期末試卷
- 職稱申報誠信承諾書(個人)附件4
- 西華師范大學(xué)《篆書技法》2021-2022學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《現(xiàn)代數(shù)學(xué)概論》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024年職業(yè)資格-養(yǎng)老護理員養(yǎng)老基礎(chǔ)知識模擬考試題庫試卷
- 西華師范大學(xué)《人體解剖生理學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《地理多媒體課件制作》2023-2024學(xué)年第一學(xué)期期末試卷
- 西昌學(xué)院《項目設(shè)計實訓(xùn)》2022-2023學(xué)年第一學(xué)期期末試卷
- 電力專項測試題附答案
- 《旅游線路設(shè)計與開發(fā)》課程教學(xué)大綱
- 基于PLC的工業(yè)控制系統(tǒng)設(shè)計 -自動藥片裝瓶控制
- CRRT規(guī)范化治療方案執(zhí)行課件
- 工程設(shè)計變更申請表
- 清創(chuàng)術(shù)(debridement)精品課件
- 車間蚊蟲巡檢記錄表
- 新員工培訓(xùn)-財務(wù)費用報銷sangfor
- 儲罐施工技術(shù)方案
- 利潤分配專項審計
- 人教精通版四年級英語上冊Unit 5 Lesson 27 教學(xué)設(shè)計
- 三年級上冊美術(shù)課件-第7課 北京的胡同 ▏人美版(北京) (17張PPT)
評論
0/150
提交評論