版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第1單元C語言基礎(chǔ)知識蘇州工業(yè)職業(yè)技術(shù)學(xué)院1.2任務(wù)1-1使用VisualC++6.0運行C語言程序1.1C語言概述1.4任務(wù)1-2設(shè)計一個溫度轉(zhuǎn)換器1.3C語言程序設(shè)計基礎(chǔ)1.1C語言概述C語言是一種通用、靈活、結(jié)構(gòu)化和使用普遍的計算機高級語言,既可作為系統(tǒng)軟件的描述語言,也可用來開發(fā)應(yīng)用程序,特別適合進(jìn)行系統(tǒng)程序設(shè)計和對硬件進(jìn)行操作的場合。
C語言簡潔、緊湊,使用方便、靈活
運算符豐富,表達(dá)能力強
結(jié)構(gòu)化好
C語言是“中級”語言
C語言可移植性好,目標(biāo)代碼質(zhì)量高、程序執(zhí)行效率高1.1.1C語言的特點1.1.2C語言的發(fā)展概況許多專家學(xué)者和硬件廠商聯(lián)合組成了C語言標(biāo)準(zhǔn)委員會(ANSI),對C語言進(jìn)行了標(biāo)準(zhǔn)化,產(chǎn)生了“ANSIC”
;推出“ANSIC”貝爾實驗室的DennisRichie等人在B語言基礎(chǔ)上開發(fā)出C語言C語言出現(xiàn)采用C語法的JAVA流行1999年,標(biāo)準(zhǔn)C語言的新版本發(fā)布,即ISO/IEC9899:1999,通常稱之為C99。C99發(fā)布2011年,標(biāo)準(zhǔn)C語言的另一個重要版本發(fā)布,即ISO/IEC9899:2011,通常稱之為C11。2022年,ISO發(fā)布了新的C語言標(biāo)準(zhǔn),即ISO/IEC9899:2023,簡稱C23。標(biāo)準(zhǔn)C版本20世紀(jì)70年代20世紀(jì)80年代20世紀(jì)90年代21世紀(jì)1.1.3一個簡單的C語言程序【例1-1】一個簡單的C語言程序。1.#include<stdio.h>//頭文件,標(biāo)準(zhǔn)輸入輸出函數(shù)庫2.voidmain()//主函數(shù)3.{
4.printf(“C語言學(xué)習(xí)從這里啟程!\n”);//調(diào)用輸出函數(shù)5.}
1.1.3一個簡單的C語言程序1.C程序的最簡單結(jié)構(gòu)voidmain()//主函數(shù){……//函數(shù)體}
函數(shù)是C程序的基本單位,主函數(shù)main()是一個特殊的函數(shù),程序的執(zhí)行總是從主函數(shù)開始,并且也結(jié)束于主函數(shù),不論main函數(shù)在程序中位置如何,它都是程序的入口。完整的C源程序有且僅有一個main函數(shù),也可以包含一個main函數(shù)和若干個其他函數(shù)。void表示該函數(shù)沒有返回值,絕大多數(shù)情況下主函數(shù)都是不需要返回值的。函數(shù)體用一對花括號括起來,里面至少有一條語句,即至少包含一個分號。1.1.3一個簡單的C語言程序2.頭文件#include<stdio.h>
大部分C語言程序的開始都有這一行。這是一個頭文件(.h)聲明,不占內(nèi)存,在本例中,是為了在編譯的時候可以識別printf()函數(shù)。頭文件有#include<stdio.h>和#include“stdio.h”兩種聲明方式,尖括號表示到環(huán)境指定的目錄去引用,而雙引號表示首先在當(dāng)前目錄查找,然后在到環(huán)境指定的目錄去引用。1.1.3一個簡單的C語言程序3.C語句printf("C語言學(xué)習(xí)從這里啟程!\n");printf()是C語言的輸出函數(shù),其功能是顯示信息,“\n”為轉(zhuǎn)義字符,表示換行。4.注釋//……
注釋的目的是提供代碼的解釋和說明,以幫助理解程序的功能。注釋不參加編譯,也不會出現(xiàn)在目標(biāo)程序中。一個好的,有價值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。//表示行注釋,/*……*/表示塊注釋。1.1.3一個簡單的C語言程序5.書寫格式C程序書寫格式自由,但從書寫清晰,便于閱讀、理解、維護(hù)的角度出發(fā),在書寫時應(yīng)遵循以下規(guī)則:①一個說明或一個語句占一行。②用{}括起來的部分,通常表示了程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語句的第一個字母對齊,并單獨占一行。③低一層次的語句或說明可比高一層次的語句或說明縮進(jìn)若干格后書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格?!咀⒁狻緾語言默認(rèn)在英文、小寫、半角的方式下編寫程序。這點尤其要注意,否則容易在編譯時出現(xiàn)語法錯誤。1.2任務(wù)1-1使用VisualC++6.0運行C語言程序1.1C語言概述1.4任務(wù)1-2設(shè)計一個溫度轉(zhuǎn)換器1.3C語言程序設(shè)計基礎(chǔ)1.2.1任務(wù)要求使用VisualC++6.0實現(xiàn)簡單小程序的調(diào)試、運行。熟悉VisualC++6.0界面;C程序文件的正確建立、編譯及調(diào)試;仿寫簡單C程序;查看C程序調(diào)試過程中各種信息。1.2.2知識鏈接C語言的標(biāo)準(zhǔn)已被大多數(shù)的C和C++開發(fā)環(huán)境兼容,本課程選用VisualC++6.0。VisualC++是Microsoft公司推出的功能最強大、也是最復(fù)雜的程序設(shè)計工具之一。它最常用的版本為VisualC++6.0。VisualC++6.0集程序的代碼編輯、編譯、連接、調(diào)試等功能于一體,為編程人員提供了一個既完整又方便的開發(fā)環(huán)境。VisualC++6.0是C++的版本,而C++語言是在C語言的基礎(chǔ)上擴展而成的,所以C程序也能在該環(huán)境下運行。1.2.3任務(wù)實施步驟一:啟動VisualC++6.0
雙擊桌面快捷方式。主窗口主要由標(biāo)題欄、菜單欄、工具欄,工作區(qū)、編輯區(qū)和輸出窗口等部分構(gòu)成。1.2.3任務(wù)實施步驟二:新建工程單擊菜單“文件\新建(File\New)”,在“工程(Project)”選項卡下選擇工程類型(如“Win32ConsoleApplication”),選擇要存放的位置(如:E:\C),表示建立的源程序文件及其工程等文件放在E:\C目錄下,輸入工程名(如:test),單擊“確定(OK)”按鈕。
然后跳入下一界面,選擇一個“空工程(Anemptyproject)”,點擊下方的“完成(Finish)”按鈕。接著進(jìn)入到“新建工程信息(NewProjectInformation)”窗口,直接點擊“確定(OK)”即可。1.2.3任務(wù)實施步驟三:新建文件單擊菜單“文件\新建(File\New)”,在“文件(Files)”選項卡下選擇“C++SourceFile”,自動默認(rèn)剛才建立的工程路徑,表示建立的源程序文件在剛才新建的工程下。也可以跳過步驟二,直接新建文件,這里就可以選擇要存放的位置。然后輸入源程序文件名(如:ex1.c),單擊“確定(OK)”按鈕?!咀⒁狻縑isualC++6.0默認(rèn)是C++語言源程序文件(擴展名是.cpp),C語言源程序文件在C++環(huán)境中可以完全兼容,但C++語法檢查比C更為嚴(yán)格,因此某些語法在C++環(huán)境中可能得到編譯警告,建議輸入文件擴展名.c。1.2.3任務(wù)實施步驟四:編輯文件1.#include<stdio.h>//函數(shù)庫頭文件,包含通用輸入輸出函數(shù)2.main()//主函數(shù)3.{
4.printf(“ThisisaCprogram.\n”);//調(diào)用格式化輸出函數(shù)5.}
完成輸入后,單擊“保存(Save)”按鈕或快捷鍵“Ctrl+S”,保存文件,狀態(tài)行顯示光標(biāo)的位置與編輯狀態(tài)。1.2.3任務(wù)實施步驟五:編譯文件
完成輸入后,單擊“保存(Save)”按鈕或快捷鍵“Ctrl+S”,保存文件,狀態(tài)行顯示光標(biāo)的位置與編輯狀態(tài)。
單擊主窗口工具欄中的“Compile”按鈕或者使用快捷鍵“Ctrl+F7”,編譯源程序ex1.c,輸出窗口顯示0錯誤“0error(s),0warning(s)”。
“Compile”只編譯當(dāng)前文件而不調(diào)用鏈接器或其它工具,把源程序翻譯成機器可以識別的二進(jìn)制文件,即目標(biāo)代碼文件,其擴展名為.obj。輸出窗口將顯示編譯過程檢查出的語法錯誤信息,語法錯誤分為error(錯誤)和warning(警告)兩類,error是編譯器遇到了致命錯誤,無法繼續(xù)進(jìn)行編譯,必須修改。warning是C語言編譯器找到了一個可能非法的位置,但不影響編譯,程序還能運行,有可能運行出錯,也可能不影響。error必須修改,而部分warning可以不做修改。若顯示有錯誤,可在輸出窗口往上滾動光標(biāo),在錯誤信息處雙擊,會在編輯區(qū)窗口右側(cè)出現(xiàn)一個箭頭,指示出錯誤代碼的位置,根據(jù)提示修改錯誤,直到編譯顯示“0錯誤(0error(s))”為止。
1.2.3任務(wù)實施步驟六:鏈接文件
完成輸入后,單擊“保存(Save)”按鈕或快捷鍵“Ctrl+S”,保存文件,狀態(tài)行顯示光標(biāo)的位置與編輯狀態(tài)。單擊主窗口工具欄中的“Build”按鈕或者使用快捷鍵F7,鏈接程序中調(diào)用的類庫,產(chǎn)生可執(zhí)行文件ex1.exe。
【注意】觀察輸出窗口信息,如果有語法錯誤,根據(jù)提示的錯誤性質(zhì)、出現(xiàn)位置和原因進(jìn)行修改,并重新編譯鏈接,直到通過。
1.2.3任務(wù)實施步驟七:執(zhí)行文件
完成輸入后,單擊“保存(Save)”按鈕或快捷鍵“Ctrl+S”,保存文件,狀態(tài)行顯示光標(biāo)的位置與編輯狀態(tài)。單擊主窗口工具欄中的“BuildExecute”按鈕或者使用快捷鍵Ctrl+F5,執(zhí)行程序ex1.exe。
【說明】在結(jié)果顯示窗口出現(xiàn)的“Pressanykeytocontinue”是系統(tǒng)自動加上的,表示程序運行后按任意鍵可以返回VisualC++6.0環(huán)境中,直接運行可執(zhí)行文件(如ex1.exe)時,結(jié)果會一閃而過,若要輸出結(jié)果停留需在程序中添加語句,通常使用getch()函數(shù),其作用是接受一個任意鍵的輸入,不用按回車就返回,常用于暫停程序方便調(diào)試和查看。在直接運行可執(zhí)行文件(*.exe)時,getch()函數(shù)作用比較明顯。1.2任務(wù)1-1使用VisualC++6.0運行C語言程序【拓展練習(xí)1-1】調(diào)試下面程序,觀察運行結(jié)果。
完成輸入后,單擊“保存(Save)”按鈕或快捷鍵“Ctrl+S”,保存文件,狀態(tài)行顯示光標(biāo)的位置與編輯狀態(tài)。1.#include<stdio.h>2.main()3.{4.printf("*************************\n");5.printf("HelloWorld!\n");6.printf("*************************\n");7.getch();8.}1.2任務(wù)1-1使用VisualC++6.0運行C語言程序1.1C語言概述1.4任務(wù)1-2設(shè)計一個溫度轉(zhuǎn)換器1.3C語言程序設(shè)計基礎(chǔ)1.3.1C語言的數(shù)據(jù)類型
數(shù)據(jù)類型表示數(shù)據(jù)的種類與大小范圍。C語言中,常量、變量、表達(dá)式都有數(shù)據(jù)類型,數(shù)據(jù)類型不同,它所占用的存儲空間、所能表示的數(shù)據(jù)范圍、精度及所能進(jìn)行的運算均不同。C語言類型十分豐富,可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類,如圖1-9所示。圖1-9C語言數(shù)據(jù)類型1.3.1C語言的數(shù)據(jù)類型1.基本數(shù)據(jù)類型其值不可以再分解為其它類型,包括整型、字符型、實型和枚舉類型四種。2.構(gòu)造數(shù)據(jù)類型根據(jù)已定義的一個或多個數(shù)據(jù)類型用構(gòu)造的方法來定義,一個構(gòu)造類型的值可以分解成若干個“成員”或“元素”。每個“成員”都是一個基本數(shù)據(jù)類型或又是一個構(gòu)造類型。3.指針類型其值用來表示某個變量在內(nèi)存儲器中的地址。4.空類型空類型void只能申明函數(shù)的返回值類型,不能申明變量。在調(diào)用函數(shù)值時,通常應(yīng)向調(diào)用者返回某種類型的一個函數(shù)值,如果不需要有函數(shù)返回值,則在函數(shù)定義前面加上void表示空類型。1.3.2常量
對于基本數(shù)據(jù)類型量按照其值是否可變又分為變量和常量兩種。在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。常量可以不經(jīng)說明而直接引用,而變量必須先定義后使用。常量一般有以下四種類型。1.數(shù)字常量數(shù)字常量分為整形常量、浮點型常量兩種。整型常量又有十進(jìn)制、八進(jìn)制、十六進(jìn)制等3種不同的進(jìn)制表示。十進(jìn)制整數(shù)由數(shù)碼0、1、2、3、4、5、6、7、8、9所組成的整數(shù),逢十進(jìn)一,如:1234,98。八進(jìn)制整數(shù)以0開頭且由數(shù)碼0、1、2、3、4、5、6、7所組成的整數(shù),逢八進(jìn)一,如:0457,0123。十六進(jìn)制整數(shù)以0x開頭且由數(shù)碼0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f所組成的整數(shù),逢十六進(jìn)一,如:0X7F,0x12。1.3.2常量1.數(shù)字常量【注意】x,a~f可大寫,前綴中數(shù)字0不能寫成字母O。
實型常量也稱為實數(shù)或者浮點數(shù)。在C語言中,實數(shù)只采用十進(jìn)制表示,對較大或較小的實型常量常用指數(shù)表示法,又稱科學(xué)計數(shù)法。在小數(shù)的基礎(chǔ)上,后面加階碼標(biāo)志“e”(或“E”)以及階碼組成。如:1.23e2(或1.23E2)代表1.23×102。【注意】字母“e”(或“E”)之前必須有數(shù)字,且“e”(或“E”)后面的指數(shù)必須為整數(shù)。如:1.23e0.2、E2、2E都是不合法的指數(shù)形式。1.3.2常量2.字符型常量字符型常量可分為單字符常量和字符串常量。C的字符常量是用一對單引號括起來的一個字符。如'a','#','\n'等都是字符常量。一個字符常量中只能存放一個字符。
對于不能顯示的字符(主要指控制字符,如回車符、換行符、制表符等)和一些在C語言中有特殊含義和用途的字符(如單引號、雙引號、反斜杠等),只能用轉(zhuǎn)義字符表示,轉(zhuǎn)義字符由反斜杠“\”開頭,后面跟一個或幾個字符,意思是將反斜杠“\”后面的字符轉(zhuǎn)換成另外的含義。常見的轉(zhuǎn)義字符及其含義如表1-1所示。1.3.2常量2.字符型常量表1-1常用的轉(zhuǎn)義字符及其含義1.3.2常量2.字符型常量【注意】①字符可以是字符集中任意字符。'R'和'r'是不同的字符常量,一對大小寫字母ASCII碼值相差32。'0'和0是不同的,'0'是字符常量,不能當(dāng)成數(shù)字0參與運算;②字符可以參與運算。如:‘0’+7=‘7’、‘a(chǎn)’+2=’c’;③常用字符ASCII碼值大小關(guān)系:數(shù)字字符<大寫字母字符<小寫字母字符。1.3.2常量2.字符型常量字符串常量是由一對雙引號括起來的字符序列。字符串常量在存放時系統(tǒng)一般會在這個字符串的后面加上字符‘\0’(ASCII值為0)即“字符串結(jié)束標(biāo)志”,所以所占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。字符串常量和單字符常量是不同的量。它們之間主要有以下區(qū)別:①字符常量由單引號括起來,字符串常量由雙引號括起來。②字符常量只能是單個字符,只占一個字節(jié),字符串常量則可以含一個或多個字符。③可以把一個字符常量賦予一個字符變量,但不能把一個字符串常量賦予一個字符變量,如果想將一個字符串存放在變量中,必須使用字符數(shù)組。④字符常量占一個字節(jié)的內(nèi)存空間,而字符串常量所占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。1.3.2常量【拓展練習(xí)1-2】區(qū)分下列常量:0,0.0,‘0’,‘\0’,“0”。解題分析:
0:整型常量,內(nèi)存中占用4字節(jié),存儲內(nèi)容為0;0.0:實型常量,內(nèi)存中占用8字節(jié),存儲內(nèi)容為0;‘0’:字符型常量,內(nèi)存中占用1字節(jié),存儲內(nèi)容為0的ASCII碼,即為48;‘\0’:字符型常量,內(nèi)存中占用1字節(jié),存儲內(nèi)容為‘\0’的ASCII碼,即為0;“0”:字符串常量,內(nèi)存中占用2字節(jié),存儲內(nèi)容為0和‘\0’的ASCII碼,即為48和0;1.3.2常量3.符號常量
在C語言中,可以用一個標(biāo)識符來表示一個常量,稱之為符號常量。符號常量在使用之前必須先定義,一般有兩種形式:宏定義和const定義。(1)宏定義的一般形式為:
#define標(biāo)識符常量
例如:#definePI3.1415926(2)const定義的一般形式為:const數(shù)據(jù)類型標(biāo)識符=常量表達(dá)式;
例如:constfloatPI=3.1415926;
習(xí)慣上符號常量的標(biāo)識符用大寫字母,變量標(biāo)識符用小寫字母,以示區(qū)別。
使用符號常量的好處是:含義清楚,“見名知意”;改常量時,能做到“一改全改”。1.3.2常量【說明】①在符號常量宏定義中,不加分號“;”,沒有等號“=”;const定義是以關(guān)鍵字const開頭,以分號結(jié)尾的C語言語句;②每個#define定義一個宏,占一行;每個const語句可以定義多個同類型的符號常量,相互之間用逗號間隔;③宏定義出現(xiàn)在函數(shù)在外部,有效范圍從定義處到源程序結(jié)束;const定義既可以出現(xiàn)在函數(shù)外部,也可以出現(xiàn)在函數(shù)內(nèi)部;④宏定義編譯時,只作替換,不作語法檢查;const定義在程序編譯時完成對標(biāo)識符的賦值;⑤宏定義可以定義更復(fù)雜的表達(dá)式或函數(shù)。3.符號常量1.3.2常量【例1-2】求圓的周長和面積。1.#include<stdio.h>//函數(shù)庫頭文件2.#definePI3.1415926//定義圓周率為符號常量PI3.#defineR12//#defineR154.main()
5.{
6.floatc,s;
7.c=2*PI*R;//求周長8.s=PI*R*R;//求面積9.printf(“c=%f,s=%f”,c,s);
10.}
1.3.3變量1.變量概述在程序運行過程中,其值可以改變的量稱為變量,變量常用來保存程序運行過程中的輸入數(shù)據(jù)或計算結(jié)果。每個變量都有一個名字稱為變量名,變量在內(nèi)存中占一定的存儲單元,在這些存儲單元中存放變量值。變量名實際上是一個符號地址,在對程序編譯時由系統(tǒng)給每一個變量名分配一個內(nèi)存地址。這樣,變量名和變量的內(nèi)存地址之間就存在著一一對應(yīng)的關(guān)系。運行程序時從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從其存儲單元中讀取數(shù)據(jù)。變量的使用必須遵循“先定義后使用”的原則,變量的取名必須符合C語言標(biāo)識符的命名規(guī)則,為了便于閱讀和理解程序,給變量取名時,一般采用代表變量含義或者用途的標(biāo)識符,做到“見名知意”。1.3.3變量2.C語言標(biāo)識符標(biāo)識符是一個名字,即是用來標(biāo)志變量名、常量名、函數(shù)名、數(shù)組名、數(shù)據(jù)類型名和程序名等的有效字符序列。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。C語言標(biāo)識符的命名規(guī)則如下:①由字母、數(shù)字和下劃線(-)組成;②由字母或下劃線(-)開頭;③用戶標(biāo)識符不能使用程序中具有特殊意義的關(guān)鍵字,關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。1.3.3變量2.C語言標(biāo)識符1.3.3變量2.C語言標(biāo)識符【注意】①在標(biāo)識符使用中,需嚴(yán)格區(qū)分字母大小寫;②標(biāo)準(zhǔn)C不限制標(biāo)識符長度,但它受個版本的C語言編譯系統(tǒng)和具體機器的限制;③C語言庫函數(shù)名均為合法標(biāo)識符,程序員在使用時應(yīng)避免與C語言庫函數(shù)以及用戶編制的函數(shù)名相同(如相同則會造成它們不可用);④命名時盡量做到“見名知意”?!就卣咕毩?xí)1-3】判斷下面哪些是不合法的標(biāo)識符?
A_var2_testchar#total_book.ca-2_123INT$5printf1.3.3變量3.整型變量(1)整型變量的存放形式數(shù)據(jù)在內(nèi)存中是以二進(jìn)制補碼形式存放的。正數(shù)的補碼和原碼相同;負(fù)數(shù)的補碼等于該數(shù)的絕對值的二進(jìn)制按位取反再加1。(2)整型變量的分類①基本整型:類型說明符為int。②短整型:類型說明符為shortint或short。③長整型:類型說明符為longint或long。C語言可以加上修飾符unsigned,以指定是無符號數(shù),相反,如果加上signed則表示是有符號數(shù)。既不指定unsigned也不指定signed,則隱含為有符號數(shù)(signed)。【注意】整型變量的取值有一定的范圍,超過其范圍,則會發(fā)生溢出。在C語言中,數(shù)據(jù)溢出不會使程序出錯,而是得到一個非正確的值。1.3.3變量3.整型變量(3)整型變量的定義變量定義的一般形式為:類型說明符變量名標(biāo)識符1,變量名標(biāo)識符2,……;例如:
inta,b,c; //定義a,b,c為整型變量
longx,y; //定義x,y為長整型變量
unsignedlongp,q; //定義p,q為無符號長整型變量1.3.3變量4.實型變量(1)實型變量的存放形式與整型數(shù)據(jù)的存儲方式不同,實型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個實型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。(2)實型變量的分類實型變量分為單精度(float型)、雙精度(double型)和長雙精度(longdouble型)三類,通常用單精度型float。(3)實型變量的定義 floata,b,c; //定義a,b,c為單精度實型變量 doublex,y; //定義x,y為雙精度實型變量1.3.3變量5.字符變量(1)字符變量的存放形式字符變量是用來存放字符常量的,且只能存放一個字符,所有編譯系統(tǒng)都規(guī)定用一個字節(jié)來存放一個字符。存放字符對應(yīng)的ASCII碼。(2)字符變量的數(shù)據(jù)類型字符型變量的數(shù)據(jù)類型是char,1字節(jié),取值范圍:0~255。
【說明】標(biāo)準(zhǔn)ASCII碼只用7位,因此只有128個符號,其值0~127;擴展ASCII碼是用8位,因此有256個符號,其值0~255。char是C數(shù)據(jù)中比較古怪的一個,其它的如int、long、short等不指定signed/unsigned時都默認(rèn)是signed,但char在標(biāo)準(zhǔn)中是unsigned(因為char類型提出的初衷是用來表示ASCII碼),但實際情況中究竟是signed還是unsigned取決于編譯器,在Windows下使用VC編寫C程序,用到char類型時默認(rèn)是signed。1.3.3變量5.字符變量(3)字符變量的定義字符變量用來存儲字符常量,即單個字符。字符變量的類型說明符是char。字符變量類型定義的格式和書寫規(guī)則都與整型變量相同。例如:chara,b,c; //定義a,b,c為字符型變量C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出,即C語言中,在0~255的范圍內(nèi)字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的。1.3.3變量【拓展練習(xí)1-4】在VC中調(diào)試下面程序,觀察輸出結(jié)果,理解字符型數(shù)據(jù)在內(nèi)存中的存儲。1.#include<stdio.h>//函數(shù)庫頭文件2.voidmain()
3.{
4.charch;//定義ch為字符型變量5.ch='A';//ch賦值6.printf("%c\n",ch);//以字符形式輸出7.printf("%d\n",ch);//以整型形式輸出8.}
1.3.3變量6.變量的賦值若變量定義后不賦值,則變量是隨機取值的,一般會取值為0,忘記賦值常會引起錯誤,故變量需定義賦值后使用,通常有以下三種賦值方式。(1)先定義后賦初值(2)在定義變量時賦初值(3)定義好后從鍵盤進(jìn)行賦值或者通過計算獲得初值在實際使用其上方法也可以混合使用。1.3.3變量6.變量的賦值C語言不允許在變量定義中連續(xù)賦值,如inta=b=c=3;是非法的;如果賦值號右邊表達(dá)式的值與左邊的變量類型不一致,將按“賦值兼容”的原則,自動轉(zhuǎn)換右邊表達(dá)式所得值得類型,使之與左邊變量類型一致。當(dāng)右邊類型高于左邊時,轉(zhuǎn)換過程中自動對右邊數(shù)據(jù)截斷。所以,往往高類型數(shù)據(jù)賦給低類型變量時,會有數(shù)據(jù)丟失的現(xiàn)象,這樣會降低數(shù)據(jù)的精度,丟失的部分按四舍五入向前舍入。1.3.3變量【拓展練習(xí)1-5】在VC中調(diào)試下面程序,分析輸出結(jié)果,理解大寫字母和小寫字母的轉(zhuǎn)換。1.#include<stdio.h>//函數(shù)庫頭文件2.voidmain()
3.{
4.charc1,c2;//定義c1,c2為字符型變量5.c1='A';//c1賦值6.c2='b';//c2賦值7.c1=c1+32;
8.c2=c2-32;
9.printf("%c%c\n",c1,c2);//輸出c1,c210.}
【說明】
C語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運算,大寫字母比它相應(yīng)的小寫字母的ASCII碼小32。1.3.4不同類型數(shù)據(jù)間的相互轉(zhuǎn)換
C語言中,整型、實型、字符型數(shù)據(jù)間可以混合運算。在運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后才能運算,這種類型轉(zhuǎn)換是由由編譯系統(tǒng)自動完成的。轉(zhuǎn)換規(guī)則如圖1-13所示。1.自動類型轉(zhuǎn)換變量的數(shù)據(jù)類型是可以轉(zhuǎn)換的。轉(zhuǎn)換的方法有兩種,一種是自動轉(zhuǎn)換,一種是強制轉(zhuǎn)換。【說明】橫向的char、short必須轉(zhuǎn)換成int,float必須轉(zhuǎn)換成double;縱向的int、unsigned、long、double必須由低向高的方向轉(zhuǎn)換,以保證精度不降低。圖1-13自動轉(zhuǎn)換規(guī)則1.3.4不同類型數(shù)據(jù)間的相互轉(zhuǎn)換強制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運算來實現(xiàn)的。其一般形式為:
(類型說明符)(表達(dá)式)其功能是把表達(dá)式的運算結(jié)果強制轉(zhuǎn)換成類型說明符所表示的類型。(float)a把a轉(zhuǎn)換為實型(int)(x+y)把x+y的結(jié)果轉(zhuǎn)換為整型【注意】①類型說明符和表達(dá)式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉(zhuǎn)換成int型之后再與y相加了。②無論是強制轉(zhuǎn)換或是自動轉(zhuǎn)換,都只是為了本次運算的需要而對變量的數(shù)據(jù)長度進(jìn)行的臨時性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時對該變量定義的類型。2.強制類型轉(zhuǎn)換1.3.5運算符運算是對數(shù)據(jù)的加工,是告訴編譯器執(zhí)行特定的數(shù)學(xué)或邏輯操作的符號,C語言內(nèi)置了豐富的運算符,使C語言功能十分完善、程序設(shè)計變得方便靈活,這也是C語言的主要特點之一。C語言運算符主要有算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符、賦值運算符和其他運算符,如表1-3所示。1.
C運算符簡介表1-3C語言運算符一覽表1.3.5運算符(1)基本算術(shù)運算符基本算術(shù)運算符有5個,都是雙目運算符,其優(yōu)先級是:
“*、/、%”優(yōu)先級高于“+、-”,在優(yōu)先級相同的情況下都是左結(jié)合,具體說明如表所示。2.算術(shù)運算符【說明】+、-作為正號運算符和負(fù)號運算符時,是單目運算符,優(yōu)先級為2,高于雙目運算符。1.3.5運算符【拓展練習(xí)1-6】在VC中調(diào)試下面程序,分析輸出結(jié)果,理解除法運算符的作用。2.算術(shù)運算符【說明】C語言中,兩整數(shù)相除的結(jié)果為整數(shù),采用直接取整的方式,而不采取四舍五入的規(guī)則,故除法運算符使用時尤其要注意操作數(shù)的數(shù)據(jù)類型。如果除數(shù)或被除數(shù)中有一個負(fù)值,多數(shù)機器采取“向0取整”的方法。1.#include<stdio.h>2.voidmain()3.{4.printf("%d,%d,%f,%f\n",3/5,-5/3,3/5.0,3/5);5.}1.3.5運算符【拓展練習(xí)1-7】在VC中調(diào)試下面程序,分析輸出結(jié)果,理解取余運算符的作用。2.算術(shù)運算符【說明】取余運算符“%”兩側(cè)的運算對象必須均為整型;取余運算表達(dá)式的值的符號與被除數(shù)符號一致。1.#include<stdio.h>2.voidmain()3.{4.printf("%d,%d,%d,%d\n",3%5,-5%3,3%-5,5%-3);5.}1.3.5運算符【拓展練習(xí)1-8】編寫程序,將輸入的四位整數(shù)的各位分解出來。2.算術(shù)運算符1.#include<stdio.h>
2.voidmain()
3.{
4.intnum,x1,x2,x3,x4;//定義輸入值及分解的各位的變量//定義輸入值及分解的各位的變量5.printf("請輸入一個四位數(shù):");6.scanf("%d",&num);
7.x1=num%10;//個位//個位8.x2=num/10%10;//十位//十位9.x3=num/100%10;//百位//百位10.x4=num/1000%10;//千位,確定為四位數(shù),也可寫為:x4=num/1000;//千位,確定為四位數(shù),也可寫為:x4=num/1000;11.printf("%d的個位、十位、百位、千位分別是:%d,%d,%d,%d",num,x1,x2,x3,x4);12.}
1.3.5運算符(2)表達(dá)式
表達(dá)式是由常量、變量、函數(shù)和運算符組合起來的式子。表達(dá)式中的數(shù)據(jù)按照一定的運算順序,在各種運算符的作用下,得到一個運算結(jié)果,即表達(dá)式的值。
用算術(shù)運算符和括號將運算對象連接起來的符合C語法規(guī)則的式子,稱C算術(shù)表達(dá)式?!咀⒁狻竣俦磉_(dá)式中每個字符沒有高低、大小的區(qū)別,即沒有上標(biāo)或下標(biāo);②表達(dá)式中只能使用圓括號(),可以多重使用,必須成對出現(xiàn);③表達(dá)式中的乘號(*)不能省略,也不能用“×”代替;④能用系統(tǒng)函數(shù)的地方盡量使用系統(tǒng)函數(shù)。2.算術(shù)運算符1.3.5運算符
(1)優(yōu)先級C語言中,運算符的運算優(yōu)先級共分為15級,1級最高,15級最低。在表達(dá)式中,優(yōu)先級較高的先于優(yōu)先級較低的進(jìn)行運算,而在一個運算量兩側(cè)的運算符優(yōu)先級相同時,則按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理,即:誰優(yōu)先級高,就先算誰;同等優(yōu)先級,再看結(jié)合性。
(2)結(jié)合性C語言中各運算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運算符的結(jié)合性是自左至右,即先左后右。
如有表達(dá)式x-y+z則y應(yīng)先與“-”號結(jié)合,執(zhí)行x-y運算,然后再執(zhí)行+z的運算。這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”。最典型的右結(jié)合性運算符是賦值運算符。如x=y=z,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行x=(y=z)運算。3.運算符的優(yōu)先級和結(jié)合性1.3.5運算符3.運算符的優(yōu)先
級和結(jié)合性優(yōu)先級運算符名稱或含義結(jié)合方向說明1[]數(shù)組下標(biāo)左到右
()圓括號
.成員選擇(對象)
->成員選擇(指針)
2-負(fù)號運算符右到左單目運算符(類型)強制類型轉(zhuǎn)換
++自增運算符單目運算符--自減運算符單目運算符*取值運算符單目運算符&取地址運算符單目運算符!邏輯非運算符單目運算符~按位取反運算符單目運算符sizeof長度運算符
1.3.5運算符3.運算符的優(yōu)先
級和結(jié)合性優(yōu)先級運算符名稱或含義結(jié)合方向說明3/*%算術(shù)運算符左到右雙目運算符4+-左到右雙目運算符5<<
>>移位運算符左到右雙目運算符6>
>=<
<=關(guān)系運算符左到右雙目運算符7==!=左到右雙目運算符8&位運算符左到右雙目運算符9^左到右雙目運算符10|左到右雙目運算符11&&邏輯與左到右雙目運算符12||邏輯或左到右雙目運算符13?:條件運算符右到左三目運算符14=賦值運算符右到左
/=*=%=+=-=<<=>>=&=^=|=復(fù)合賦值運算符右到左
15,逗號運算符左到右
1.3.5運算符【注意】
①
大部分運算符結(jié)合性都是從左至右,只有第2、13、14級運算符結(jié)合性是從右至左;
②
只有一個操作對象的運算符,稱單目運算符。如:-(負(fù)值運算符),只有第2級運算符是單目運算符;有兩個操作對象的運算符,稱雙目運算符。如:+(加法運算符),大部分運算符都是雙目運算符;有三個操作對象的運算符,稱三目運算符。如:?:(條件運算符),它是C語言中唯一的三目運算符。3.運算符的優(yōu)先級和結(jié)合性1.3.5運算符C語言提供的自增1、自減1運算符均為單目運算符,都具有右結(jié)合性。它們的操作數(shù)只能是變量,不能是常量和表達(dá)式,具體說明如表1-5所示。4.自增、自減運算符表1-5自增、自減運算符說明表【說明】“-”和“++”是同等優(yōu)先級,結(jié)合性是從右至左,在-x++中,先計算x++,x=5參與取負(fù)運算,y=-5,x的值再加1,x=6。1.3.5運算符【拓展練習(xí)1-9】在VC中調(diào)試下面程序,并按照注釋修改程序,分析輸出結(jié)果,理解自增、自減運算符的作用。1.#include<stdio.h>
2.voidmain()
3.{
4.intx,y;
5.x=5;
6.y=++x;//改為y=x++;或y=--x;或y=x--;或y=-x++;7.printf("%d,%d\n",x,y);
8.}
1.3.5運算符賦值運算符優(yōu)先級14級,右結(jié)合性,可分為簡單賦值運算符和復(fù)合賦值運算符。(1)簡單賦值運算符
“=”就是簡單賦值運算符,它的作用是將一個數(shù)據(jù)賦給一個變量。
i=2; //將2賦給變量i k=i+j; //將i+j的值賦給變量k n=fabs(a); //將函數(shù)fabs(a)的返回值賦給變量n(2)復(fù)合賦值運算符在賦值運算符“=”之前加上其它運算符,就構(gòu)成了復(fù)合賦值運算符。復(fù)合賦值運算符的優(yōu)點是提高編譯效率,生成的目標(biāo)代碼質(zhì)量高。C語言規(guī)定可以使用10種復(fù)合賦值運算符。即:+=、-=、*=、/=、%=、<<=、>>=、&=、∧=、|=。
x-=4; //相當(dāng)于x=x-4;
i/=j-2; //相當(dāng)于i=i/(j-2);5.賦值運算符1.3.5運算符【拓展練習(xí)1-10】在VC中調(diào)試下面程序,觀察輸出結(jié)果,理解賦值運算符的作用。1.#include<stdio.h>2.voidmain()3.{4.inti=2;5.printf("%d\n",i+=3);6.}1.3.5運算符在C語言中逗號“,”也是一種運算符,稱為逗號運算符,優(yōu)先級為15級,左結(jié)合性。其功能是把兩個表達(dá)式連接起來組成一個表達(dá)式,稱為逗號表達(dá)式。其一般形式是:
表達(dá)式1,表達(dá)式2,表達(dá)式3,…,表達(dá)式n逗號表達(dá)式的求解過程是:先求解表達(dá)式1,然后求解表達(dá)式2,再求解表達(dá)式3,…。整個逗號表達(dá)式的值是表達(dá)式n的值。所以,逗號運算符也稱“順序求值運算符”。6.逗號運算符1.3.5運算符【拓展練習(xí)1-11】在VC中調(diào)試下面程序,觀察輸出結(jié)果,理解逗號運算符的作用。1.#include<stdio.h>2.voidmain()3.{4.intx=3;5.printf("%d\n",(x=3+2,x-4));6.}1.3.5運算符求字節(jié)運算符(sizeof)是一個比較特殊的單目運算符,它的功能是求表達(dá)式中所代表的存儲單元所占的字節(jié)數(shù);或是求表達(dá)式中常量的存儲單元所占的字節(jié)數(shù);或是求表達(dá)式中的數(shù)據(jù)類型表示的數(shù)據(jù)在內(nèi)存單元中所占的字節(jié)數(shù)。求字節(jié)運算符的一般形式是:
sizeof(表達(dá)式)其中,表達(dá)式可以是常量、變量、數(shù)據(jù)類型名。7.求字節(jié)運算符【注意】sizeof的運算結(jié)果是字節(jié)數(shù)而非位數(shù)。1.3.5運算符【拓展練習(xí)1-12】在VC中調(diào)試下面程序,觀察輸出結(jié)果,理解求字節(jié)運算符的作用。1.#include<stdio.h>2.voidmain()3.{4.inta;charb;floatc;5.printf("%d,%d,%d\n",sizeof(2),sizeof(a),sizeof(int));6.printf("%d,%d,%d\n",sizeof('b'),sizeof(b),sizeof(char));7.printf("%d,%d,%d,%d\n",sizeof(3.2),sizeof(c),sizeof(float),sizeof(double));8.}1.3.5運算符關(guān)系運算符是對兩個操作數(shù)的值進(jìn)行比較,判斷它們是否滿足關(guān)系。C語言提供6種關(guān)系運算符,其中“<、<=、>、>=”優(yōu)先級是6,“==、!=”優(yōu)先級是7,結(jié)合性都是從左至右。關(guān)系運算符對其左右兩側(cè)的值進(jìn)行比較。若關(guān)系成立,表示滿足條件,為“真”,值為“1”;若關(guān)系不成立,表示不滿足條件,為“假”,值為“0”。用關(guān)系運算符將兩個表達(dá)式連接起來的式子,稱關(guān)系表達(dá)式。8.關(guān)系運算符1.3.5運算符【拓展練習(xí)1-13】在VC中調(diào)試下面程序,觀察輸出結(jié)果,理解關(guān)系運算符的作用。1.#include<stdio.h>2.voidmain()3.{4.intx=1,y=2,z=3;5.printf("%d\n",3>2);6.printf("%d\n",x+y>x+z);7.printf("%d\n",x>y==z);8.printf("%d\n",z=x>y);9.printf("%d\n",'c'<'d');10.printf("%d\n",z>y>x);11.}【注意】在分析表達(dá)式結(jié)果時,要根據(jù)“先優(yōu)先級,后結(jié)合性”的原則進(jìn)行,z>y>x表達(dá)式中,兩個大于運算符(>)是同優(yōu)先級,故要根據(jù)左結(jié)合性,先判斷表達(dá)式z>y的值為1,再判斷表達(dá)式1>x的值為0。1.3.5運算符程序中單一的條件,可用關(guān)系表達(dá)式表示,而很多復(fù)雜的條件就需要用到邏輯運算。C語言提供3種邏輯運算符:邏輯非(?。┦菃文窟\算符,優(yōu)先級是2;邏輯與(&&)是雙目運算符,優(yōu)先級是11;邏輯或(||)是雙目運算符,優(yōu)先級是12。結(jié)合性都是從左至右。用邏輯運算符將關(guān)系表達(dá)式或邏輯量(0、1)連接起來的式子就是邏輯表達(dá)式。邏輯表達(dá)式的值也是一個邏輯值,即“真”或“假”?!罢妗睘椤?”;“假”為“0”。9.邏輯運算符1.3.5運算符【拓展練習(xí)1-14】在VC中調(diào)試下面程序,觀察輸出結(jié)果,理解邏輯運算符的作用?!咀⒁狻緾語言編譯系統(tǒng)在給出邏輯運算結(jié)果時,以“1”代表“真”,以“0”代表“假”。但在判斷一個量是否為“真”時,以“非0”代表“真”,以“0”代表“假”;邏輯運算符兩側(cè)的運算對象可以是任何類型的數(shù)據(jù)。1.#include<stdio.h>2.voidmain()3.{4.inta=1,b=2,c=3;5.printf("%d\n",!c||2.5+a);6.printf("%d\n",a=b>c&&a+b||'c');7.}1.3.5運算符【拓展練習(xí)1-15】已知a=3,b=4,c=5,計算下列表達(dá)式的值?!菊f明】由“&&”、“||”構(gòu)成的邏輯表達(dá)式在某些情況下會產(chǎn)生“短路”現(xiàn)象,如:a&&b&&c只要a為假,就不必判別b和c;如果a為真、b為假,就不必判別c。再如:a||b||c只要a為真(非0),就不必判別b和c;只有a為假,才判別b;只有a和b都為假,才判別c。短路運算的原理是當(dāng)有多個表達(dá)式(值)時左邊的表達(dá)式值可以確定結(jié)果時,就不再繼續(xù)運算右邊的表達(dá)式的值。①a>b②a>b!=c③c>b>a④(a<b)+c⑤a+b>c&&b==c⑥a||b+c&&b-c⑦!(a>b)&&!c||1⑧!(x=a)&&(y=b)&&0⑨!(a+b)+c-1&&b+c/2⑩a=a-b==c-b1.3.5運算符【拓展練習(xí)1-15】已知a=3,b=4,c=5,計算下列表達(dá)式的值。①a>b0②a>b!=c1③c>b>a0④(a<b)+c6⑤a+b>c&&b==c0⑥a||b+c&&b-c1⑦!(a>b)&&!c||11⑧!(x=a)&&(y=b)&&00⑨!(a+b)+c-1&&b+c/21⑩a=a-b==c-b01.3.5運算符
一些簡單的分支程序(如分段函數(shù))可以用一個運算符構(gòu)造,即條件運算符“?:”。條件運算符是唯一的一個3目運算符,其優(yōu)先級為13,高于賦值運算符,低于算術(shù)運算符和關(guān)系運算符。條件運算符的的結(jié)合方向是從右向左。
條件表達(dá)式的一般形式為:條件成立?表達(dá)式1:表達(dá)式2
其語句功能:條件成立(值為“1”)嗎?如果為條件成立(“1”),條件表達(dá)式的值取表達(dá)式1的值,否則取表達(dá)式2的值。10.條件運算符1.3.5運算符【拓展練習(xí)1-16】在VC中調(diào)試下面程序,輸入不同的值,觀察輸出結(jié)果,理解條件運算符的使用。
1.#include<stdio.h>2.voidmain()3.{4.intx,y;5.scanf("%d,%d",&x,&y);6.printf("兩數(shù)中最大的是:%d\n",x>y?x:y);7.}【注意】輸入時兩數(shù)之間的逗號,需在英文狀態(tài)下。1.3.5運算符程序中的所有數(shù)在計算機內(nèi)存中都是以二進(jìn)制的形式儲存的。位運算就是直接對整數(shù)在內(nèi)存中的二進(jìn)制位進(jìn)行操作,可以對某些位清零、置1、取反,也可以將某些位向右或向左移動。C語言提供了6個位操作運算符,具體說明如表1-8所示。11.位運算符
表1-8位運算符一覽表1.3.5運算符【拓展練習(xí)1-17】編寫C語句,實現(xiàn)下列要求。【說明】對數(shù)據(jù)進(jìn)行位邏輯運算操作時,與0位與(&)可使位值清零,與1位與(&)可使位值不變;與0位或(|)可使位值不變,與1位或(|)可使位值置1;與0位異或(^)可使位值不變,與1位異或(^)可使位值取反。①字符變量a的高四位不變,低四位置1;②字符變量a的高四位不變,低四位清零;③字符變量a的高四位不變,低四位取反。1.3.5運算符【拓展練習(xí)1-17】編寫C語句,實現(xiàn)下列要求。①字符變量a的高四位不變,低四位置1;a|=0X0F;②字符變量a的高四位不變,低四位清零;a&=0XF0;③字符變量a的高四位不變,低四位取反。a^=0X0F;1.3.6C語句1.表達(dá)式語句由表達(dá)式加“;”組成的語句,稱表達(dá)式語句。其一般形式為:表達(dá)式;例如:a=5;2.函數(shù)調(diào)用語句由函數(shù)加“;”組成的語句,稱函數(shù)調(diào)用語句。其一般形式為:函數(shù)名(參數(shù)表列);例如:printf("%d\n",num);3.空語句只有一個分號的語句,稱空語句。其一般形式為:;通常用作延時循環(huán)語句中的循環(huán)體,如:for(i=0;i<1000;i++);,也可用于還未實現(xiàn)函數(shù)的空函數(shù)體,如:voidmax(){;}。1.3.6C語句4.復(fù)合語句
用大括號“{}”把多條語句括起來成為復(fù)合語句。在程序中,應(yīng)把復(fù)合語句看成是單條語句,即在語法的地位上相當(dāng)于一條語句。其一般形式為:{語句1;語句2;…語句n;}
例如:{sum=sum+i;i++;}【注意】由復(fù)合語句內(nèi)的各條語句都必須以分號“;”結(jié)尾,在括號“}”外不能加分號“;”。1.3.6C語句5.控制語句控制語句用來實現(xiàn)對程序流程的選擇、循環(huán)、轉(zhuǎn)向和返回等進(jìn)行控制。C語言中共有9種控制語句,可以分為"選擇語句","循環(huán)語句","轉(zhuǎn)向語句","返回語句"四類,具體如表所示。1.3.7輸入輸出語句
為了讓計算機處理各種數(shù)據(jù),首先應(yīng)該把數(shù)據(jù)輸入到計算機中,計算機處理數(shù)據(jù)結(jié)束后,再將目標(biāo)數(shù)據(jù)信息以人能夠識別的方式輸出。即通過數(shù)據(jù)的輸入輸出實現(xiàn)人與計算機之間的信息交換,所以在程序設(shè)計中,輸入輸出語句是一類必不可少的重要語句。在C語言程序設(shè)計中,沒有專門的輸入輸出語句,所有的輸入輸出是通過編譯系統(tǒng)提供的標(biāo)準(zhǔn)庫函數(shù)來實現(xiàn)的。最常用的輸入輸出函數(shù)有scanf()、printf()、getchar()、putchar()、gets()、puts()。但這些函數(shù)在單片機程序設(shè)計使用較少,單片機主要通過硬件外設(shè)(如:鍵盤、傳感器、指示燈、蜂鳴器、數(shù)碼端等)實現(xiàn)人機交互的,輸入輸出函數(shù)使用時需通過單片機的串口來完成。所以這里只為方便后面學(xué)習(xí)C語言基礎(chǔ)知識調(diào)試,簡單介紹常用的輸入輸出函數(shù)。1.3.7輸入輸出語句1.字符數(shù)據(jù)的輸入輸出(1)putchar()函數(shù)(字符輸出函數(shù))putchar()函數(shù)的作用是向終端(顯示器)輸出一個字符。其一般形式為:
putchar(參數(shù));其中:參數(shù)可以是單字符常量、字符變量、ASCII碼、也可以是轉(zhuǎn)義字符。putchar('A');//輸出字符Aputchar(c);//輸出字符變量c的值putchar(65);//輸出ASCII碼65的字符,即字符Aputchar('\n');//換行,執(zhí)行控制功能,不在屏幕上顯示putchar('\101');//輸出ASCII碼101(八進(jìn)制)的字符,即字符A【注意】對于輸出控制字符,執(zhí)行控制功能,不在屏幕上顯示。
1.3.7輸入輸出語句1.字符數(shù)據(jù)的輸入輸出(1)putchar()函數(shù)(字符輸出函數(shù))putchar()函數(shù)的作用是向終端(顯示器)輸出一個字符。其一般形式為:
putchar(參數(shù));其中:參數(shù)可以是單字符常量、字符變量、ASCII碼、也可以是轉(zhuǎn)義字符。putchar('A');//輸出字符Aputchar(c);//輸出字符變量c的值putchar(65);//輸出ASCII碼65的字符,即字符Aputchar('\n');//換行,執(zhí)行控制功能,不在屏幕上顯示putchar('\101');//輸出ASCII碼101(八進(jìn)制)的字符,即字符A【注意】對于輸出控制字符,執(zhí)行控制功能,不在屏幕上顯示。
1.3.7輸入輸出語句1.字符數(shù)據(jù)的輸入輸出
(2)getchar()函數(shù)(字符輸入函數(shù))getchar()函數(shù)的作用是從終端(鍵盤)得到一個字符,返回該字符的ASCII碼值。其一般形式為:
getchar();此函數(shù)無參數(shù),調(diào)用時不需要參數(shù),但是括號不能省略,函數(shù)的值就是從輸入設(shè)備得到的字符。用getchar()得到的字符可以賦值給字符變量、整型變量或者作為表達(dá)式的一部分。例如:
c=getchar(); //通常此函數(shù)返回值賦值給一個變量,以便后面操作
x=getchar()+32; //getchar()作為表達(dá)式的一部分【注意】getchar()只接收輸入的第一個字符。1.3.7輸入輸出語句2.格式輸入輸出
(1)printf()函數(shù)(格式輸出函數(shù))printf()函數(shù)的作用是按要求格式依次輸出各類型數(shù)據(jù)。該函數(shù)的一般形式:
printf("格式控制",輸出表列);格式控制字符串用于指定輸出格式,可由格式字符串和非格式字符串組成。格式字符串是以%開頭的字符串,在%后跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、形式、長度、小數(shù)位數(shù)等。%d:用來輸出十進(jìn)制整數(shù)。%f:用來輸出實數(shù)(包括單、雙精度),以小數(shù)形式輸出。%o:以八進(jìn)制數(shù)形式輸出整數(shù)。%x(或%X):以十六進(jìn)制數(shù)形式輸出整數(shù)。%u:用來輸出unsigned型數(shù)據(jù)。%c:用來輸出一個字符。%s:用來輸出一個字符串。%e(或%E):以“規(guī)范化的指數(shù)形式”輸出實數(shù)。1.3.7輸入輸出語句【例1-3】分析格式輸出函數(shù)的作用。
①非格式字符串在輸出時原樣顯示,主要起提示作用;②輸出表列中給出了各個輸出項,要求格式字符串和各輸出項在數(shù)量和類型上應(yīng)一一對應(yīng);③%f默認(rèn)小數(shù)點后輸出6位,所以輸出時通常加上小數(shù)位數(shù)控制符,如:%.2f。1.#include<stdio.h>2.voidmain()3.{4.intx=523;5.chary=’A’;6.floatz=235.5674;7.printf("%d,%c,%.2f\n",x,y,z);8.printf("%s,%3s,%5.3s\n","China","China","China");9.printf("%f,%-8.2f,%8.2f\n",z,z,z);10.}【注意】1.3.7輸入輸出語句2.格式輸入輸出
(2)scanf()函數(shù)(格式輸入函數(shù))scanf()函數(shù)的作用是按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量中。該函數(shù)的一般形式:scanf("格式控制",地址表列);
其中,格式控制字符串不能顯示非格式字符串,也就是不能顯示提示字符串。地址列表中給出各變量的地址,地址是由地址運算符“&”后跟變量名組成的,如&x,&y分別表示變量x和變量y的地址。例如:scanf("%d,%c,%f",&x,&y,&z);1.3.7輸入輸出語句【拓展練習(xí)1-18】在VC中調(diào)試下面程序,按注釋修改程序,分析不同格式控制字符串下輸入有什么不同。1.#include<stdio.h>
2.voidmain()
3.{
4.intx,y,z;
5.chara,b,c;
6.scanf("%d%d%d",&x,&y,&z);//scanf("x=%d,y=%d,z=%d",&x,&y,&z);7.scanf("%c,%c,%c",&a,&b,&c);//scanf("%c%c%c",&a,&b,&c);8.printf("%d,%d,%d\n",x,y,z);
9.printf("%c%c%c",a,b,c);
10.}
【說明】①語句“scanf("%d%d%d",&x,&y,&z);”,從鍵盤輸入字符時可用“空格鍵”、“回車鍵”或“tab鍵”分隔三個值;②用“%c”格式輸入字符時,空格、回車、tab鍵都作為有效字符輸入;③一般情況下,getchar()和putchar()、scanf()和printf()配對使用。
1.2任務(wù)1-1使用VisualC++6.0運行C語言程序1.1C語言概述1.4任務(wù)1-2設(shè)計一個溫度轉(zhuǎn)換器1.3C語言程序設(shè)計基礎(chǔ)1.4.1任務(wù)要求編寫華氏溫度-攝氏溫度轉(zhuǎn)換器,使用VisualC++6.0調(diào)試、運行。分析任
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學(xué)學(xué)生社團(tuán)活動經(jīng)費保障制度
- 人力資源配置與調(diào)整制度
- 企業(yè)風(fēng)險管理與防范制度
- 2026年環(huán)境科學(xué)與工程專業(yè)核心考點題集
- 2026年酒店業(yè)成本控制與效益分析考核題
- 2026年環(huán)境科學(xué)基礎(chǔ)知識考試題目
- 2025年氫燃料電池汽車示范運行數(shù)據(jù)采集協(xié)議
- 2025年四川旅游學(xué)院馬克思主義基本原理概論期末考試模擬題帶答案解析(奪冠)
- 山西省晉中市澤州2025-2026年九年級上期末道德與法治試卷(含答案)
- 2025年五寨縣招教考試備考題庫帶答案解析
- 陜西省西安市高新一中、交大附中、師大附中2026屆高二生物第一學(xué)期期末調(diào)研模擬試題含解析
- 2025兒童心肺復(fù)蘇與急救指南詳解課件
- 大推力液體火箭發(fā)動機綜合測試中心建設(shè)項目可行性研究報告模板立項申批備案
- 湖北中煙2024年招聘考試真題(含答案解析)
- 運維檔案管理制度
- 2025年航空發(fā)動機涂層材料技術(shù)突破行業(yè)報告
- 2026年汽車美容店員工績效工資考核辦法細(xì)則
- 公路施工安全管理課件 模塊五 路基路面施工安全
- 2025智能化產(chǎn)業(yè)市場深度觀察及未來方向與投資潛力研究調(diào)研報告
- 藥企產(chǎn)品經(jīng)理工作全解析
- 護(hù)士夜班應(yīng)急預(yù)案
評論
0/150
提交評論