版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目一初識(shí)C語言任務(wù)一了解Dev-C++集成開發(fā)環(huán)境任務(wù)二了解C語言程序中的基本結(jié)構(gòu)任務(wù)三認(rèn)識(shí)C語言程序的框架結(jié)構(gòu)任務(wù)四了解C語言的字符和詞匯任務(wù)五了解C語言中的基本運(yùn)算任務(wù)六C語言中的基本數(shù)據(jù)類型任務(wù)七養(yǎng)成好的編程習(xí)慣——注釋思考與練習(xí)
C語言的主要特點(diǎn)如下:
(1)C語言是一款模塊化的程序設(shè)計(jì)語言。模塊化的基本思想是將一個(gè)大的程序按功能分割成一些模塊,使每一個(gè)模塊都成為功能單一、結(jié)構(gòu)清晰、容易理解的小
程序。
(2)C語言簡潔,結(jié)構(gòu)緊湊,使用方便、靈活。C語言總共只有32個(gè)關(guān)鍵字,9條控制語句,源程序書寫格式自由。
(3)C語言的運(yùn)算功能極其豐富,數(shù)據(jù)處理能力強(qiáng)。C語言總共有34種運(yùn)算符,如算術(shù)運(yùn)算符,關(guān)系運(yùn)算符,自增(++)、自減(--)運(yùn)算符,復(fù)合賦值運(yùn)算符,位運(yùn)算符及條件運(yùn)算符等。同時(shí),C語言還可以實(shí)現(xiàn)其他高級(jí)語言較難實(shí)現(xiàn)的功能。
任務(wù)一了解Dev-C++集成開發(fā)環(huán)境
一般教材中,都選用Turbo
C2.0作為C語言的集成開發(fā)環(huán)境,該系統(tǒng)是DOS操作系統(tǒng)下支持的軟件,不支持鼠標(biāo)操作。綜合考慮之后,我們以Dev-C++
5.11作為本書程序的集成開發(fā)環(huán)境,Dev-C++是一個(gè)Windows下的C和C++程序的集成開發(fā)環(huán)境。
它使用mingw32/gcc編譯器,遵循C/C++標(biāo)準(zhǔn)。開發(fā)環(huán)境包括多頁面窗口、工程編輯器以及調(diào)試器等,在工程編輯器中集合了編輯器、編譯器、連接程序和執(zhí)行程序,提供高亮度語法顯示,以減少編輯錯(cuò)誤,還有完善的調(diào)試功能,能夠適合初學(xué)者與編程高手的不同需求,是學(xué)習(xí)C或C++的首選開發(fā)工具。下面我們先介紹一下Dev-C++的安裝。
(1)選擇運(yùn)行Dev-C++的語言環(huán)境,如圖1.1所示。圖1.1選擇語言
(2)進(jìn)入Dev-C++的安裝向?qū)?,如圖1.2所示。
圖1.2安裝向?qū)?/p>
(3)進(jìn)入【自定義】界面,單擊“Next”按鈕,如圖1.3所示。
圖1.3自定義安裝
(4)進(jìn)入【安裝路徑】界面,選擇相應(yīng)的路徑,如圖1.4所示。
圖1.4選擇路徑
(5)進(jìn)入【開始安裝】界面,開始安裝程序,如圖1.5所示。
圖1.5開始安裝
(6)安裝完成后,單擊“Finish”按鈕,如圖1.6所示。
圖1.6完成安裝
任務(wù)二了解C語言程序中的基本結(jié)構(gòu)
程序設(shè)計(jì)語言的根本用途是解決現(xiàn)實(shí)世界的問題。解決任何問題都有一定的步驟。為解決一個(gè)問題而采取的方法和步驟,就稱為算法。
表示算法,可以用自然語言、偽碼或流程圖。流程圖是算法的一種直觀表示方式,簡單易懂,其基本符號(hào)如圖1.7所示。在進(jìn)行實(shí)際的軟件開發(fā)時(shí),一般是先分析問題,設(shè)計(jì)算法,畫出算法流程圖,然后根據(jù)流程圖寫出源程序,本書中圖示依此寫法,如圖1.8所示。圖1.7流程圖的基本符號(hào)圖1.8現(xiàn)實(shí)世界的問題到程序的轉(zhuǎn)換圖
與現(xiàn)實(shí)世界類似,常見的算法結(jié)構(gòu)可以分為三類:順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。其中,分支結(jié)構(gòu)有時(shí)也被稱為選擇結(jié)構(gòu)。下面分別對這些結(jié)構(gòu)進(jìn)行介紹,并給出每種結(jié)構(gòu)的流程圖。
1.順序結(jié)構(gòu)
順序結(jié)構(gòu)的程序比較簡單,如圖1.9所示,就是按照語句的排列順序依次執(zhí)行的機(jī)制。順序結(jié)構(gòu)的執(zhí)行順序是自上而下、依次執(zhí)行的,因此編寫程序也必須遵守這一規(guī)定,否則程序的執(zhí)行結(jié)果就會(huì)出錯(cuò)。
圖1.9順序結(jié)構(gòu)流程圖
順序結(jié)構(gòu)程序舉例如下:
(1)
main是主函數(shù)的函數(shù)名,表示這是一個(gè)主函數(shù)。
(2)每一個(gè)C源程序都必須有且只能有一個(gè)主函數(shù)(main函數(shù))。
(3)函數(shù)調(diào)用語句,printf函數(shù)的功能是把要輸出的內(nèi)容送到顯示器去顯示。
(4)
printf函數(shù)是一個(gè)由系統(tǒng)定義的標(biāo)準(zhǔn)函數(shù),可在程序中直接調(diào)用。
2.分支結(jié)構(gòu)
分支結(jié)構(gòu)與順序結(jié)構(gòu)不同,其執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的先后順序。分支結(jié)構(gòu)程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句。
分支結(jié)構(gòu)適合于帶有邏輯條件判斷的計(jì)算,設(shè)計(jì)這類程序時(shí)往往都要先繪制其程序流程圖。程序流程圖是根據(jù)解題分析過程所繪制的程序執(zhí)行流程圖,如圖1.10所示。
圖1.10分支結(jié)構(gòu)程序流程圖
分支結(jié)構(gòu)程序舉例如下:
3.循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,如圖1.11所示。循環(huán)結(jié)構(gòu)是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長的程序結(jié)構(gòu)。C語言中常用的循環(huán)有三種,即while循環(huán)、do...while循環(huán)和for循環(huán)。
圖1.11循環(huán)結(jié)構(gòu)流程圖
循環(huán)結(jié)構(gòu)程序舉例如下:
三種基本結(jié)構(gòu)的共同特點(diǎn)如下:
(1)只有一個(gè)入口。
(2)只有一個(gè)出口。
(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到。
(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。
C語言有一個(gè)重要特點(diǎn),即結(jié)構(gòu)化。C語言是結(jié)構(gòu)化程序設(shè)計(jì)語言的典型代表。
任務(wù)三認(rèn)識(shí)C語言程序的框架結(jié)構(gòu)
我們知道,常用的計(jì)算機(jī)是由輸入設(shè)備、輸出設(shè)備、控制器、運(yùn)算器、存儲(chǔ)器五大部分組成的,與此類似,我們把C語言程序的框架結(jié)構(gòu)分為四個(gè)部分:定義變量、輸入數(shù)據(jù)、核心處理、輸出結(jié)果。按照這樣的分解,一款程序的框架如下:
我們會(huì)指出每一個(gè)項(xiàng)目代碼的這四個(gè)部分。程序員在編寫程序時(shí),基本上也是按照這四個(gè)部分各個(gè)擊破,最后形成完整的程序。
其中,輸入和輸出部分要借助C語言中的庫函數(shù),核心處理部分就是每個(gè)項(xiàng)目的主要功能。下面詳細(xì)介紹一下數(shù)據(jù)輸入/輸出的概念及在C語言中的實(shí)現(xiàn),這些內(nèi)容在以后的每款程序中都會(huì)用到。
首先注意以下幾點(diǎn):
(1)所謂輸入/輸出,是以計(jì)算機(jī)為主體而言的。
(2)本項(xiàng)目介紹的是向標(biāo)準(zhǔn)輸出設(shè)備——顯示器輸出數(shù)據(jù)的語句。
(3)在C語言中,所有的數(shù)據(jù)輸入/輸出都是由庫函數(shù)完成的,因此都是直接調(diào)用相應(yīng)的函數(shù)語句。
(4)在使用C語言庫函數(shù)時(shí),要用預(yù)編譯命令#include將有關(guān)“頭文件”包括到源文件中。
使用標(biāo)準(zhǔn)輸入/輸出庫函數(shù)時(shí)要用到“stdio.h”文件,因此源文件開頭應(yīng)有以下預(yù)編譯命令:
#include<stdio.h>
或
#include"stdio.h"
stdio是standardinput&output的意思。
考慮到printf和scanf函數(shù)使用頻繁,系統(tǒng)允許在使用這兩個(gè)函數(shù)時(shí)可以不加編譯命令。
(5)
printf和scanf函數(shù)的用法如下:
①printf函數(shù)(格式輸出函數(shù))。printf函數(shù)稱為格式輸出函數(shù),其關(guān)鍵字最末一個(gè)字母f即為“格式”(format)之意。其功能是按用戶指定的格式,把指定的數(shù)據(jù)顯示到顯示器屏幕上。在前面的例題中我們已多次使用過這個(gè)函數(shù)。
printf函數(shù)是一個(gè)標(biāo)準(zhǔn)庫函數(shù),它的函數(shù)原型在頭文件“stdio.h”中。但作為一個(gè)特例,不要求在使用printf函數(shù)之前必須包含stdio.h文件。
printf函數(shù)調(diào)用的一般形式為
printf(“格式控制字符串”,輸出表列);
其中格式控制字符串用于指定輸出格式。格式控制字符串可由格式字符串和非格式字符串兩種字符組成。格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、形式、長度、小數(shù)位數(shù)等。
②scanf函數(shù)(格式輸入函數(shù))。scanf函數(shù)稱為格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。
scanf函數(shù)是一個(gè)標(biāo)準(zhǔn)庫函數(shù),它的函數(shù)原型在頭文件“stdio.h”中。與printf函數(shù)相同,C語言也允許在使用scanf函數(shù)之前不必包含stdio.h文件。
scanf函數(shù)的一般形式為
scanf("格式控制字符串",地址表列);
例如,
scanf("%d",&a1);/*從鍵盤讀取一個(gè)整數(shù)值到變量a1中*/
其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運(yùn)算符“&”后跟變量名組成的。
例如,
&a,&b
分別表示變量a和變量b的地址。這個(gè)地址就是編譯系統(tǒng)在內(nèi)存中給a、b變量分配的地址。在C語言中,使用了地址這個(gè)概念,這是與其他語言不同的。應(yīng)該把變量的值和變量的地址這兩個(gè)不同的概念區(qū)分開來。變量的地址是C編譯系統(tǒng)分配的,用戶不必關(guān)心具體的地址是多少。
變量的地址和變量值的關(guān)系,就像杯子和飲料的關(guān)系一樣。
在賦值表達(dá)式中給變量賦值,例如,
a=567
式中,a為變量名,567是變量的值,&a是變量a的地址。但在賦值號(hào)左邊是變量名,不能寫地址,而scanf函數(shù)在本質(zhì)上也是給變量賦值,但要求寫變量的地址,如&a。這兩者在形式上是不同的。&是一個(gè)取地址運(yùn)算符,&a是一個(gè)表達(dá)式,其功能是求變量的地址。
任務(wù)四了解C語言的字符和詞匯
1.C語言字符字符是組成語言的最基本的元素。C語言字符集由字母、數(shù)字、空格、標(biāo)點(diǎn)和特殊字符組成。在字符常量、字符串常量和注釋中還可以使用漢字或其他可表示的圖形符號(hào)。
(1)字母。小寫字母a~z共26個(gè);大寫字母A~Z共26個(gè)。
(2)數(shù)字。0~9共10個(gè)。
(3)空白符??崭穹?、制表符、換行符等統(tǒng)稱為空白符??瞻追辉谧址A亢妥址A恐衅鹱饔?。在其他地方出現(xiàn)時(shí),只起間隔作用,編譯程序?qū)λ鼈兒雎圆挥?jì)。因此在程序中使用空白符與否,對程序的編譯不發(fā)生影響,但在程序中適當(dāng)?shù)牡胤绞褂每瞻追麑⒃黾映绦虻那逦院涂勺x性。
(4)標(biāo)點(diǎn)和特殊字符。
2.C語言詞匯
在C語言中使用的詞匯分為六類:標(biāo)識(shí)符、關(guān)鍵字、運(yùn)算符、分隔符、常量和注釋符。
1)標(biāo)識(shí)符。在程序中使用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱為標(biāo)識(shí)符。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。C語言規(guī)定,標(biāo)識(shí)符只能是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線(_)組成的字符串,并且其第一個(gè)字符必須是字母或下劃線。以下標(biāo)識(shí)符是合法的:
a,x,x3,BOOK_1,sum5
以下標(biāo)識(shí)符是非法的:
3s 以數(shù)字開頭
s*T
出現(xiàn)非法字符*
-3x 以減號(hào)開頭
bowy-1
出現(xiàn)非法字符-(減號(hào))
在使用標(biāo)識(shí)符時(shí)還必須注意以下幾點(diǎn):
①標(biāo)準(zhǔn)C語言不限制標(biāo)識(shí)符的長度,但它受各種版本C語言編譯系統(tǒng)的限制,同時(shí)也受到具體機(jī)器的限制。例如,在某版本C語言編譯系統(tǒng)中規(guī)定標(biāo)識(shí)符前8位有效,當(dāng)兩個(gè)標(biāo)識(shí)符前8位相同時(shí),則被認(rèn)為是同一個(gè)標(biāo)識(shí)符。
②在標(biāo)識(shí)符中,大小寫是有區(qū)別的。例如,BOOK和book是兩個(gè)不同的標(biāo)識(shí)符。
③標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào),因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,做到“顧名思義”。
(2)關(guān)鍵字。關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字相同。C語言的關(guān)鍵字分為以下幾類:
①類型說明符,用于定義和說明變量、函數(shù)或其他數(shù)據(jù)結(jié)構(gòu)的類型,如前面例題中用到的int、double等。
②語句定義符,用于表示一個(gè)語句的功能,如例1-3中用到的while就是循環(huán)語句的語句定義符。
③預(yù)處理命令字,用于表示一個(gè)預(yù)處理命令,如前面各例中用到的include。
(3)運(yùn)算符。C語言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量、函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個(gè)或多個(gè)字符組成。
(4)分隔符。在C語言中采用的分隔符有逗號(hào)和空格兩種。逗號(hào)主要用在類型說明和函數(shù)參數(shù)表中,分隔各個(gè)變量。空格多用于語句各單詞之間,作間隔符。在關(guān)鍵字、標(biāo)識(shí)符之間必須要有一個(gè)以上的空格符作間隔,否則將會(huì)出現(xiàn)語法錯(cuò)誤。例如,把inta寫成inta,C編譯器會(huì)把inta當(dāng)成一個(gè)標(biāo)識(shí)符處理,其結(jié)果必然出錯(cuò)。
(5)常量。C語言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號(hào)常量、轉(zhuǎn)義字符等多種。在后面章節(jié)中將專門給予介紹。
(6)注釋符。C語言的注釋符是以“/*”開頭并以“*/”結(jié)尾的串。在“/*”和“*/”之間的內(nèi)容即為注釋。編譯程序時(shí),不對注釋作任何處理。注釋可出現(xiàn)在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調(diào)試程序中對暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調(diào)試結(jié)束后再去掉注釋符。
任務(wù)五了解C語言中的基本運(yùn)算
C語言的運(yùn)算符可分為以下幾類。
(1)算術(shù)運(yùn)算符:用于各類數(shù)值運(yùn)算,包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(++)、自減(--)共七種。
(2)關(guān)系運(yùn)算符:用于比較運(yùn)算,包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。
(3)邏輯運(yùn)算符:用于邏輯運(yùn)算,包括與(&&)、或(||)、非(!)三種。
(4)位操作運(yùn)算符:參與運(yùn)算的量,按二進(jìn)制位進(jìn)行運(yùn)算,包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
(5)賦值運(yùn)算符:用于賦值運(yùn)算,分為簡單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=)三類共11種。
(6)條件運(yùn)算符:這是一個(gè)三目運(yùn)算符,用于條件求值(?:)。
(7)逗號(hào)運(yùn)算符:用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)。
(8)指針運(yùn)算符:用于取內(nèi)容(*)和取地址(&)兩種運(yùn)算。
(9)求字節(jié)數(shù)運(yùn)算符:用于計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)。
(10)特殊運(yùn)算符:有括號(hào)()、下標(biāo)[]、成員(->,.)等幾種。
以上運(yùn)算中,算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算、賦值運(yùn)算是最常用的四種運(yùn)算,下面著重介紹這四種運(yùn)算符。
1.算術(shù)運(yùn)算
(1)加法運(yùn)算符“+”:加法運(yùn)算符為雙目運(yùn)算符,即應(yīng)有兩個(gè)量參與加法運(yùn)算,如a+b、4+8等,具有左結(jié)合性。
(2)減法運(yùn)算符“-”:減法運(yùn)算符為雙目運(yùn)算符,但“-”也可作為負(fù)值運(yùn)算符,此時(shí)為單目運(yùn)算,如-x、-5等,具有左結(jié)合性。
(3)乘法運(yùn)算符“*”:雙目運(yùn)算,具有左結(jié)合性。
(4)除法運(yùn)算符“/”:雙目運(yùn)算,具有左結(jié)合性。如果參與運(yùn)算的量均為整型,結(jié)果也為整型,舍去小數(shù);如果運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型。
【例1-4】整數(shù)和浮點(diǎn)數(shù)的除法運(yùn)算。
本例中,20/7和-20/7的結(jié)果均為整型,小數(shù)全部舍去;而20.0/7和-20.0/7由于有實(shí)型數(shù)字參與運(yùn)算,因此結(jié)果也為實(shí)型。
(5)求余運(yùn)算符(模運(yùn)算符)“%”:雙目運(yùn)算,具有左結(jié)合性。要求參與運(yùn)算的量均為整型。求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù)。
【例1-5】求余運(yùn)算。
2.關(guān)系運(yùn)算
在程序中經(jīng)常需要比較兩個(gè)量的大小關(guān)系,以決定程序下一步的工作。比較兩個(gè)量的運(yùn)算符稱為關(guān)系運(yùn)算符。
在C語言中有以下關(guān)系運(yùn)算符:
<小于
<=小于或等于
>大于
>=大于或等于
==等于
!=不等于
關(guān)系運(yùn)算符都是雙目運(yùn)算符,其結(jié)合性均為左結(jié)合。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。在六個(gè)關(guān)系運(yùn)算符中,<、<=、>、>=的優(yōu)先級(jí)相同,并高于==和!=,==和!=的優(yōu)先級(jí)相同。
關(guān)系運(yùn)算的結(jié)果是“真”和“假”,用“1”和“0”表示。如:5>0的值為“真”,即為1。而對于(a=3)>(b=5),由于3>5不成立,故其值為假,即為0。
3.邏輯運(yùn)算
C語言中提供了三種邏輯運(yùn)算符:
&&與運(yùn)算
||或運(yùn)算
!非運(yùn)算
邏輯運(yùn)算的結(jié)果也為“真”和“假”兩種,用“1”和“0”來表示。其求值規(guī)則
如下:
(1)與運(yùn)算&&:參與運(yùn)算的兩個(gè)量都為真時(shí),結(jié)果才為真,否則為假。例如,5>0&&4>2
由于5>0為真,4>2也為真,故其相與的結(jié)果也為真。
(2)或運(yùn)算||:參與運(yùn)算的兩個(gè)量只要有一個(gè)為真,結(jié)果就為真。兩個(gè)量都為假時(shí),結(jié)果為假。例如,
5>0||5>8
由于5>0為真,因此上式相或的結(jié)果也就為真。
(3)非運(yùn)算!:參與運(yùn)算的量為真時(shí),結(jié)果為假;參與運(yùn)算的量為假時(shí),結(jié)果為真。例如,
!(5>0)
的結(jié)果為假。
雖然C編譯在給出邏輯運(yùn)算值時(shí)以“1”代表“真”,“0”代表“假”,但反過來,在判斷一個(gè)量是為“真”還是為“假”時(shí),以“0”代表“假”,以非“0”的數(shù)值作為“真”。例如,
由于5和3均為非“0”,因此5&&3的值為“真”,即為1
又如,
5||0的值為“真”,即為1
4.賦值運(yùn)算
賦值語句是由賦值表達(dá)式再加上分號(hào)構(gòu)成的表達(dá)式語句,其一般形式為
變量=表達(dá)式;
(1)注意在變量說明中給變量賦初值和賦值語句的區(qū)別。
給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其他同類變量之間仍必須用逗號(hào)間隔,而賦值語句則必須用分號(hào)結(jié)尾。例如,
inta=5,b,c;
(2)在變量說明中,不允許連續(xù)給多個(gè)變量賦初值。例如,下述說明是錯(cuò)誤的:
inta=b=c=5;
必須寫為
inta=5,b=5,c=5;
而賦值語句允許連續(xù)賦值。
(3)注意賦值表達(dá)式和賦值語句的區(qū)別。
賦值表達(dá)式是一種表達(dá)式,它可以出現(xiàn)在任何允許表達(dá)式出現(xiàn)的地方,而賦值語句則不能。
下述語句是合法的:
if((x=y+5)>0)z=x;
該語句的功能是,若表達(dá)式x=y+5大于0則z=x。
下述語句是非法的:
if((x=y+5;)>0)z=x;
因?yàn)閤=y+5;是語句,不能出現(xiàn)在表達(dá)式中。
任務(wù)六C語言中的基本數(shù)據(jù)類型
在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。一個(gè)變量應(yīng)該有一個(gè)名字,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元,這就像杯子和飲料一樣,一個(gè)杯子里可以放不同的飲料,杯子可以看作存儲(chǔ)單元,不同的飲料即可視為變量的值。變量定義必須放在變量使用之前,一般放在函數(shù)體的開頭部分。要區(qū)分變量名和變量值是兩個(gè)不同的概念,如圖1.12所示。圖1.12變量名和變量值
1.整型數(shù)據(jù)
整型數(shù)據(jù)分為整型常量和整型變量。
1)整型常量
整型常量就是整常數(shù)。在C語言中使用的整常數(shù)有八進(jìn)制、十六進(jìn)制和十進(jìn)制三種。
①十進(jìn)制整常數(shù):十進(jìn)制整常數(shù)沒有前綴。其數(shù)碼為0~9。
以下各數(shù)是合法的十進(jìn)制整常數(shù):
123、-234、65535、1046;
以下各數(shù)不是合法的十進(jìn)制整常數(shù):
1a23、213-4、65/35、1b4c。
在程序中是根據(jù)前綴來區(qū)分各種進(jìn)制數(shù)的,因此在書寫常數(shù)時(shí)不要把前綴弄錯(cuò),以免造成結(jié)果不正確。
②八進(jìn)制整常數(shù):八進(jìn)制整常數(shù)必須以0開頭,即以0作為八進(jìn)制數(shù)的前綴。數(shù)碼取值為0~7。八進(jìn)制數(shù)通常是無符號(hào)數(shù)。
以下各數(shù)是合法的八進(jìn)制數(shù):
015(十進(jìn)制為13)、0101(十進(jìn)制為65)、0177777(十進(jìn)制為65535);
以下各數(shù)不是合法的八進(jìn)制數(shù):
257(無前綴0)、03A5(包含了非八進(jìn)制數(shù)碼)、-0126(出現(xiàn)了負(fù)號(hào))、086(出現(xiàn)了非八進(jìn)制數(shù)碼8)。
③十六進(jìn)制整常數(shù):十六進(jìn)制整常數(shù)的前綴為0X或0x。其數(shù)碼取值為0~9及A~F或a~f。
以下各數(shù)是合法的十六進(jìn)制整常數(shù):
0X2A(十進(jìn)制為42)、0XA0(十進(jìn)制為160)、0XFFFF(十進(jìn)制為65535);
以下各數(shù)不是合法的十六進(jìn)制整常數(shù):
3A(無前綴0X)、0X5Y(含有非十六進(jìn)制數(shù)碼)。
④整型常數(shù)的后綴。
在16位字長的機(jī)器上,基本整型常數(shù)的長度也為16位,因此表示的數(shù)的范圍也是有限定的。十進(jìn)制無符號(hào)整常數(shù)的范圍為0~65535,有符號(hào)數(shù)為-32768~+32767。八進(jìn)制無符號(hào)數(shù)的表示范圍為0~0177777。十六進(jìn)制無符號(hào)數(shù)的表示范圍為0X0~0XFFFF或0x0~0xFFFF。如果使用的數(shù)超過了上述范圍,就必須用長整型數(shù)來表示。長整型數(shù)是用后綴“L”或“l(fā)”來表示的。
例如,
十進(jìn)制長整常數(shù):
158L(十進(jìn)制為158)、358000L(十進(jìn)制為358000);
八進(jìn)制長整常數(shù):
012L(十進(jìn)制為10)、077L(十進(jìn)制為63)、0200000L(十進(jìn)制為65536);
十六進(jìn)制長整常數(shù):
0X15L(十進(jìn)制為21)、0XA5L(十進(jìn)制為165)、0X10000L(十進(jìn)制為65536)。
長整數(shù)158L和基本整常數(shù)158在數(shù)值上并無區(qū)別。但對于158L,因?yàn)槭情L整型量,C編譯系統(tǒng)將為它分配4個(gè)字節(jié)的存儲(chǔ)空間。而對158,因?yàn)槭腔菊?,只分?個(gè)字節(jié)的存儲(chǔ)空間。因此在運(yùn)算和輸出格式上要予以注意,避免出錯(cuò)。
無符號(hào)數(shù)也可用后綴表示,整型常數(shù)的無符號(hào)數(shù)的后綴為“U”或“u”。例如,
358u,0x38Au,235Lu均為無符號(hào)數(shù)。
前綴、后綴可同時(shí)使用以表示各種類型的數(shù)。例如,0XA5Lu表示十六進(jìn)制無符號(hào)長整數(shù)A5,其十進(jìn)制為165。
2)整型變量
①整型變量的定義。變量定義的一般形式為
類型說明符變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,…;
例如,
inta,b,c;(a,b,c為整型變量)
longx,y;(x,y為長整型變量)
unsignedp,q;(p,q為無符號(hào)整型變量)
在書寫變量定義時(shí),應(yīng)注意以下幾點(diǎn)。
·
允許在一個(gè)類型說明符后,定義多個(gè)相同類型的變量。各變量名之間用逗號(hào)間隔。類型說明符與變量名之間至少用一個(gè)空格間隔。
·
最后一個(gè)變量名之后必須以“;”結(jié)尾。
·
變量定義必須放在變量使用之前。一般放在函數(shù)體的開頭部分。
②類型。
·
基本型:類型說明符為int,在內(nèi)存中占2個(gè)字節(jié)。
·
短整型:類型說明符為shortint或short,所占字節(jié)和取值范圍均與基本型相同。
·
長整型:類型說明符為longint或long,在內(nèi)存中占4個(gè)字節(jié)。
3)無符號(hào)型
無符號(hào)型類型說明符為unsigned。
2.實(shí)型數(shù)據(jù)
實(shí)型也稱為浮點(diǎn)型。實(shí)型數(shù)據(jù)分為實(shí)型常量和實(shí)型變量。
1)實(shí)型常量
實(shí)型常量也稱為實(shí)數(shù)或者浮點(diǎn)數(shù)。在C語言中,實(shí)數(shù)只采用十進(jìn)制。它有兩種形式:十進(jìn)制小數(shù)形式和指數(shù)形式。
①十進(jìn)制小數(shù)形式:由數(shù)碼0~9和小數(shù)點(diǎn)組成。例如,
0.0、25.0、5.789、0.13、5.0、300.、-267.8230
等均為合法的實(shí)數(shù)。注意,必須有小數(shù)點(diǎn)。
②指數(shù)形式:由十進(jìn)制數(shù)加階碼標(biāo)志“e”或“E”以及階碼(只能為整數(shù),可以帶符號(hào))組成。其一般形式為
aEn(a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù))
其值為a*10n。如:
2.1E5(等于2.1*105)
3.7E-2(等于3.7*10-2)
0.5E7(等于0.5*107)
-2.8E-2(等于-2.8*10-2)
以下不是合法的實(shí)數(shù):
345(無小數(shù)點(diǎn))
E7(階碼標(biāo)志E之前無數(shù)字)
-5(無階碼標(biāo)志)
53.-E3(負(fù)號(hào)位置不對)
2.7E(無階碼)
標(biāo)準(zhǔn)C語言允許浮點(diǎn)數(shù)使用后綴。后綴為“f”或“F”,即表示該數(shù)為浮點(diǎn)數(shù),如356f和356是等價(jià)的。
2)實(shí)型變量
實(shí)型變量分為單精度(float型)、雙精度(double型)和長雙精度(longdouble型)三類。
在Dev-C++中,單精度型占4個(gè)字節(jié)(32位)內(nèi)存空間,其數(shù)值范圍為3.4E-38~3.4E+38,只能提供7位有效數(shù)字。雙精度型占8個(gè)字節(jié)(64位)內(nèi)存空間,其數(shù)值范圍為1.7E-308~1.7E+308,可提供16位有效數(shù)字,如表1.1所示。
實(shí)型變量定義的格式和書寫規(guī)則與整型相同。例如,
floatx,y;(x,y為單精度實(shí)型量)
doublea,b,c;(a,b,c為雙精度實(shí)型量)
3)實(shí)型數(shù)據(jù)的舍入誤差
由于實(shí)型變量是由有限的存儲(chǔ)單元組成的,因此能提供的有效數(shù)字總是有限的。如下例:
【例1-6】實(shí)型數(shù)據(jù)的舍入誤差。
①從本例可以看出,由于a是單精度浮點(diǎn)型,有效位數(shù)只有7位,故7位之后均為無效數(shù)字,即a的整數(shù)部分后4位8848為無效數(shù)據(jù)。
②同樣的,由于a的后4位是無效數(shù)據(jù),因此不能進(jìn)行有效的運(yùn)算,所以加上20得到的仍是無效數(shù)據(jù),因此b的整數(shù)部分后4位8848也是無效數(shù)據(jù)。
【例1-7】單精度和雙精度實(shí)型數(shù)據(jù)的有效數(shù)字。
①從本例可以看出,由于a是單精度浮點(diǎn)型,有效位數(shù)只有7位,而整數(shù)已占5位,故小數(shù)2位后均為無效數(shù)字,即a的后4位2031為無效數(shù)據(jù)。
②b是雙精度型,有效位為16位。但Dev-C++規(guī)定小數(shù)后最多保留6位,其余部分四舍五入,因此b只有6位小數(shù)。
③實(shí)型常數(shù)不分單、雙精度,都按雙精度double型處理。
3.字符型數(shù)據(jù)
字符型數(shù)據(jù)包括字符常量和字符變量。
字符數(shù)據(jù)的輸入/輸出除了標(biāo)準(zhǔn)輸入/輸出語句之外,還有兩個(gè)重要的庫函數(shù),即putchar()和getchar()。
1)
putchar函數(shù)(字符輸出函數(shù))
putchar函數(shù)是字符輸出函數(shù),其功能是在顯示器上輸出單個(gè)字符。其一般形式為
putchar(字符變量)
例如,
【例1-8】輸出單個(gè)字符。
運(yùn)行結(jié)果如下:
BookBo
ok
2)
getchar函數(shù)(鍵盤輸入函數(shù))
getchar函數(shù)的功能是從鍵盤上輸入一個(gè)字符。其一般形式為
getchar();
通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語句,例如,
charc;
c=getchar();
【例1-9】輸入單個(gè)字符。
使用getchar函數(shù)還應(yīng)注意以下幾個(gè)問題:
①getchar函數(shù)只能接受單個(gè)字符,輸入數(shù)字也按字符處理。輸入多于一個(gè)字符時(shí),只接收第一個(gè)字符。
②使用本函數(shù)前必須包含文件“stdio.h”。
③程序最后兩行可用下面兩行的任意一行代替:
putchar(getchar());
printf("%c",getchar());
任務(wù)七養(yǎng)成好的編程習(xí)慣——注釋
從書寫清晰,便于閱讀、理解、維護(hù)的角度出發(fā),在書寫程序時(shí)應(yīng)遵循以下規(guī)則:①一個(gè)說明或一個(gè)語句占一行。②用{}括起來的部分,通常表示程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語句的第一個(gè)字母對齊,并單獨(dú)占一行。
③低一層次的語句或說明可比高一層次的語句或說明縮進(jìn)若干格后書寫,以便看起來更加清晰,增加程序的可讀性。
④多加注釋。
在C語言源程序中,注釋可分為三種情況:第一種是在函數(shù)體內(nèi)對語句的注釋;第二種是在函數(shù)之前對函數(shù)本身的注釋;第三種是在源程序文件開始處,對整個(gè)程序的總體說明。
C語言注釋的符號(hào)為/*xxxx*/,其中/*和*/之間的內(nèi)容為注釋內(nèi)容。注意,/和*之間不能有間隔。
在編程時(shí)應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。
思?考?與?練?習(xí)
一、選擇題
1.一個(gè)C程序的執(zhí)行是從()。
A.程序的main()函數(shù)開始,直到main()函數(shù)結(jié)束
B.程序的第一個(gè)函數(shù)開始,直到最后一個(gè)函數(shù)結(jié)束
C.程序的第一個(gè)語句開始,直到最后一個(gè)語句結(jié)束
D.程序的main()函數(shù)開始,直到最后一個(gè)函數(shù)結(jié)束
2.C語言源程序的基本單位是()。
A.過程 B.函數(shù)
C.子程序 D.標(biāo)識(shí)符
3.對于C語言中字母大小寫的使用,以下敘述正確的是()。
A.C程序中所有字母都必須大寫
B.C程序中的關(guān)鍵字必須小寫,其他標(biāo)識(shí)符不區(qū)分大小寫
C.C程序中所有關(guān)鍵字必須用小寫
D.C程序中所有字母都不區(qū)分大小寫
4.C語言中的標(biāo)識(shí)符只能由英文字母、數(shù)字和下劃線3種字符組成,其中第一個(gè)字符()。
A.必須為英文字母
B.必須為下劃線
C.必須為英文字母或下劃線
D.可以為英文字母、數(shù)字和下劃線中任一種字符
5.下列選項(xiàng)中可以作為C語言用戶標(biāo)識(shí)符的一組是()。
A.void,define,word B.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 土石方工程施工合作協(xié)議范本
- 砌磚分包商合同模板
- 旅游租車協(xié)議書范本
- 蔬菜采購合同的修改記錄
- 二手房屋買賣合同范本點(diǎn)評
- 工程勞務(wù)分包結(jié)算單填寫指南
- 雞苗買賣合同示例
- 國際采購合同條款解析
- 河北工程分包協(xié)議樣本
- 保健品交易合同
- 韋尼克腦病病因介紹
- 死亡醫(yī)學(xué)證明管理規(guī)定(3篇)
- 2024-2030年中國三氧化二砷行業(yè)運(yùn)行狀況及發(fā)展可行性分析報(bào)告
- 2024年制造業(yè)代工生產(chǎn)保密協(xié)議樣本版
- 醫(yī)院維修維保工程合同范文
- 2024年度學(xué)校工作總結(jié)校長匯報(bào):六大支柱筑夢教育新征程
- 學(xué)生體質(zhì)健康狀況與體能發(fā)展質(zhì)量的幾個(gè)問題課件
- 《奇效的敷臍療法》課件
- 2024《整治形式主義為基層減負(fù)若干規(guī)定》全文課件
- 常用統(tǒng)計(jì)軟件應(yīng)用智慧樹知到期末考試答案章節(jié)答案2024年揚(yáng)州大學(xué)
- 中國法律史-第三次平時(shí)作業(yè)-國開-參考資料
評論
0/150
提交評論