版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章C語言概述本章主要介紹C語言程序的結(jié)構(gòu)和書寫規(guī)則,以及TurboCV2.0的基本操作。1.1C語言的發(fā)展簡(jiǎn)史和特點(diǎn)1.2C語言程序的結(jié)構(gòu)與書寫規(guī)則1.3TurboCV2.0的基本操作1.1C語言的發(fā)展簡(jiǎn)史和特點(diǎn)1.C語言的誕生與發(fā)展(1)在C語言誕生以前,系統(tǒng)軟件主要是用匯編語言編寫的。由于匯編語言程序依賴于計(jì)算機(jī)硬件,其可讀性和可移植性都很差;但一般的高級(jí)語言又難以實(shí)現(xiàn)對(duì)計(jì)算機(jī)硬件的直接操作(這正是匯編語言的優(yōu)勢(shì)),于是人們盼望有一種兼有匯編語言和高級(jí)語言特性的新語言。(2)C語言是貝爾實(shí)驗(yàn)室于70年代初研制出來的,后來又被多次改進(jìn),并出現(xiàn)了多種版本。80年代初,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI),根據(jù)C語言問世以來各種版本對(duì)C語言的發(fā)展和擴(kuò)充,制定了ANSIC標(biāo)準(zhǔn)(1989年再次做了修訂)。本書以ANSIC新標(biāo)準(zhǔn)來介紹。(3)目前,在微機(jī)上廣泛使用的C語言編譯系統(tǒng)有MicrosoftC、TurboC、BorlandC等。雖然它們的基本部分都是相同的,但還是有一些差異,所以請(qǐng)大家注意自己所使用的C編譯系統(tǒng)的特點(diǎn)和規(guī)定(參閱相應(yīng)的手冊(cè))。本書選定的上機(jī)環(huán)境是TCV2.0(DOS操作系統(tǒng))。
2.C語言的特點(diǎn)
C語言同時(shí)具有匯編語言和高級(jí)語言的優(yōu)勢(shì)。(1)語言簡(jiǎn)潔、緊湊,使用方便、靈活。(2)運(yùn)算符極其豐富。共有34種運(yùn)算符。(3)數(shù)據(jù)結(jié)構(gòu)豐富。C的數(shù)據(jù)類型有整形、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。(4)具有結(jié)構(gòu)化的控制語句。IF……ELSE(5)語法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大。(6)生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。(7)可移植性好(較之匯編語言)。(8)可以直接操縱硬件。
3.在C語言中,除實(shí)現(xiàn)順序、選擇和循環(huán)三種基本結(jié)構(gòu)等的9條控制語句外,輸入輸出操作均由標(biāo)準(zhǔn)庫(kù)函數(shù)(不是C語言的組成部分)來實(shí)現(xiàn)。所以學(xué)習(xí)C語言,不僅要學(xué)習(xí)這9條控制語句和各種運(yùn)算符,而且要學(xué)習(xí)并掌握常用標(biāo)準(zhǔn)庫(kù)函數(shù)的使用。[Return]
1.2C語言程序的結(jié)構(gòu)與書寫規(guī)則1.2.1C語言程序的總體結(jié)構(gòu)
一個(gè)完整的C語言程序,必須是由一個(gè)main()函數(shù)(又稱主函數(shù))和若干個(gè)其它函數(shù)結(jié)合而成的,或僅由一個(gè)main()函數(shù)構(gòu)成。[案例1.1]僅由main()函數(shù)構(gòu)成的C語言程序。/*案例代碼文件名:AL1_1.C*//*功能:僅由main()函數(shù)構(gòu)成的C語言程序示例*/main(){printf(“ThisisaCprogram.\n”);}程序運(yùn)行結(jié)果:
ThisisaCprogram.[程序演示][案例1.2]由main()函數(shù)和1個(gè)其它函數(shù)max()構(gòu)成的C語言程序。/*案例代碼文件名:AL1_2.C*//*功能:由main()函數(shù)和1個(gè)其它函數(shù)max()構(gòu)成的C語言程序示例*/intmax(intx,inty){return(x>y?x:y);}main(){intnum1,num2;printf(“Inputthefirstintegernumber:”);scanf(“%d”,&num1);printf(“Inputthesecondintegernumber:”);scanf(“%d”,&num2);printf(“max=%d\n”,max(num1,num2));}程序運(yùn)行情況:
Inputthefirstintegernumber:6←┘Inputthesecondintegernumber:9←┘max=9[程序演示][案例1.3]改寫[案例1.2],交換main()函數(shù)和max()函數(shù)的前后位置。源程序略。程序運(yùn)行情況:
Inputthefirstintegernumber:6←┘Inputthesecondintegernumber:9←┘max=9結(jié)論:1.函數(shù)是C語言程序的基本單位。main()函數(shù)的作用,相當(dāng)于其它高級(jí)語言中的主程序;其它函數(shù)的作用,相當(dāng)于子程序。2.C語言程序總是從main()函數(shù)開始執(zhí)行。一個(gè)C語言程序,總是從main()函數(shù)開始執(zhí)行,而不論其在程序中的位置。當(dāng)主函數(shù)執(zhí)行完畢時(shí),亦即程序執(zhí)行完畢。習(xí)慣上,將主函數(shù)main()放在最前頭。3.C語言本身沒有輸入輸出語句。輸入輸出是由庫(kù)函數(shù)完成的。
1.2.2函數(shù)的一般結(jié)構(gòu)
任何函數(shù)(包括主函數(shù)main())都是由函數(shù)說明和函數(shù)體兩部分組成。其一般結(jié)構(gòu)如下:
[函數(shù)類型]函數(shù)名(函數(shù)參數(shù)表)函數(shù)說明部分
{說明語句部分;執(zhí)行語句部分;函數(shù)體部分
}
1.使用的語法符號(hào)約定
[...]──方括號(hào)表示可選(即可以指定,也可以缺?。?/p>
……──省略號(hào)表示前面的項(xiàng)可以重復(fù)
|──多(含2)中選1
2.函數(shù)說明由函數(shù)類型(可缺?。?、函數(shù)名和函數(shù)參數(shù)表三部分組成,其中函數(shù)參數(shù)表的格式為:數(shù)據(jù)類型形參[,數(shù)據(jù)類型形參2……]例如,[案例1.2]中的函數(shù)max(),其函數(shù)說明各部分如圖1-1所示。函數(shù)類型函數(shù)名函數(shù)參數(shù)表↓↓↓
intmax(intx,inty)↓↓
函數(shù)參數(shù)類型圖1-1函數(shù)說明部分結(jié)構(gòu)圖注意:在舊標(biāo)準(zhǔn)中,函數(shù)可以缺省參數(shù)表。3.函數(shù)體函數(shù)體由大括號(hào){}括起來。函數(shù)體一般由說明語句和可執(zhí)行語句兩部分構(gòu)成:(1)說明語句部分說明語句部分由變量定義、自定義類型定義、自定義函數(shù)說明、外部變量說明等組成。
(2)可執(zhí)行語句一般由若干條可執(zhí)行語句構(gòu)成。圖1-2是[案例1.2]的main()函數(shù)體的示意圖。/*主函數(shù)main()*/main(){intnum1,num2;變量定義部分
printf(“Inputthefirstintegernumber:”);scanf(“%d”,&num1);printf(“Inputthesecondintegernumber:”);可執(zhí)行語句部分函數(shù)體
scanf(“%d”,&num2);printf(“max=%d\n”,max(num1,num2));}
圖1-2函數(shù)體結(jié)構(gòu)示意圖
4.說明(1)函數(shù)體中的變量定義語句,必須在所有可執(zhí)行語句之前。下面程序中變量定義語句“intmax;”的位置是非法的:main(){intx,y; /*變量定義語句:定義2個(gè)整型變量x、y*/x=3; /*可執(zhí)行的賦值語句:將3賦值給變量x*/y=6; /*可執(zhí)行的賦值語句:將6賦值給變量y*/
intmax; /*變量定義語句:出現(xiàn)在可執(zhí)行的賦值語句“x=3;”和“y=6;”之后,非法!*/max=x>y?x:y;printf(“max=%d\n”,max);}解決辦法很簡(jiǎn)單,請(qǐng)讀者自己思考。(2)如果不需要,也可以缺省變量定義語句和執(zhí)行語句。如:dump(){}
它是一個(gè)空函數(shù),什么也不干。1.2.3源程序書寫格式1.所有語句都必須以分號(hào)“;”結(jié)束,函數(shù)的最后一個(gè)語句也不例外。2.程序行的書寫格式自由,既允許1行內(nèi)寫幾條語句,也允許1條語句分寫在幾行上。例如,[案例1.2]的主函數(shù)main(),也可改寫成如下所示的格式:……main(){intnum1,num2;printf(“Inputthefirstintegernumber:”);scanf(“%d”,&num1);printf(“Inputthesecondintegernumber:”);scanf(“%d”,&num2);printf(“max=%d\n”,max(num1,num2));}如果某條語句很長(zhǎng),一般需要將其分寫在幾行上。3.允許使用注釋。C語言的注釋格式為:/*……*/例如,在[案例1.1]和[案例1.2]中,以及本節(jié)其它部分給出的源程序中,凡是用“/*”和“*/”括起來的字符,都是注釋。(1)“/*”和“*/”必須成對(duì)使用,且“/”和“*”、以及“*”和“/”之間不能有空格,否則都出錯(cuò)。
技巧:為避免遺漏必須配對(duì)使用的符號(hào),例如注釋符號(hào)、函數(shù)體的起止標(biāo)識(shí)符(花括號(hào))、圓括號(hào)等等,在輸入時(shí),可連續(xù)輸入這些起止標(biāo)識(shí)符,然后再在其中進(jìn)行插入來完成內(nèi)容的編輯。在起止標(biāo)識(shí)符嵌套時(shí),以及相距較遠(yuǎn)時(shí),這樣做更有必要。
(2)注釋的位置,可以單占1行,也可以跟在語句的后面。(3)如果1行寫不下,可另起1行繼續(xù)寫。(4)注釋中允許使用漢字。在非中文操作系統(tǒng)下,看到的是一串亂碼,但不影響程序運(yùn)行。
[Return]1.3TurboCV2.0的基本操作1.運(yùn)行一個(gè)C語言程序的一般過程2.TC的啟動(dòng)、退出與命令菜單3.編輯并保存一個(gè)C語言源程序4.編譯、連接──單個(gè)源程序文件5.運(yùn)行與查看結(jié)果6.編輯下一個(gè)新的源程序[Return]1.運(yùn)行一個(gè)C語言程序的一般過程
Tu(píng)rboC是一個(gè)集源程序編輯、編譯、連接、運(yùn)行與調(diào)試于一體、用菜單驅(qū)動(dòng)的集成軟件環(huán)境。
運(yùn)行一個(gè)C語言程序的一般過程:(1)啟動(dòng)TC,進(jìn)入TC集成環(huán)境。(2)編輯(或修改)源程序。(3)編譯。如果編譯成功,則可進(jìn)行下一步操作;否則,返回(2)修改源程序,再重新編譯,直至編譯成功。(4)連接。如果連接成功,則可進(jìn)行下一步操作;否則,根據(jù)系統(tǒng)的錯(cuò)誤提示,進(jìn)行相應(yīng)修改,再重新連接,直至連接成功。(5)運(yùn)行。通過觀察程序運(yùn)行結(jié)果,驗(yàn)證程序的正確性。如果出現(xiàn)邏輯錯(cuò)誤,則必須返回(2)修改源程序,再重新編譯、連接和運(yùn)行,直至程序正確。(6)退出TC集成環(huán)境,結(jié)束本次程序運(yùn)行。[Return]2.TC的啟動(dòng)、退出與命令菜單
(1)啟動(dòng)TurboC:tc←┘[畫面演示]啟動(dòng)TurboC后,其主菜單條橫向排列在屏幕頂端,并被激活,其中File主項(xiàng)成為當(dāng)前項(xiàng)。主菜單的下面,是Edit(編輯)窗口和Message(消息)窗口。兩個(gè)窗口中,頂端橫線為雙線顯示的,表示該窗口是活動(dòng)窗口。編輯窗口的頂端為狀態(tài)行,其中:.Line1Col1:顯示光標(biāo)所在的行號(hào)和列號(hào),即光標(biāo)位置。.Insert:表示編輯狀態(tài)處于“插入”。當(dāng)處于“改寫”狀態(tài)時(shí),此處為空白。.d:NONAME.C:顯示當(dāng)前正在編輯的文件名。顯示為“NONAME.C”時(shí),表示用戶尚未給文件命名。屏幕底端是7個(gè)功能鍵的說明,以及NumLock鍵的狀態(tài)(顯示“NUM”時(shí),表示處于“數(shù)字鍵”狀態(tài);空白,表示“控制鍵”狀態(tài))。
(2)命令菜單的使用
1)按下功能鍵F10,激活主菜單。如果主菜單已經(jīng)被激活,則直接轉(zhuǎn)下一步。
2)用左、右方向鍵移動(dòng)光帶,定位于需要的主項(xiàng)上,然后再按回車鍵,打開其子菜單(縱向排列)。
3)用上、下方向鍵移動(dòng)光帶,定位于需要的子項(xiàng)上,回車即可。執(zhí)行完選定的功能后,系統(tǒng)自動(dòng)關(guān)閉菜單。注意:菜單激活后,又不使用,可再按F10/Esc鍵關(guān)閉,返回原來狀態(tài)。
(3)退出TurboC
退出TC有兩種方法:
1)菜單法:File|Quit(先選擇File主項(xiàng),再選擇并執(zhí)行Quit子項(xiàng))
2)快捷鍵法:Alt+“X”(先按下Alt鍵并保持,再按字母鍵X,然后同時(shí)放開)[Return]3.編輯并保存一個(gè)C語言源程序
(1)激活主菜單,選擇并執(zhí)行File|Load項(xiàng)(快捷鍵鍵:F3)。(2)在“LoadFileName”窗口,輸入源程序文件名。文件名的輸入有兩種方法:直接輸入和選擇輸入。1)直接輸入按照文件名的組成字符串,逐個(gè)字符輸入即可。如果是已經(jīng)存在的文件,系統(tǒng)就在編輯窗口顯示該文件的內(nèi)容,可供編輯、修改。如果是新文件,則給出一個(gè)空白編輯窗口,可供輸入新的源程序。如果該文件不在當(dāng)前目錄下,則需要冠以路徑名和(或)盤符。2)選擇文件(僅適用于已經(jīng)存在的源程序文件)①空回車,打開當(dāng)前目錄下、后綴為.C的所有文件的文件名窗口。②用上、下、左、右方向鍵,將光帶定位于所需的文件名上。③按回車鍵。
(3)常用編輯操作在編輯源程序過程中,隨時(shí)都可以按F2鍵(或File|Save),將當(dāng)前編輯的文件存盤,然后繼續(xù)編輯。這是一個(gè)良好的習(xí)慣!關(guān)于在線幫助:在任何窗口(或狀態(tài))下,按F1鍵激活活動(dòng)窗口(或狀態(tài))的在線幫助:.下一頁──PageDown,返回上一頁──PageUp.關(guān)閉在線幫助、返回原窗口(或狀態(tài))──Esc.返回前一個(gè)在線幫助屏──Alt+F1(無論在線幫助是否被激活).查詢庫(kù)函數(shù)的在線幫助信息──^F1:將光標(biāo)移到需要查詢函數(shù)名的首字符上,然后鍵入^F1,即可獲得該庫(kù)函數(shù)的在線幫助信息。注:為簡(jiǎn)化描述,用“^”代表“Ctrl”鍵。^Fn就是Ctrl+Fn,下同。[Return]
4.編譯、連接──單個(gè)源程序文件
選擇并執(zhí)行Compile|MakeEXEFile項(xiàng)(快捷鍵:F9),則TC將自動(dòng)完成對(duì)當(dāng)前正在編輯的源程序文件的編譯、連接,并生成可執(zhí)行文件。如果源程序有語法錯(cuò)誤,系統(tǒng)將在屏幕中央的“Compiling”(編譯)窗口底端提示“Error:Pressanykey”(錯(cuò)誤:按任意鍵)。此時(shí),按空格鍵,屏幕下端的“Message”(消息)窗口被激活,顯示出錯(cuò)(或警告)信息,光帶停在第一條消息上。這時(shí)“Edit”(編輯)窗口中也有一條光帶,它總是停在編譯錯(cuò)誤在源代碼中的相應(yīng)位置。注意:當(dāng)用上、下鍵移動(dòng)消息窗口中的光帶時(shí),編輯窗口中的光帶也隨之移動(dòng),始終跟蹤源代碼中的錯(cuò)誤位置![Return]
5.運(yùn)行與查看結(jié)果
(1)運(yùn)行當(dāng)前正在編輯的源程序文件選擇并執(zhí)行Run|Run項(xiàng)(快捷鍵:^F9),程序運(yùn)行結(jié)束后,仍返回到編輯窗口。當(dāng)你認(rèn)為自己的源程序不會(huì)有編譯、連接錯(cuò)誤時(shí),也可直接運(yùn)行(即跳過對(duì)源程序的編譯、連接步驟)。這時(shí),TC將一次完成從編譯、連接到運(yùn)行的全過程。(2)查看運(yùn)行結(jié)果選擇并執(zhí)行Run|UserScreen項(xiàng)(快捷鍵:Alt+F5)。查看完畢后,按任一鍵返回編輯窗口。如果發(fā)現(xiàn)邏輯錯(cuò)誤,則可在返回編輯窗口后,進(jìn)行修改;然后再重新編譯、連接、運(yùn)行,直至正確為止。[Return]
6.編輯下一個(gè)新的源程序
選擇并執(zhí)行File|New項(xiàng)即可。如果屏幕提示如下確認(rèn)信息:
NONAME.Cnotsaved.Save?(Y/N)如果需要保存當(dāng)前正在編輯的源程序,則鍵入“Y”,進(jìn)入下一步操作;否則,鍵入“N”(不保存),跳轉(zhuǎn)到(2)。(1)系統(tǒng)提示換名:
<d:><path>\NONAME.C直接輸入你給源程序文件起的名字即可。(2)系統(tǒng)給出一個(gè)空白的編輯窗口,可以開始編輯下一個(gè)新的源程序。[Return]2.1算法的概念為解決一個(gè)問題而采取的方法,就稱為“算法”。2.2簡(jiǎn)單算法的舉例:例1:求12345。
12345
1000。2.3算法的特征
(1)有窮性 (2)確定性 (3)有零個(gè)或多個(gè)輸入 (4)有一個(gè)或多個(gè)輸出 (5)有效性2.4怎樣表示一個(gè)算法用自然語言表示算法、用流程圖表示算法、用N—S流程圖表示算法2.4.1用自然語言表示算法例2.5對(duì)一個(gè)大于或等于3的正整數(shù),判斷它是不是素?cái)?shù)?所謂素?cái)?shù),是指除了1和該數(shù)本身之外,不能被其他任何整數(shù)整除的數(shù)。判斷一個(gè)數(shù)N是否為素?cái)?shù),將N作為被除數(shù),將2到(N-1)G各個(gè)整數(shù)輪流作為除數(shù),如果都不能被整除,則N為素?cái)?shù)。算法如下:①:輸入N的值②:2I(I作為除數(shù))③:N被I除,得余數(shù)R④如果R=0,表示N能被I整除,則打印N”不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行⑤⑤I+1I⑥如果I≤N-1,返回③;否則打印N”是素?cái)?shù)”,然后結(jié)束。注意:實(shí)際n2n/2甚至缺點(diǎn):文字冗長(zhǎng),易出現(xiàn)“歧義性”,語言不太嚴(yán)格,難判斷。2.4.2用流程圖表示算法例1:當(dāng)X≥0時(shí),輸出他本身X,否則輸出-X。X≥0?打印X打印-XYN例2:求5!
例3:判斷素?cái)?shù)優(yōu)缺點(diǎn):直觀形象、清楚。但占用篇幅較多,復(fù)雜時(shí)費(fèi)時(shí)又不方便。開始1t2it×iti+1ii>5結(jié)束ny開始輸入N2iN/2的余數(shù)
rr=0?i+1ii>打印n“是素?cái)?shù)結(jié)束打印n“不是素?cái)?shù)”nyyn2.4.3用N—S流程圖表示算法一個(gè)算法通常有三種結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)1、順序結(jié)構(gòu):2、選擇結(jié)構(gòu):3、循環(huán)結(jié)構(gòu):(1)當(dāng)型循環(huán)結(jié)構(gòu):(2)直到型循環(huán)結(jié)構(gòu):ABP成立不成立AB當(dāng)P1成立
AA直到p1成立例1:求5!例2:將50名學(xué)生成績(jī)高于80分的
學(xué)號(hào)和成績(jī)打印出來。1t2it×iti+1i直到i>5打印t1i輸入ni,cjii+1I直到i>501I
cji80是否輸出ni,cjii+1i直到i>50例3:求1-+-+??????+-例4:求素?cái)?shù)-1sum2d1sign(-1)×signsignsign×termSum+term
sumd+1d直到d>100打印sum輸入n0w2iN/i的余數(shù)RR=0是否1wi+1i直到i>或w0w=0是否輸出n是素?cái)?shù)輸出n不是素?cái)?shù)2.4.4用偽代碼表示算法2.4.5用計(jì)算機(jī)語言表示算法求5!Main(){inti,t;t=1;i=2;while(I<=5){t=t*i; i=i+1; }Printf(“%d”,t);}2.5結(jié)構(gòu)化程序設(shè)計(jì)方法
用三種基本結(jié)構(gòu)組成的程序必然是結(jié)構(gòu)化的程序。這種程序便于編寫、閱讀、修改和維護(hù)。具體說,采用以下方法保證得到結(jié)構(gòu)化的程序。1、自頂向下;2、逐步細(xì)化;3、模塊化設(shè)計(jì);4、結(jié)構(gòu)化編碼3.1程序設(shè)計(jì)概述一個(gè)程序應(yīng)包括對(duì)數(shù)據(jù)的描述和對(duì)數(shù)據(jù)處理的描述。
對(duì)數(shù)據(jù)的描述,即數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)學(xué)科的核心課程之一,有許多專門著作論述,本課程就不再贅述。
在C語言中,系統(tǒng)提供的數(shù)據(jù)結(jié)構(gòu),是以數(shù)據(jù)類型的形式出現(xiàn)的。
基本類型數(shù)據(jù)類型
構(gòu)造類型
指針類型空類型
[Return]整形字符型實(shí)型(浮點(diǎn)型)——單精度型、雙精度型枚舉類型數(shù)組類型結(jié)構(gòu)體類型共用體類型3.2常量和變量3.2.1常量
1.常量的概念
在程序運(yùn)行過程中,其值不能被改變的量稱為常量。
2.常量的分類
(1)整型常量:12、0、-3(2)實(shí)型常量:4.5、-1.456(3)字符常量:‘a(chǎn)’、’g’、’h’(4)符號(hào)常量:#definePRICE30
常量的類型,可通過書寫形式來判別。3.2.2變量1.變量的概念在程序運(yùn)行過程中,其值可以被改變的量稱為變量。2.變量的兩個(gè)要素#definePRICE30Main(){intnum,total;Num=10;Total=num*PRICE;Print(“total=%d”,total);}(1)變量名。每個(gè)變量都必須有一個(gè)名字──變量名。(2)變量值。變量值存儲(chǔ)在內(nèi)存的存儲(chǔ)單元中。在程序中,通過變量名來引用變量的值。3.標(biāo)識(shí)符命名規(guī)則(1)有效字符:只能由字母、數(shù)字和下劃線組成,且以字母或下劃線開頭。(2)有效長(zhǎng)度:隨系統(tǒng)而異,但至少前8?jìng)€(gè)字符有效。如果超長(zhǎng),則超長(zhǎng)部分被舍棄。例如,由于student_name和student_number的前8?jìng)€(gè)字符相同,有的系統(tǒng)認(rèn)為這兩個(gè)變量,是一回事而不加區(qū)別。在TCV2.0中,變量名(標(biāo)識(shí)符)的有效長(zhǎng)度為1~32個(gè)字符,缺省值為32。A10(3)C語言的關(guān)鍵字不能用作變量名。(4)C語言對(duì)英文字母的大小敏感,即同一字母的大小寫,被認(rèn)為是兩個(gè)不同的字符。習(xí)慣上,變量名和函數(shù)名中的英文字母用小寫,以增加可讀性。思考題:在C語言中,變量名total與變量名TOTAL、ToTaL、tOtAl等是同一個(gè)變量嗎?標(biāo)識(shí)符命名的良好習(xí)慣──見名知意:所謂“見名知意”是指,通過變量名就知道變量值的含義。通常應(yīng)選擇能表示數(shù)據(jù)含義的英文單詞(或縮寫)作變量名,或漢語拼音字頭作變量名。例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。4.變量的定義與初始化在C語言中,要求對(duì)所有用到的變量,必須先定義、后使用;且稱在定義變量的同時(shí)進(jìn)行賦初值的操作為變量初始化。(1)變量定義的一般格式數(shù)據(jù)類型變量名[,變量名2……];例如,floatradius,length,area;
(2)變量初始化的一般格式[存儲(chǔ)類型]數(shù)據(jù)類型變量名[=初值][,變量名2[=初值2]……];例如,floatradius=2.5,length,area;intx;x=5;
[Return]3.3整型數(shù)據(jù)3.3.1整型常量1.三種表示形式:整型常量即整常數(shù),在C語言中可用三種形式表示:(1)十進(jìn)制。例如10、36。(2)八進(jìn)制(以數(shù)字0開頭)。例如012。(3)十六進(jìn)制(以數(shù)字0+小寫字母x開頭)。例如0x36。3.3.2整型變量
1.整形數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式:數(shù)值是以補(bǔ)碼形式表示的。正數(shù)是其本身負(fù)數(shù)將該數(shù)的絕對(duì)值的二進(jìn)制形式,按位取反再加1
2.分類根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為4類:(1)基本整型(類型關(guān)鍵字為int)。(2)短整型(類型關(guān)鍵字為short[int])。(3)長(zhǎng)整型(類型關(guān)鍵字為long[int])。(4)無符號(hào)整型。無符號(hào)型又分為無符號(hào)基本整型(unsigned[int])、無符號(hào)短整型(unsignedshort)和無符號(hào)長(zhǎng)整型(unsignedlong)三種,只能用來存儲(chǔ)無符號(hào)整數(shù)。3.占用內(nèi)存字節(jié)數(shù)與值域
上述各類型整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在16位操作系統(tǒng)中,一般用2字節(jié)表示一個(gè)int型變量,且long型(4字節(jié))≥int型(2字節(jié))≥short型(2字節(jié))。顯然,不同類型的整型變量,其值域不同。4.類型匹配規(guī)則類型匹配規(guī)則為:一個(gè)整型常量,可以賦給能容納下其值的整型變量。例如:其值在-215--(215-1)的整型常量,可以賦給int型變量和longint型變量;其值在-231——(231-1)的整型常量,就只能賦給longint型變量。注意:常量無unsigned型。但一個(gè)非負(fù)整型常量,只要它的值不超過相應(yīng)變量的值域(即取值范圍),也可以賦給unsigned型變量。類型其值范圍賦給的變量Int-32768~+32767Int,longintLongint-2147483648~+2147483647如:12345L、0LLongint[Short]int-32768~+32767Int,shotintUnsignedint以補(bǔ)碼形式存儲(chǔ)如:1234u5.不同種類的整形數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算。例:Main() {inta,b,c,d; Unsignedu; A=12;b=-24;u=10; C=a+u;d=b+u; Printf(“a+u=%d,b+u=%d\n”,c,d); }6.整形數(shù)據(jù)的溢出:
Main() {inta,b; a=32767; b=a+1; printf(“%d,%d”,a,b); }[Return]運(yùn)行結(jié)果:a+u=32,b+u=-14運(yùn)行結(jié)果:32767,-327683.4實(shí)型數(shù)據(jù)3.4.1實(shí)型變量
C語言的實(shí)型變量,分為兩種:
(1)單精度型。類型關(guān)鍵字為float,一般占4字節(jié)(32位)、提供7位有效數(shù)字。其值范圍:-3.4×10-38——3.4×1038
(2)雙精度型。類型關(guān)鍵字為double,一般占8?jìng)€(gè)字節(jié)、提供5~16位有效數(shù)字。其值范圍:-1.7×10-308——1.7×10308
(3)長(zhǎng)雙精度型。類型關(guān)鍵字為longdouble,一般占16個(gè)字節(jié)、提供18~19位有效數(shù)字。其值范圍:-1.2×10-4932——1.2×1049323.4.2實(shí)型常量
1.表示形式
實(shí)型常量即實(shí)數(shù),在C語言中又稱浮點(diǎn)數(shù),其值有兩種表達(dá)形式:
(1)十進(jìn)制形式。例如3.14、9.8。(2)指數(shù)形式:<尾數(shù)>E(e)<整型指數(shù)>。例如3.0E+5等。但注意字母E之前必須有數(shù)字,且E后面的指數(shù)必須為整數(shù)。
2.關(guān)于類型
實(shí)型常量分float型和double型。一個(gè)實(shí)型常量,可以賦給一個(gè)實(shí)型變量(float型或double型)。
[Return]3.實(shí)型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式4.實(shí)型數(shù)據(jù)的舍入誤差:main(){floata,b;a=123456.789e5;b=a+20;printf("%f\n%f\n",a,b);}+.5648121
數(shù)符號(hào)小數(shù)部分指數(shù)+.5648121015.64812運(yùn)行結(jié)果:12345678848.00000012345678848.000000a,b的值相同。由于有效數(shù)字是7位。因此應(yīng)避免一個(gè)很大的數(shù)與很小的數(shù)相加、減,否則丟失很小的數(shù)。3.5字符型數(shù)據(jù)3.5.1字符常量1.字符常量的定義:用一對(duì)單引號(hào)括起來的單個(gè)字符,稱為字符常量。例如,‘A’、‘1’、‘+’等。2.轉(zhuǎn)義字符:C語言還允許使用一種特殊形式的字符常量,就是以反斜杠“\”開頭的轉(zhuǎn)義字符。見表注意:如果反斜杠或單引號(hào)本身作為字符常量,必須使用轉(zhuǎn)義字符:‘\\’、‘\’‘。[案例3.1]用轉(zhuǎn)義字符輸出可打印字符和不可打印字符。
/*案例代碼文件名:AL3_2.C*/
/*程序功能:用轉(zhuǎn)義字符輸出可打印字符和不可打印字符*/main()
{printf(“\x4F\x4B\x21\n”);/*等價(jià)于printf(“OK!\n”);*/
printf(“\x15\xAB\n”);
}程序運(yùn)行結(jié)果如下:OK!§?
[程序演示]
字符形式含義ASCII代碼\n換行,將當(dāng)前位置移到下一行開頭10\t水平制表(跳到下一個(gè)TAB位置)9\b退格,將當(dāng)前位置移到前一列8\r回車,將當(dāng)前位置移到本行開頭13\f換頁,將當(dāng)前位置移到下頁開頭12\\反斜杠字符“\”92\'單撇號(hào)字符39\"雙撇號(hào)字符34\ddd1到3位8進(jìn)制數(shù)所代表的字符\xhh1到2位16進(jìn)制數(shù)所代表的字符轉(zhuǎn)義字符及含義
3.5.2字符變量字符變量的類型關(guān)鍵字為char,一般占用1字節(jié)內(nèi)存單元。1.變量值的存儲(chǔ)
字符變量用來存儲(chǔ)字符常量。將一個(gè)字符常量存儲(chǔ)到一個(gè)字符變量中,實(shí)際上是將該字符的ASCII碼值(無符號(hào)整數(shù))存儲(chǔ)到內(nèi)存單元中。例如,charch1,ch2; /*定義兩個(gè)字符變量:ch1,ch2*/ch1=’a’;ch2=’b’;/*給字符變量賦值*/2.特性字符數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是字符的ASCII碼──一個(gè)無符號(hào)整數(shù)((0-255),其形式與整數(shù)的存儲(chǔ)形式一樣(如圖2-4所示),所以C語言允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用。(1)一個(gè)字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出。
(1)一個(gè)字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出。[案例3.2]字符變量的字符形式輸出和整數(shù)形式輸出。
/*案例代碼文件名:AL3_3.C*/
/*程序功能:用字符形式和整數(shù)形式輸出字符變量*/
main()
{charch1,ch2;
ch1='a';ch2='b';printf(“ch1=%c,ch2=%c\n”,ch1,ch2);
printf(“ch1=%d,ch2=%d\n”,ch1,ch2);
}
程序運(yùn)行結(jié)果:ch1=a,ch2=b
ch1=97,ch2=98[程序演示](2)允許對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)就是對(duì)它們的ASCII碼值進(jìn)行算術(shù)運(yùn)算。
[案例3.4]字符數(shù)據(jù)的算術(shù)運(yùn)算。
/*案例代碼文件名:AL3_4.C*/
/*程序功能:字符數(shù)據(jù)的算術(shù)運(yùn)算*/
main()
{charch1,ch2;
ch1=‘a(chǎn)’;ch2=‘B’;/*字母的大小寫轉(zhuǎn)換*/
printf(“ch1=%c,ch2=%c\n”,ch1-32,ch2+32);
/*用字符形式輸出一個(gè)大于256的數(shù)值*/
printf("ch1+200=%d\n",ch1+200);
printf("ch1+200=%c\n",ch1+200);
printf("ch1+256=%d\n",ch1+256);
printf("ch1+256=%c\n",ch1+256);
}程序運(yùn)行結(jié)果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a
[程序演示]3.5.3字符串常量1.字符串常量的概念和字符串長(zhǎng)度字符串常量是用一對(duì)雙引號(hào)括起來的若干字符序列。字符串中字符的個(gè)數(shù)稱為字符串長(zhǎng)度。長(zhǎng)度為0的字符串(即一個(gè)字符都沒有的字符串)稱為空串,表示為“”(一對(duì)緊連的雙引號(hào))。例如,“Howdoyoudo.”、“Goodmorning.”等,都是字符串常量,其長(zhǎng)度分別為14和13(空格也是一個(gè)字符)。
如果反斜杠和雙引號(hào)作為字符串中的有效字符,則必須使用轉(zhuǎn)義字符。例如:(1)C:\msdos\v6.22→"C:\\msdos\\v6.22"
(2)Isay:"Goodbye!"→"Isay:\"Goodbye!\"“2.字符串的存儲(chǔ)C語言規(guī)定:在存儲(chǔ)字符串常量時(shí),由系統(tǒng)在字符串的末尾自動(dòng)加一個(gè)‘\0’作為字符串的結(jié)束標(biāo)志。注意:在源程序中書寫字符串常量時(shí),不必加結(jié)束字符‘\0’,否則畫蛇添足。
如果有一個(gè)字符串為“CHINA”,則它在內(nèi)存中的實(shí)際存儲(chǔ)如下所示:最后一個(gè)字符'\0'是系統(tǒng)自動(dòng)加上的,它占用6字節(jié)而非5字節(jié)內(nèi)存空間。CHINA\0綜上所述,字符常量'A'與字符串常量"A"是兩回事:(1)定界符不同:字符常量使用單引號(hào),而字符串常量使用雙引號(hào);(2)長(zhǎng)度不同:字符常量的長(zhǎng)度固定為1,而字符串常量的長(zhǎng)度,可以是0,也可以是某個(gè)整數(shù);(3)存儲(chǔ)要求不同:字符常量存儲(chǔ)的是字符的ASCII碼值,而字符串常量,除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志’\0’。[Return]3.6算術(shù)運(yùn)算符與算術(shù)表達(dá)式在C語言中,除控制語句和輸入輸出函數(shù)外,其它所有基本操作都作為運(yùn)算符處理。
1.五種基本算術(shù)運(yùn)算符
+、-(減法/取負(fù))、*、/、%(求余數(shù))(1)關(guān)于除法運(yùn)算/C語言規(guī)定:兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如,5/2=2。但出現(xiàn)負(fù)數(shù)時(shí),結(jié)果向零靠攏。例-5/3=-1,7/-3=-2。(2)關(guān)于求余數(shù)運(yùn)算%要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù),否則出錯(cuò)。
2.表達(dá)式和算術(shù)表達(dá)式(1)表達(dá)式的概念用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來的、符合C語言語法規(guī)則的式子,稱為表達(dá)式。
單個(gè)常量、變量或函數(shù),可以看作是表達(dá)式的一種特例。將單個(gè)常量、變量或函數(shù)構(gòu)成的表達(dá)式稱為簡(jiǎn)單表達(dá)式,其它表達(dá)式稱之為復(fù)雜表達(dá)式。(2)算術(shù)表達(dá)式的概念表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符。例如,3+6*9、(x+y)/2-1等,都是算術(shù)表達(dá)式。良好的源程序書寫習(xí)慣:在表達(dá)式中,在雙目運(yùn)算符的左右兩側(cè)各加一個(gè)空格,可增強(qiáng)程序的可讀性。請(qǐng)比較表達(dá)式“(x+y)/2–1”與“(x+y)/2–1”,您認(rèn)為哪個(gè)的可讀性更好一些?3.運(yùn)算符的優(yōu)先級(jí)與結(jié)合性(1)C語言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。所謂結(jié)合性是指,當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是C語言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其它運(yùn)算符都是左結(jié)合性。(2)表達(dá)式求值1)按運(yùn)算符的優(yōu)先級(jí)高低次序執(zhí)行。例如,先乘除后加減。2)如果在一個(gè)運(yùn)算對(duì)象(或稱操作數(shù))兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同,則按C語言規(guī)定的結(jié)合方向(結(jié)合性)進(jìn)行。例如,算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a–b+c”時(shí),變量b先與減號(hào)結(jié)合,執(zhí)行“a-b”;然后再執(zhí)行加c的運(yùn)算。4.數(shù)據(jù)類型轉(zhuǎn)換(1)在C語言中,整型、實(shí)型和字符型數(shù)據(jù)間可以混合運(yùn)算(因?yàn)樽址麛?shù)據(jù)與整型數(shù)據(jù)可以通用)。如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算”的原則,首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類型,然后在同一類型數(shù)據(jù)間進(jìn)行運(yùn)算。轉(zhuǎn)換規(guī)則如下:高doublefloat
long
unsigned
低intchar,short注意:箭頭方向只表示數(shù)據(jù)類型由低向高轉(zhuǎn)換,不要理解為int型先轉(zhuǎn)換成unsigned型,再轉(zhuǎn)換成long型,最后轉(zhuǎn)換成double型。(2)除自動(dòng)轉(zhuǎn)換外,C語言也允許強(qiáng)制轉(zhuǎn)換。數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換的一般格式為:
(要轉(zhuǎn)換成的數(shù)據(jù)類型)(被轉(zhuǎn)換的表達(dá)式)當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡(jiǎn)單表達(dá)式時(shí),外面的一對(duì)圓括號(hào)可以缺省。例如,(double)a(等價(jià)于(double)(a))/*將變量a的值轉(zhuǎn)換成double型*/(int)(x+y) /*將x+y的結(jié)果轉(zhuǎn)換成int型*/(float)5/2(等價(jià)于(float)(5)/2)/*將5轉(zhuǎn)換成實(shí)型,再除以2(=2.5)*/(float)(5/2) /*將5整除2的結(jié)果(2)轉(zhuǎn)換成實(shí)型(2.0)*/注意:強(qiáng)制轉(zhuǎn)換類型得到的是一個(gè)所需類型的中間量,原表達(dá)式類型并不發(fā)生變化。例如,(double)a只是將變量a的值轉(zhuǎn)換成一個(gè)double型的中間量,其數(shù)據(jù)類型并未轉(zhuǎn)換成double型。[Return]3.7賦值運(yùn)算與賦值表達(dá)式1.賦值運(yùn)算賦值符號(hào)“=”就是賦值運(yùn)算符,它的作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量。賦值運(yùn)算符的一般形式為:變量=賦值表達(dá)式
例如,x=5
y=(float)5/2
如果表達(dá)式值的類型,與被賦值變量的類型不一致,但都是數(shù)值型或字符型時(shí),系統(tǒng)自動(dòng)地將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類型,然后再賦值給變量。
思考題:假設(shè)變量num的數(shù)據(jù)類型為float,其值為2.5,則執(zhí)行“num=(int)num”后,num的值等于多少?2.復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個(gè)雙目運(yùn)算符構(gòu)成的。復(fù)合賦值運(yùn)算的一般格式為:變量雙目運(yùn)算符=表達(dá)式└──┬──┘復(fù)合賦值運(yùn)算符它等價(jià)于:變量=變量雙目運(yùn)算符(表達(dá)式)。當(dāng)表達(dá)式為簡(jiǎn)單表達(dá)式時(shí),表達(dá)式外的一對(duì)圓括號(hào)才可缺省,否則可能出錯(cuò)。例如,x+=3 /*等價(jià)于x=x+3*/y*=x+6 /*等價(jià)于y=y*(x+6),而不是y=y*x+6*/X%=y+3/*等價(jià)于x=x%(y+3),而不是x=x%y+3*/C語言規(guī)定的10種復(fù)合賦值運(yùn)算符如下:+=,-=,*=,/=,%=; /*復(fù)合算術(shù)運(yùn)算符(5個(gè))*/&=,^=,|=,<<=,>>=; /*復(fù)合位運(yùn)算符(5個(gè))*/3.賦值表達(dá)式由賦值運(yùn)算符或復(fù)合賦值運(yùn)算符,將一個(gè)變量和一個(gè)表達(dá)式連接起來的表達(dá)式,稱為賦值表達(dá)式。(1)一般格式變量(復(fù)合)賦值運(yùn)算符表達(dá)式(2)賦值表達(dá)式的值任何一個(gè)表達(dá)式都有一個(gè)值,賦值表達(dá)式也不例外。被賦值變量的值,就是賦值表達(dá)式的值。例如,“a=5”這個(gè)賦值表達(dá)式,變量a的值“5”就是它的值。A=(b=5)b=5;a=b;(自右向左結(jié)合)A=b=c=5a,b,c值均為5。Printf(“%d”,a=b);賦值表達(dá)式可以出現(xiàn)在其他語句中。(輸出、循環(huán)語句等。)[Return]3.8C語言特有的運(yùn)算和運(yùn)算符3.8.1自增(++)、自減(--)運(yùn)算
1.作用
自增運(yùn)算使單個(gè)變量的值增1,自減運(yùn)算使單個(gè)變量的值減1。
2.用法與運(yùn)算規(guī)則
自增、自減運(yùn)算符都有兩種用法:
(1)前置運(yùn)算──運(yùn)算符放在變量之前:++變量、--變量++i,--i,先使變量的值增(或減)1,然后再以變化后的值參與其它運(yùn)算,即先增減、后運(yùn)算。
(2)后置運(yùn)算──運(yùn)算符放在變量之后:變量++、變量--.i++,i--.變量先參與其它運(yùn)算,然后再使變量的值增(或減)1,即先運(yùn)算、后增減。
[案例3.5]自增、自減運(yùn)算符的用法與運(yùn)算規(guī)則示例。/*案例代碼文件名:AL2_4.C*//*程序功能:自增、自減運(yùn)算符的用法與運(yùn)算規(guī)則示例*/main(){intx=6,y;printf("x=%d\n",x); /*輸出x的初值*/y=++x; /*前置運(yùn)算*/printf("y=++x:x=%d,y=%d\n",x,y);y=x--; /*后置運(yùn)算*/printf("y=x--:x=%d,y=%d\n",x,y);}程序運(yùn)行結(jié)果:x=6y=++x:x=7,y=7y=x--:x=6,y=7 [程序演示]思考題:如果將案例“y=++x;”語句中的前置運(yùn)算改為后置(y=x++;),“y=x--;”語句中的后置運(yùn)算改為前置(y=--x;),程序運(yùn)行結(jié)果會(huì)如何?3.說明(1)自增、自減運(yùn)算,常用于循環(huán)語句中,使循環(huán)控制變量加(或減)1,以及指針變量中,使指針指向下(或上)一個(gè)地址。(2)自增、自減運(yùn)算符,不能用于常量和表達(dá)式。例如,5++、--(a+b)等都是非法的。(3)++、--的結(jié)合方向是自右至左。(4)在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好避免這種用法。如:Print(“%d,%d”,i,i++);最好寫成j=i++;Printf(“%d,%d”,j,i);3.8.2逗號(hào)運(yùn)算(,)及其表達(dá)式C語言提供一種用逗號(hào)運(yùn)算符“,”連接起來的式子,稱為逗號(hào)表達(dá)式。逗號(hào)運(yùn)算符又稱順序求值運(yùn)算符。1.一般形式表達(dá)式1,表達(dá)式2,……,表達(dá)式n2.求解過程自左至右,依次計(jì)算各表達(dá)式的值,“表達(dá)式n”的值即為整個(gè)逗號(hào)表達(dá)式的值。例如,逗號(hào)表達(dá)式“a=3*5,a*4”的值=60:先求解a=3*5,得a=15;再求a*4=60,所以逗號(hào)表達(dá)式的值=60。又例如,逗號(hào)表達(dá)式“(a=3*5,a*4),a+5”的值=20:先求解a=3*5,得a=15;再求a*4=60;最后求解a+5=20,所以逗號(hào)表達(dá)式的值=20。注意:并不是任何地方出現(xiàn)的逗號(hào),都是逗號(hào)運(yùn)算符。很多情況下,逗號(hào)僅用作分隔符。[Return]總結(jié):C語言的數(shù)據(jù)類型整型、實(shí)型、字符型、字符串型(其無變量)。
注:各數(shù)據(jù)類型的值域及在內(nèi)存的存儲(chǔ)形式。賦值語句和賦值表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式(+,-,*,/,++,--)注:其優(yōu)先級(jí)別及結(jié)合性。逗號(hào)運(yùn)算符和逗號(hào)運(yùn)算表達(dá)式(表達(dá)式1,表達(dá)式2,……表達(dá)式n)作業(yè):P663.5、3.6、3.7、3.8、3.9、
3.10、閱讀程序:1、寫出程序的運(yùn)行結(jié)果。#include<stdio.h>Main(){shortinta=32767,b;b=a+1;Printf(“a=%d,b=%d\n”,a,b);}結(jié)果:a=32767,b=-32768b的補(bǔ)碼=a的補(bǔ)碼+1a的補(bǔ)碼=0111111111111111b的補(bǔ)碼=a的補(bǔ)碼+1=1000000000000000B的原值=-(1111111111111111+1)=-(1000000000000000)=-32768。本題考查的是整數(shù)的內(nèi)存存儲(chǔ)方式。2、寫出下列程序的功能。#include<stdio.h>main(){doubled;printf("輸入一個(gè)double數(shù):");scanf("%lf",&d);d=d*100;d=d+0.5;d=(int)d;d=d/100;printf("保留兩位小數(shù):%g\n",d);}輸入一個(gè)double類型的數(shù),使該數(shù)保留小數(shù)點(diǎn)后兩位,對(duì)第3位小數(shù)進(jìn)行四舍五入運(yùn)算。3、寫出下列程序的功能#include<stdio.h>main(){intn,b1,b2,b3,b4;printf("輸入一個(gè)小于10000的正整數(shù):");scanf("%d",&n);b1=n%10;n=n/10;b2=n%10;n=n/10;b3=n%10;n=n/10;b4=n%10;printf("各位上的數(shù)字分別為:%d%d%d%d\n",b4,b3,b2,b1);}輸入一個(gè)小于10000的正整數(shù),求各位上的數(shù)字4、寫出下列程序的功能#include<stdio.h>main(){charc1='c',c2='h',c3='i',c4='n',c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密碼是%c%c%c%c%c",c1,c2,c3,c4,c5);}將China譯成密碼Glmre5、分析程序的運(yùn)行結(jié)果:#include<stdio.h>#include<math.h>main(){charc1='a';inta=1;intc;c=c1+a;printf("%c\n",c1);printf("%d\n",a);printf("%d",c);}a1984.1C語句概述
C語句可以分5類控制語句,完成一定的控制功能有9種。If()~else~6)ContinueBreak7)For()~Switch8)While()~Goto9)Do~while()Return如:if(x>y)z=x;elsez=y;函數(shù)調(diào)用語句,printf(“thisisacstatement.”);表達(dá)式語句:a=3;i++;x+y;空語句:;有時(shí)做轉(zhuǎn)向點(diǎn)或循環(huán)體或什么也不做??梢杂脅}把一些語句括起來成為復(fù)合語句。
{z=x+y;t=z/100;Printf(“%f”,t);}例:已知圓的半徑,求圓的面積、周長(zhǎng)。開始輸入半徑rS=3.14*r*rL=2*3.14*r輸出s、l結(jié)束main(){floatr,s,l;}scanf("%f",&r);s=3.14*r*r;l=2*3.14*r;Printf("圓的面積=%f,圓的周長(zhǎng)=%f",s,l);4.2賦值語句
和數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)
4.2.1賦值語句“=”是一個(gè)運(yùn)算符就可以有表達(dá)式.√If((a=b)>0)t=a;×If((a=b);>0)t=a;4.2.2數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)輸入、輸出的概念C語言不提供輸入輸出語句,輸入輸出的操作是由函數(shù)來實(shí)現(xiàn)的。C語言函數(shù)庫(kù)中有一批“標(biāo)準(zhǔn)輸入輸出函數(shù)”putchar,getchar,printf,scanf,puts,gets等。在使用C語言庫(kù)函數(shù)時(shí),要用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中。使用標(biāo)準(zhǔn)輸入輸出函數(shù)時(shí),要用到“stdio.h”文件。文件開頭要寫
#include<stdio.h>
或#include“stdio.h”4.3單個(gè)字符輸入輸出——getchar()和putchar()函數(shù)4.3.1單個(gè)字符的輸出──putchar()函數(shù)[案例4.3.1]putchar()函數(shù)的格式和使用方法。/*案例代碼文件名:AL4_3_1.C*//*功能:說明putchar()函數(shù)的格式和使用方法。*/#include"stdio.h" /*編譯預(yù)處理命令:文件包含*/main(){charch1='N',ch2='E',ch3='W';putchar(ch1);putchar(ch2);putchar(ch3); /*輸出*/putchar('\n');putchar(ch1);putchar('\n'); /*輸出ch1的值,并換行*/putchar('E');putchar('\n'); /*輸出字符'E',并換行*/putchar(ch3);putchar('\n');} [程序演示]
程序運(yùn)行結(jié)果如下:
NEWNEW1.putchar()函數(shù)的格式:
putchar(ch);
其中ch可以是一個(gè)字符變量或常量,也可以是一個(gè)轉(zhuǎn)義字符。
2.putchar()函數(shù)的作用:向終端輸出一個(gè)字符。(1)putchar()函數(shù)只能用于單個(gè)字符的輸出,且一次只能輸出一個(gè)字符。另外,從功能角度來看,printf()函數(shù)可以完全代替putchar()函數(shù)。(2)在程序中使用putchar()函數(shù),務(wù)必牢記:在程序(或文件)的開頭加上編譯預(yù)處理命令(也稱包含命令),即:
#include"stdio.h"
表示要使用的函數(shù),包含在標(biāo)準(zhǔn)輸入輸出(stdio)頭文件(.h)中。4.3.2單個(gè)字符的輸入──getchar()函數(shù)[案例4.3.2]說明getchar()函數(shù)的格式和作用。/*案例代碼文件名:AL4_3_2.C*//*功能:說明getchar()函數(shù)的格式和作用。*/#include"stdio.h" /*文件包含*/main(){charch;printf("Pleaseinputtwocharacter:");ch=getchar(); /*輸入1個(gè)字符并賦給ch*/putchar(ch);putchar('\n');putchar(getchar()); /*輸入一個(gè)字符并輸出*/putchar('\n');} [程序演示]
程序運(yùn)行情況如下:
Pleaseinputtwocharacters:ab↙ab1.getchar()函數(shù)的格式:getchar();2.getchar()函數(shù)的作用:從系統(tǒng)隱含的輸入設(shè)備(如鍵盤)輸入一個(gè)字符。另外,從功能角度來看,scanf()函數(shù)可以完全代替getchar()函數(shù)。(1)getchar()函數(shù)只能用于單個(gè)字符的輸入,一次輸入一個(gè)字符。(2)程序中要使用getchar()函數(shù),必須在程序(或文件)的開頭加上編譯預(yù)處理命令:
#include"stdio.h“[Return]4.4格式化輸出——printf()函數(shù)printf()函數(shù)的作用:向計(jì)算機(jī)系統(tǒng)默認(rèn)的輸出設(shè)備(一般指終端或顯示器)輸出一個(gè)或多個(gè)任意類型的數(shù)據(jù)。
4.4.1printf()函數(shù)的一般格式
[案例4.4.1]已知圓半徑radius=1.5,求圓周長(zhǎng)和圓面積。
/*案例代碼文件名:AL4_4_1.C。*/
main()
{floatradius,length,area,pi=3.1415926;
radius=1.5;
length=2*pi*radius; /*求圓周長(zhǎng)*/
area=pi*radius*radius; /*求圓面積*/
printf(“radius=%f\n”,radius); /*輸出圓半徑*/
printf(“l(fā)ength=%7.2f,area=%7.2f\n”,length,area); /*輸出圓周長(zhǎng)、面積*/
}
[程序演示]
程序運(yùn)行結(jié)果如下:
radius=1.500000length=9.42,area=7.07 printf()函數(shù)的一般格式如下:printf(“格式控制"[,輸出項(xiàng)表]);1.格式控制:“格式字符串”也稱“轉(zhuǎn)換控制字符串”,可以包含三種字符:(1)格式指示符。格式指示符的一般形式如下:%[標(biāo)志][寬度][.精度][類型]
(2)轉(zhuǎn)義字符(3)普通字符──除格式指示符和轉(zhuǎn)義字符之外的其它字符。格式字符串中的普通字符,原樣輸出。2.輸出項(xiàng)表輸出項(xiàng)表是可選的。如果要輸出的數(shù)據(jù)不止1個(gè),相鄰2個(gè)之間用逗號(hào)分開。下面的printf()函數(shù)都是合法的:(1)printf("Iamastudent.\n"); (2)printf("%d",3+2);
(3)printf("a=%fb=%5d\n",a,a+3); 必須強(qiáng)調(diào):“格式字符串”中的格式指示符,必須與“輸出項(xiàng)表”中、輸出項(xiàng)的數(shù)據(jù)類型一致,否則會(huì)引起輸出錯(cuò)誤。
printf格式字符格式字符說明d,I以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號(hào))0以八進(jìn)制無符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符0)X,x以十六進(jìn)制無符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符0X),用X則輸出十六進(jìn)制的a~f時(shí)以小寫形式輸出,用X時(shí),則以大寫字母輸出。f以無符號(hào)十進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個(gè)字符s輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)E,e以指數(shù)形式輸出實(shí)數(shù),用e時(shí)指數(shù)以“e”表示如1.2e+02,用E時(shí)指數(shù)以“E”表示如1.2E+03G,g選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0,用G時(shí),若以指數(shù)形式輸出,則指數(shù)以大寫表示Printf的附加格式說明字符字符說明字母l用于長(zhǎng)整形整數(shù),可加在格式符d、0、x、u前面m(代表一個(gè)正整數(shù))數(shù)據(jù)最小寬度n(代表一個(gè)正整數(shù))對(duì)實(shí)數(shù),表示輸出n位小數(shù),對(duì)字符串,表示截取的字符個(gè)數(shù)-輸出的數(shù)字或字符在域內(nèi)向左靠4.4.2格式指示符
輸出不同類型的數(shù)據(jù),要使用不同的類型轉(zhuǎn)換字符。
1.類型轉(zhuǎn)換字符d──以帶符號(hào)的十進(jìn)制整數(shù)形式輸出。
[案例3.2]類型轉(zhuǎn)換字符d的使用。/*案例代碼文件名:AL4_4_2.C。*/main(){intnum1=123;longnum2=123456;/*用3種不同格式,輸出int型數(shù)據(jù)num1的值*/printf("num1=%d,num1=%5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《新能源材料課程設(shè)計(jì)》教學(xué)大綱
- 玉溪師范學(xué)院《商務(wù)談判與溝通》2022-2023學(xué)年第一學(xué)期期末試卷
- 波譜儀器賬務(wù)處理實(shí)例-記賬實(shí)操
- 下冊(cè)語文第23課知識(shí)課件
- 2023年液壓氣壓剎車系統(tǒng)項(xiàng)目評(píng)估分析報(bào)告
- 2024年精細(xì)藥液過濾器項(xiàng)目評(píng)估分析報(bào)告
- 2024年聚碳酸酯(PC)及合金項(xiàng)目成效分析報(bào)告
- 2019粵教版 高中美術(shù) 必修1 美術(shù)鑒賞《第三單元 中國(guó)近現(xiàn)代美術(shù)鑒賞》大單元整體教學(xué)設(shè)計(jì)2020課標(biāo)
- 叉車貨物裝卸合同范本
- 餐飲帶產(chǎn)品合伙協(xié)議書
- 大學(xué)美育(同濟(jì)大學(xué)版)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 中國(guó)急性缺血性卒中診治指南(2023版)
- 勞動(dòng)法律學(xué)習(xí)試題
- 中考英語過去將來時(shí)趣味講解動(dòng)態(tài)課件(43張課件)
- 過敏性休克完整版本
- 應(yīng)急第一響應(yīng)人理論考試試卷(含答案)
- DZ∕T 0213-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 石灰?guī)r、水泥配料類(正式版)
- 口腔診所器材清單
- 產(chǎn)品合格證模板
- 天然基礎(chǔ)基坑3M深土方開挖專項(xiàng)方案
- 氧氣吸入操作常見并發(fā)癥預(yù)防及處理
評(píng)論
0/150
提交評(píng)論