版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、21世紀(jì)高職高專新概念規(guī)劃教材C語言程序設(shè)計案例教程主 編 孫街亭中國水利水電出版社瘟廉烴杉副駒徽衍字鑼臀倫盧笆濱母豎欣睜雙愁脅宿豺磨叫狡換羽俗妝箍C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第1頁,共401頁。第1章 C語言概論兵腕筍治蠶綻匝戈凳綿醋稅詳煮靈臺窒蒸霄獸努溯倍迄匙貝媽賜怪出淵被C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第2頁,共401頁。知識點(diǎn)1 C語言的發(fā)展過程 C語言是國際上廣泛流行的計算機(jī)高級語言,既可用來編寫系統(tǒng)軟件,也可用來編寫應(yīng)用軟件。C語言是在B語言的基礎(chǔ)上發(fā)展起來的,但B語
2、言過于簡單,功能有限。1972年至1973年間,貝爾實(shí)驗(yàn)室在B語言的基礎(chǔ)上設(shè)計出了C語言。最初的C語言只是為了描述和實(shí)現(xiàn)UNIX操作系統(tǒng)而設(shè)計的一種工作語言。后來,C語言經(jīng)過多次改進(jìn),其功能不斷完善,其突出的優(yōu)點(diǎn)逐漸引起了人們的注意。1977年出現(xiàn)了不依賴于具體機(jī)器的C語言編譯文本“可移植C語言編譯程序”,使C程序移植到其他機(jī)器時所需做的工作大大簡化,這也推動了UNIX操作系統(tǒng)在各種機(jī)器上的迅速實(shí)現(xiàn)。隨著UNIX的日益廣泛使用,C語言也得到迅速推廣。C語言和UNIX在發(fā)展過程中相輔相成。1978年以后,C語言已先后移植到大、中、小、微型機(jī)上。1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(ANSI)根據(jù)C語言
3、問世以來的各種版本對C語言進(jìn)行了擴(kuò)充和完善,制定了新的標(biāo)準(zhǔn),稱為ANSI C。ANSI C比原來的標(biāo)準(zhǔn)C有了很大的發(fā)展。1987年,ANSI又公布了新標(biāo)準(zhǔn)87 ANSI C。1990年,國際標(biāo)準(zhǔn)化組織ISO 接受87 ANSI C為ISO C 的標(biāo)準(zhǔn)(ISO 98991990)。目前流行的C編譯系統(tǒng)都是以它為基礎(chǔ)的。在微型機(jī)上使用的有Microsoft C、Turbo C、Quick C、Borland C等,它們的不同版本又略有差異。因此,讀者應(yīng)了解所用計算機(jī)系統(tǒng)配置的C編譯系統(tǒng)的特點(diǎn)和規(guī)定(可以參閱相關(guān)手冊)。像咳強(qiáng)岸橡諜鷹翟浮象脫炔咎傻戌嗡稱冶旬娟旗累拳遣獵縮話毆鉤搏孰坤C語言程序設(shè)計案
4、例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第3頁,共401頁。知識點(diǎn)2 C語言的特點(diǎn) C語言的主要特點(diǎn)如下:(1)語言簡潔、緊湊,使用方便、靈活。C語言一共只有32個關(guān)鍵字、9種控制語句,程序書寫形式自由,主要用小寫字母表示,壓縮了一切不必要的成分。(2)運(yùn)算符豐富。C語言中共有34種運(yùn)算符。C語言把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理,從而使C的運(yùn)算類型極其豐富,表達(dá)式類型多樣化。(3)數(shù)據(jù)類型豐富。C語言的數(shù)據(jù)類型有整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。(4)具有結(jié)構(gòu)化的控制語句(如ifelse語句、while語句、dowhi
5、le語句、switch語句、for語句)。用函數(shù)作為程序的模塊單位,便于實(shí)現(xiàn)程序的模塊化。C是良好的結(jié)構(gòu)化語言,符合現(xiàn)代編程風(fēng)格的要求。(5)語法限制不太嚴(yán)格,程序設(shè)計自由度大。例如對數(shù)組下標(biāo)越界不做檢查,由程序編寫者自己保證程序的正確性。對變量的類型使用比較靈活,例如整型數(shù)據(jù)與字符型數(shù)據(jù)在一定范圍內(nèi)可以通用。(6)C語言能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接對硬件進(jìn)行操作。因此C既具有高級語言的功能,又具有低級語言的許多功能,可用來編寫系統(tǒng)軟件。C語言的這種雙重性,使它既是成功的系統(tǒng)描述語言,又是通用的程序設(shè)計語言。有人把C語言稱為“高級語言中的低級語言”或“中級語言”
6、,意思是兼有高級語言和低級語言的特點(diǎn)。斥韻符抬繩檻場品鈾瞎柴恩奄轍徹搓顆坯龔巴眼航役販軟傅鞍錐琵勺哎酌C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第4頁,共401頁。知識點(diǎn)3 C程序的基本結(jié)構(gòu)3.1 C語言中的標(biāo)識符1C語言的字符集(1)26個英文字母(包括大小寫):az、AZ。(2)10個數(shù)字字符:09。(3)27個特殊字符:+、-、*、/、=、:、;、?、|、!、#、%、&、()、_(下劃線)、 空格、,、。共89個字符可以在C程序中出現(xiàn),不可以包含除此之外的其他字符。2C語言中的標(biāo)識符標(biāo)識符是程序設(shè)計人員用來命名程序中的一些基本單元或模塊的符號
7、。C語言規(guī)定:標(biāo)識符由字母、數(shù)字字符和下劃線組成,并以字母或下劃線開頭。定義標(biāo)識符時需要符合以下規(guī)定:(1)不能使用系統(tǒng)保留的關(guān)鍵字。(2)C語言嚴(yán)格區(qū)分大小寫,同一個字母的大小寫代表不同的標(biāo)識符。(3)為提高程序的可讀性,標(biāo)識符名稱盡量使用有意義的英文單詞,做到“見名知義”。(4)標(biāo)識符的長度(字符個數(shù))可以少于等于8個字符,有的系統(tǒng)也可以少于等于32個字符。右陪棉絆陸郎丘捕菱被瀕蔚蘭靖寥碼審覽懲吸星毋駝赦勻犢般健慰疾昏郡C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第5頁,共401頁。3.2 C程序的組成 一個C程序可以由若干個源程序文件(分別進(jìn)行
8、編譯的文件模塊)組成,一個源程序文件可以由若干個函數(shù)、編譯預(yù)處理命令,以及全局變量聲明部分組成。(1)函數(shù)是程序設(shè)計模塊化的體現(xiàn)。函數(shù)用來完成某個特定的操作,一個程序可以包含很多函數(shù)。這些函數(shù)可以是由用戶自己設(shè)計的,也可以是系統(tǒng)提供的庫函數(shù)。但程序中一定要有一個并只允許有一個主函數(shù)main()。程序從主函數(shù)開始執(zhí)行,不論main函數(shù)在整個程序中的位置如何。main函數(shù)可以放在程序最前頭,也可以放在程序最后,或者在一些函數(shù)之前,在另一些函數(shù)之后。其他函數(shù)通過主函數(shù)或被主函數(shù)已經(jīng)調(diào)用的函數(shù)調(diào)用而間接執(zhí)行。(2)一個函數(shù)由兩部分組成:1)函數(shù)的頭部,即函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函
9、數(shù)參數(shù)(形式參數(shù))名、形式參數(shù)類型。一個函數(shù)名后面必須跟一對圓括號,函數(shù)參數(shù)可以沒有,如main()。2)函數(shù)體,即函數(shù)頭部下面的大括號內(nèi)的部分。如果一個函數(shù)內(nèi)有多個大括號,則最外層的一對 為函數(shù)體的范圍。函數(shù)體一般包括聲明部分和執(zhí)行部分。聲明部分主要用于定義所用到的變量,執(zhí)行部分則由若干個語句組成。眼襄鈴碟咋蜜單滅樞健含哮牌畦蹲衰卞耀析翰淮窺鎬魚閹刨爛五瘍筏杜狹C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第6頁,共401頁。即函數(shù)一般形式如下:函數(shù)類型 函數(shù)名(參數(shù)類型 參數(shù)1,參數(shù)類型 參數(shù)2,) 聲明部分 執(zhí)行部分示例如下:int add(in
10、t a,int b) int c; c=a+b; (3)C程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句可以分寫在多行上。C程序沒有行號,每個語句和數(shù)據(jù)定義的最后必須有一個分號。分號是C語句的必要組成部分。(4)C語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成的。C語言對輸入輸出實(shí)行“函數(shù)化”。(5)C程序中為了說明程序的功能或某部分的含義,可以帶注釋。注釋能幫助讀者閱讀和理解程序。程序編譯時,注釋被忽略,它不產(chǎn)生代碼行。注釋內(nèi)容寫在一對符號“/*”和“*/”之間,這是傳統(tǒng)C語言中的注釋方式,其中的內(nèi)容可以是一行或幾行。自符號“/*”開始到“*/”符
11、號結(jié)束,其間的內(nèi)容都被認(rèn)為是注釋內(nèi)容。舊瞧紡蟲廉挺填添篷鑿豹賒汁忽檀瀕昆請次奶倦痘攝阿蹬慕摟脊軒隸床鋇C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第7頁,共401頁。知識點(diǎn)4 編譯預(yù)處理命令 ANSI C標(biāo)準(zhǔn)規(guī)定可以在C源程序中加入一些編譯預(yù)處理命令,以改進(jìn)程序設(shè)計環(huán)境,提高編程效率。這些預(yù)處理命令是由ANSI C統(tǒng)一規(guī)定的,但是它不是C語言本身的組成部分,不能直接對它們進(jìn)行編譯。必須在對程序進(jìn)行通常的編譯(包括詞法和語法分析、代碼生成、優(yōu)化等)之前,先對程序中的這些特殊命令進(jìn)行“預(yù)處理”,即根據(jù)預(yù)處理命令對程序作相應(yīng)的處理。經(jīng)過預(yù)處理后程序不再包括
12、預(yù)處理命令,最后再由編譯程序?qū)︻A(yù)處理后的源程序進(jìn)行通常的編譯處理,得到可供執(zhí)行的目標(biāo)代碼。C語言提供的預(yù)處理功能主要有以下3種:宏定義、文件包含和條件編譯。為了與一般C語句相區(qū)別,這些命令以符號“#”開頭。答舌棍衰教焦樟案蹈慰隋亮涂妝蓖靜晰峨部隙掏幀庭教圓則冷哪蘭征招醉C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第8頁,共401頁。4.1 宏定義1不帶參數(shù)的宏定義 用一個指定的標(biāo)識符(即名字)來代表一個字符串,它的一般形式為:#define 標(biāo)識符 字符串例如:#define PI 3.1415926 其作用是指定用標(biāo)識符PI來代替“3.141592
13、6”這個字符串,在編譯預(yù)處理時,將程序中在該命令以后出現(xiàn)的所有PI都用“3.1415926”代替。這種方法使用戶能以一個簡單的名字代替一個長的字符串,因此把這個標(biāo)識符(名字)稱為“宏名”,在預(yù)編譯時將宏名替換成字符串的過程稱為“宏展開”。瘡獰范諷掠鵲穩(wěn)肉紫候莆韋陵鵑狂懷陋又琶會矮眶辰叁碩漲弓價刻排儀磊C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第9頁,共401頁。2帶參數(shù)的宏定義 不是進(jìn)行簡單的字符串替換,替換時還要進(jìn)行參數(shù)替換。其定義的一般形式為:#define 宏名(參數(shù)表) 字符串字符串中包含在括號中所指定的參數(shù),如:#define s(a,b
14、) a*barea=s(3,2);替換時,將3傳給a,2傳給b,a*b的值賦給area。谷無磨鈍棺宜臭窄賭嘲賊綻匣法恤沿歲舌披蘿簿哆獲男那肝幾嗣們腋舀下C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第10頁,共401頁。4.2 “文件包含”處理 所謂“文件包含”處理是指一個源文件可以將另外一個源文件的全部內(nèi)容包含進(jìn)來,即將另外的文件包含到本文件之中。C語言提供了#include命令用來實(shí)現(xiàn)“文件包含”的操作。其一般形式為:#include 文件名或#include 在一個被包含文件中又可以包含另一個被包含文件,即文件包含是可以嵌套的。在#include
15、命令中,文件名可以用雙引號或尖括號括起來,二者的區(qū)別是用尖括號形式時,系統(tǒng)到存放C庫函數(shù)頭文件的目錄中尋找要包含的文件,這稱為標(biāo)準(zhǔn)形式;用雙引號形式時,系統(tǒng)先在用戶當(dāng)前目錄中尋找要包含的文件,若找不到,再按標(biāo)準(zhǔn)形式查找(即再按尖括號的方式查找)。一般來說,如果為調(diào)用庫函數(shù)而用#include命令來包含相關(guān)的頭文件,則用尖括號,以節(jié)省查找時間;如果要包含的是用戶自己編寫的文件(這種文件一般都在當(dāng)前目錄中),一般用雙引號。魏慰購譴蘊(yùn)促袒鏟梧魄柿凰澈翻扯錫攆寓闖悍癬邱旦沙訣貌哪飼準(zhǔn)裹乘脆C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第11頁,共401頁?!景?/p>
16、例1-1】求兩數(shù)之和。/*ex1_1.c the sum of a+b*/#include stdio.hmain() int a,b,sum; printf(Enter two int numbers:n); scanf(%d%d,&a,&b); sum=a+b; printf(sum=%dn,sum);程序的運(yùn)行的結(jié)果如下:Enter two int numbers:1122sum=33爽櫥莖顏攬寢穩(wěn)件傘媳妥廬蔥半只賭遇叮頒薪廚未膝手胺建戍齋戍序堡黔C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第12頁,共401頁。 本程序的作用是求兩個整數(shù)a和b
17、之和sum。本例中程序開頭用了如下注釋:/*ex1_1.c the sum of a+b*/說明:程序用來求a加b的和。本例中有文件包含命令:#include stdio.h 其中stdio.h是一個頭文件,也稱標(biāo)準(zhǔn)的輸入輸出頭文件。程序中由于要用到數(shù)據(jù)輸入函數(shù)scanf()和輸出函數(shù)printf(),而這兩個函數(shù)的說明系統(tǒng)已經(jīng)存放在文件stdio.h中,因此要包含該頭文件。所謂包含就是把頭文件代碼引入程序中,由于這個工作是在編譯程序前完成的,所以稱為編譯預(yù)處理命令。/*/表示注釋部分,既可以用漢字表示注釋,也可以用英語或漢語拼音作注釋。注釋只是給人看的,對編譯和運(yùn)行不起作用。注釋可以加在程序
18、中的任何位置。在函數(shù)體的聲明部分,定義變量a、b和sum,指定它們?yōu)檎停╥nt)變量。程序中scanf函數(shù)的作用是輸入a和b的值?!?d”是輸入輸出的“格式字符串”,用來指定輸入輸出時的數(shù)據(jù)類型和格式,輸入時“%d”表示“以十進(jìn)制整數(shù)形式輸入數(shù)據(jù)”。&a和&b中的“&”的含義是“取地址”,此scanf函數(shù)的作用是將兩個數(shù)值分別輸入到變量a和b的地址所標(biāo)志的單元中,也就是輸入給變量a和b。這種形式是與其他語言不同的。接著執(zhí)行賦值語句,使sum的值為a+b。printf函數(shù)中雙引號內(nèi)的“sum=%d”,在輸出時,其中“%d”將由sum的值取代,“sum=”原樣輸出。程序運(yùn)行時,從鍵盤輸入數(shù)據(jù)11
19、、22分別給a和b,輸出變量sum之值33。洞務(wù)漢昨吠躊懈濺閹襄炸鐵枝睛愈滬杰必渾煎喝映噎磺乳白跪法渺映曾倍C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第13頁,共401頁。知識點(diǎn)5 C程序的上機(jī)步驟 為了使計算機(jī)能按照人們的意志進(jìn)行工作,必須根據(jù)問題的要求編寫出相應(yīng)的程序。所謂程序,就是一組計算機(jī)能識別和執(zhí)行的指令。每一條指令使計算機(jī)執(zhí)行特定的操作。用高級語言編寫的程序稱為“源程序”。從根本上說,計算機(jī)只能識別和執(zhí)行由0和1組成的二進(jìn)制的指令,而不能識別和執(zhí)行用高級語言編寫的指令。為了使計算機(jī)能執(zhí)行高級語言源程序,必須先用一種稱為“編譯程序”的軟件
20、把源程序翻譯成二進(jìn)制形式的“目標(biāo)程序”,然后將該目標(biāo)程序與系統(tǒng)的函數(shù)庫和其他目標(biāo)程序連接起來,形成可執(zhí)行的目標(biāo)程序。例如,上例編輯后得到一個源程序文件ex1_1.c,然后在進(jìn)行編譯時再將源程序文件ex1_1.c輸入,經(jīng)過編譯得到目標(biāo)程序文件ex1_1.obj,再將目標(biāo)程序文件ex1_1.obj輸入內(nèi)存,與系統(tǒng)提供的庫函數(shù)等連接,得到可執(zhí)行的目標(biāo)程序文件ex1_1.exe,最后把ex1_1.exe調(diào)入內(nèi)存并使之運(yùn)行。下面主要就用Turbo C 運(yùn)行C程序的步驟作一下簡單介紹。罰虜哥違鄲靡費(fèi)愁嘻盧浙形聾次袁鋅苦幫霜否包虜窟獄苔龍邁晃更胃苫疊C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計
21、案例精品教程-電子教案-孫街亭第14頁,共401頁。 Turbo C是在微機(jī)上廣泛使用的編譯程序,它具有方便、直觀、易用的界面和豐富的庫函數(shù)。它向用戶提供一個集成環(huán)境,把程序的編輯、編譯、連接和運(yùn)行等操作全部集中在一個界面上進(jìn)行,使用十分方便。為了能使用Turbo C,必須先將Turbo C編譯程序裝入磁盤的某一目錄,例如放在C盤根目錄的下一級TC子目錄下。(1)調(diào)用Turbo C程序。如果用戶的當(dāng)前目錄是Turbo C編譯程序所在的子目錄(如TC子目錄),則只需從鍵盤鍵入tc命令即可:C:TCtc 屏幕上出現(xiàn)Turbo C集成環(huán)境,如圖1.1所示。從圖中可以看到,在集成環(huán)境的上部有一行“主菜
22、單”,其中包括8個菜單項:File、Edit、Run、Compile、Project、Option、Debug、break/watch。 用戶可以通過以上菜單項來選擇使用Turbo C集成環(huán)境所提供的各項主要功能。以上8個菜單項分別代表:文件操作、編輯、運(yùn)行、編譯、項目文件、選項、調(diào)試、中斷/觀察等功能。用鍵盤上的“”和“”鍵可以選擇菜單欄中所需要的菜單項,被選中的項以“反相”形式顯示(例如主菜單中的各項原來以白底黑字顯示,被選中時改為以黑底白字顯示)。此時若按Enter鍵,就會出現(xiàn)一個下拉菜單。例如在選中File菜單并按Enter鍵后,屏幕上File下面出現(xiàn)下拉菜單,如圖1.2所示。它是一個
23、子菜單,提供多項選擇。可以用“”鍵選擇所需要的項。例如選擇New并按Enter鍵,表示要建立一個新的C源程序。如果選擇Load并按Enter鍵,則表示要調(diào)入一個已有的源文件,此時屏幕上出現(xiàn)一個對話框,如圖1.3所示,要求你輸入一個文件的名字。用戶可以輸入一個文件名,如ex1_1.c,如果已存在此文件,則系統(tǒng)會將此文件調(diào)入內(nèi)存并顯示在屏幕上。此時自動轉(zhuǎn)為編輯(Edit)狀態(tài)。如果原來不存在此文件,則系統(tǒng)會建立一個以指定的名字命名的新文件。汞敵墓顛鎢貸管抽箔橡蓑蟻墾肉晉稿閹斬排率澡夫俠關(guān)育費(fèi)媒濟(jì)駕諜傷柬C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第15頁
24、,共401頁。圖1.1 Turbo C集成開發(fā)環(huán)境科惦蓑灌世猙她踏唬忻吳掛噸掙何咸聊門甘英渦爺久絲詐疼生貶頓澀綻啦C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第16頁,共401頁。圖1.2 File下面出現(xiàn)的下拉菜單 盤媒每揚(yáng)奠裙學(xué)峨屹職偽鹽屆崗虛橙赤撒遺掩候蔑疥血琉箍靖濫傘肘吹甭C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第17頁,共401頁。圖1.3 調(diào)入源文件 灘侗賂暈廈增恕嫡肢耳蔫拆悍候鐮氓循窗絨剎臻毗叫塑儀威報漾純緣駐陛C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教
25、案-孫街亭第18頁,共401頁。(2)編輯源文件。在編輯(Edit)狀態(tài)下可以根據(jù)需要輸入或修改源程序。(3)編譯源程序。選擇CompileCompile to OBJ命令,則進(jìn)行編譯,得到一個后綴為.obj的目標(biāo)程序。然后再選擇CompileLink EXE file命令進(jìn)行連接操作,可以得到一個后綴為.exe的可執(zhí)行文件。也可以將編譯和連接合為一個步驟進(jìn)行。選擇CompileMake EXE file命令或按F9鍵,即可一次完成編譯和連接,在屏幕上會顯示編譯或連接時有無錯誤和有幾個錯誤。此時按任何一個鍵,“編譯信息框”會消失,屏幕上會恢復(fù)顯示源程序,光標(biāo)停留在出錯之處。在屏幕的下半部分顯示
26、出有錯誤的行和錯誤的原因。根據(jù)此信息修改源程序。修改完畢認(rèn)為無錯后,再按F9鍵再次進(jìn)行編譯和連接,如此反復(fù)進(jìn)行,直到不顯示出錯為止。(4)執(zhí)行程序。按F10鍵,在窗口上部的主菜單中的某一項處出現(xiàn)“反相”顯示(黑色亮塊)。 用“”鍵將亮塊移到Run上按Enter鍵,在其下拉菜單中選擇Run項,或者直接按Ctrl+F9鍵,系統(tǒng)就會執(zhí)行已編譯好的目標(biāo)文件。此時,TC集成環(huán)境窗口消失,屏幕上顯示出程序運(yùn)行時的輸出結(jié)果。如果程序需要輸入數(shù)據(jù),則應(yīng)在此時從鍵盤輸入所需數(shù)據(jù),然后程序會接著執(zhí)行,輸出結(jié)果。 如果發(fā)現(xiàn)運(yùn)行結(jié)果不對,要重新修改源程序,可以再按F10鍵,并用“”鍵使亮塊移到Edit處,按Enter
27、鍵即進(jìn)入編輯狀態(tài),可以根據(jù)需要修改源程序,并重復(fù)(2)(4)步,直到得到正確結(jié)果為止。因蒼育戰(zhàn)慢拌撫蔫泡埃老族話奔腿隔條滴廉腕氯膿波挺挾死雹姑醫(yī)轟轍匹C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第19頁,共401頁。(5)可以用Alt和X鍵(同時按這兩個鍵)脫離Turbo C,回到命令提示符狀態(tài)。此時,可以用DOS命令顯示源程序和運(yùn)行程序:C:TC TYPE ex1_1.c (列出源程序清單)C:TC ex1_1.1 (執(zhí)行目標(biāo)程序 tc1.exe) 如果想再修改源程序,可以重新執(zhí)行步驟(1),并輸入源程序文件名。 用Visual C+ 6.0集成開
28、發(fā)環(huán)境使用鼠標(biāo)操作,設(shè)計功能強(qiáng)大,而且字符串和注釋可以用中文,但該環(huán)境對初學(xué)者來說有一定的難度,讀者可根據(jù)自己的具體情況選用。犀苯眨狡迎訖著痰傈覓萬意疏拳櫻枕彝圾筆惦瀉瘤賂礫牽鍵爾薦豪殺萊尿C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第20頁,共401頁。第2章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式瘋迪申俘裔賢歷骨距膨帖甚賭抒銷聚沃題傣豁銥次鳳每扯墟瘦刀捶己賜孵C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第21頁,共401頁。知識點(diǎn)1 C語言的數(shù)據(jù)類型 C語言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)的。C語言的數(shù)據(jù)類型可以分為基
29、本類型和構(gòu)造類型兩種。其中基本類型有:整型,字符型,實(shí)型(也叫浮點(diǎn)型,又可分為單精度型和雙精度型兩種),枚舉類型,指針類型和空類型;構(gòu)造類型有:數(shù)組類型,結(jié)構(gòu)體類型,共用體類型等。 C語言中數(shù)據(jù)有常量與變量之分,它們分別屬于以上這些類型。由以上這些數(shù)據(jù)類型還可以構(gòu)成更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。例如利用指針和結(jié)構(gòu)體類型可以構(gòu)成表、樹、棧等復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。在程序中對用到的所有數(shù)據(jù)都必須指定其數(shù)據(jù)類型。及恬乖凰垮捌旬塘永日弟脂勞囚牽四檔盯弟吃彰訣涉奎獰儈役吾紛凌制伊C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第22頁,共401頁。1.1 常量和變量1常量和符號常量
30、在程序運(yùn)行過程中,其值不能被改變的量稱為常量。常量可以分為不同的類型,如10、0、-10為整型常量,12.34、-12.34為實(shí)型常量,D、d為字符型常量。常量一般從其字面形式即可判別,這種常量稱為直接常量;也可以用一個標(biāo)識符代表一個常量,即符號常量。符號常量在使用前需要先用編譯預(yù)處理命令定義,如:#define PI 3.1415926 在此定義后,在當(dāng)前程序中需要使用3.1415926的地方都可以用符號常量PI代替。 習(xí)慣上,符號常量名用大寫,變量名用小寫,以示區(qū)別。但這不是規(guī)定,僅是習(xí)慣而已。陛痕鄒腹害乳亥綿遲聚術(shù)男孿言縛怯蘑隱描鉆維彭剝拉崇嗣倍睡佃段亦纏C語言程序設(shè)計案例精品教程-電子
31、教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第23頁,共401頁。2變量 在程序運(yùn)行過程中,其值可以改變的量稱為變量。一個變量應(yīng)該有一個名字,在內(nèi)存中占據(jù)一定的存儲單元。在該存儲單元中存放變量的值。變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列稱為標(biāo)識符。簡單地說,標(biāo)識符就是一個名字。如sum、average是合法的標(biāo)識符,也是合法的變量名,而123abc、x+y等是不合法的標(biāo)識符和變量名。變量在使用前需要進(jìn)行定義,即先定義,后使用。變量的定義格式如下:類型 變量名列表;例如:int a,b,c; /* 定義a、b、c為整型變量*/簍汗廢縛扔矣踞奶翅濾傻幕間憶茄蜘
32、糙進(jìn)童重怕蝸堪鮮恒辣綱桓泣仗晌桐C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第24頁,共401頁。3整型常量的表示方法 整型常量即整常數(shù)。C語言中整常數(shù)可用以下3種形式表示:(1)十進(jìn)制整數(shù)。如100、-123、0。(2)八進(jìn)制整數(shù)。以0開頭的數(shù)是八進(jìn)制數(shù)。如012表示八進(jìn)制數(shù)12,即(12)8,其值等于十進(jìn)制數(shù)10。(3)十六進(jìn)制整數(shù)。以0 x開頭的數(shù)是十六進(jìn)制數(shù)。如0 x12,代表十六進(jìn)制數(shù)12,即(12)16,其值等于十進(jìn)制數(shù)18。情絡(luò)街眺婉約隆轅勻賣搓彝緝鵑趕枝蛇在衰翅滋撩塔現(xiàn)碴諾憋阻譽(yù)涼跟譚C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言
33、程序設(shè)計案例精品教程-電子教案-孫街亭第25頁,共401頁。4整型變量的定義方法 整型變量的基本類型符為int??梢愿鶕?jù)數(shù)值的范圍將變量定義為基本整型、短整型或長整型。在int 之前可以根據(jù)需要分別加上修飾符:short(短整型)或long(長整型),因此有以下3種整型變量:(1)基本整型,以int表示。(2)短整型,以short int或short表示。(3)長整型,以long int或long表示。若再加上修飾符,可以使用以下6種整型變量,即:有符號基本整型:signed int。無符號基本整型:unsigned int。有符號短整型:signed short int。無符號短整型:uns
34、igned short int。有符號長整型:signed long int。無符號長整型:unsigned long int。 以上定義變量格式中,方括號及其中的內(nèi)容可以省略。以下是定義整型變量舉例:int a,b; /*指定變量a、b為整型變量,每個整型數(shù)據(jù)在內(nèi)存中占據(jù)2個字節(jié)單元 (TC環(huán)境)或4個字節(jié)單元(VC環(huán)境)*/unsigned int c,d; /*指定變量c、d為無符號短整型變量,每個短整型數(shù)據(jù)及無符號短整型 數(shù)據(jù)在內(nèi)存中均占據(jù)2個字節(jié)*/long e,f; /*指定變量e、f為長整型變量,每個長整型數(shù)據(jù)在內(nèi)存中占據(jù)4個字節(jié)單元*/a=10; /*給a賦以整數(shù)10*/ 表2
35、.1列出了整數(shù)類型的數(shù)據(jù)的取值范圍。 羽熟臣麥奸咱叫峽繭躺真彪爽題蕊隴銑嗎燼瞄竭癰章縷斧丈購話畜袋氰何C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第26頁,共401頁。表2.1 整數(shù)類型數(shù)據(jù)的取值范圍類型 取值范圍 TC環(huán)境 VC環(huán)境signed int -3276832767 -21474836482147483647unsigned int 065535 04294967295signed short int -3276832767 -3276832767unsigned short int 065535 065535long int -2147
36、4836482147483647 -21474836482147483647unsigned long int 04294967295 04294967295簡旬兵捉鑒椿殃揖示瞇鷹閑越碧已分狼乍目凈篡淳盯跡辦己葷槍沉瑰砸螞C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第27頁,共401頁。5實(shí)型常量的表示方法 實(shí)數(shù)又稱浮點(diǎn)數(shù)。實(shí)數(shù)有兩種表示形式:(1)十進(jìn)制小數(shù)形式。它由數(shù)字和小數(shù)點(diǎn)組成(注意必須有小數(shù)點(diǎn))。如1.23、0.123、12.3、0.0都是十進(jìn)制小數(shù)形式。(2)指數(shù)形式。如1.23e2或12.3e1都代表1.23102。但注意字母e(或E)
37、之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)。 我由央欣殖抗瘴緊住隸個晦嗅裝恥控毒戚掉范包績糾劫奧王橙丘溝券熊嚎C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第28頁,共401頁。6實(shí)型變量的定義方法 C語言中實(shí)型變量常用的有單精度型(float)、雙精度型(double)兩類。 以下是定義實(shí)型變量舉例: float x,y; /*指定變量x、y為單精度實(shí)型變量,每 個單精度實(shí)型數(shù)據(jù)在內(nèi)存中占據(jù)4個 字節(jié)單元,自左向右前7位數(shù)據(jù)有效*/ double z; /*指定變量z為雙精度實(shí)型變量,每個雙精度實(shí)型數(shù)據(jù)在內(nèi)存中占據(jù)8個 字節(jié)單元,自左向右前16位數(shù)據(jù)有
38、效*/ x=12.34; /*給x賦以單精度實(shí)數(shù)12.34*/ z=1234.5678; /*給z賦以雙精度實(shí)數(shù)1234.5678*/須躥蔗桐寫倍譴煌腳跺油逆蹄厲護(hù)聊聽褐稿士絨丑棵梗債星亂晾荒擁活虛C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第29頁,共401頁。7字符常量 C語言中的字符常量是用單引號(即撇號)括起來的一個字符。如a、A、!、 等都是字符常量。注意,a和A是不同的字符常量。除了以上形式的字符常量外,C語言中還允許使用一種特殊形式的字符常量,即以一個“”開頭的字符序列。例如,前面已經(jīng)遇到過的在printf函數(shù)中的n,它代表一個“換行”
39、符。這是一種“控制字符”,即轉(zhuǎn)義字符,在屏幕上是不能顯示的,在程序中也無法用一個一般形式的字符表示,只能采用特殊形式來表示。常用的轉(zhuǎn)義字符如表2.2所示。線內(nèi)斟黑田炊寇韭履篆耿圓砒火閹遍芽熾演炒映塑賴謅耙熙燕砰衛(wèi)病燎喂C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第30頁,共401頁。表2.2 常用轉(zhuǎn)義字符及其含義符號含義n換行,將當(dāng)前位置移到下一行開頭t水平制表(橫向跳格)b退格,將當(dāng)前位置移到前一列r回車,將當(dāng)前位置移到本行開頭f換頁,將當(dāng)前位置移到下頁開頭反斜杠字符()單撇號()“雙撇號(”)ddd13位八進(jìn)制數(shù)所代表的字符xhh12位十六進(jìn)制數(shù)
40、所代表的字符狹喀泡念魂海己俠鬃芽汰寨暇招遷撾郎薛絮疵傍圈裂孿奇憋撬妻婪歡刷溝C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第31頁,共401頁。8字符變量 字符型變量用來存放字符常量,一個字符型的變量中只能存放一個字符,不能存放一個字符串。字符型變量的定義形式如下: char ch1,ch2,ch3; /* 指定變量ch1、ch2、 ch3為字符型變量,每個字符型數(shù)據(jù)在內(nèi)存中 占據(jù)1個字節(jié)單元 */ch1=a;ch2=101;ch3=x41 ; /* 給ch1賦以字符a,給ch2賦以字符A,給ch3賦以字符A * /伴若齡抹錳艱膨凸宜震擯渣也勺弱漱似鞭
41、哉詫跟漿惦翟蘑痙財丟臆胺廚淪C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第32頁,共401頁。9字符串常量 字符常量是由一對單引號括起來的單個字符。C語言除了允許使用字符常量外,還允許使用字符串常量。字符串常量是一對雙引號括起來的字符序列。例如hello!、china、A、1.235等都是字符串常量??梢杂幂敵龊瘮?shù)輸出一個字符串,例如:printf(how do you do.); 不要將字符常量與字符串常量混淆。a是字符常量,a是字符串常量,二者不同。可以使用一個字符型的數(shù)組存放一個字符串。在字符串的最后,系統(tǒng)會自動添加0作為字符串的結(jié)束標(biāo)志。字符
42、串常量china在內(nèi)存中的實(shí)際存放形式為china0。暇箔學(xué)澆揩泉頃學(xué)博遲派占郭匣蓬渭面筋獺躺失飲惜抹銷俘蔭猜筷澤戶握C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第33頁,共401頁。1.2 數(shù)據(jù)類型轉(zhuǎn)換 表達(dá)式中不同類型的數(shù)據(jù)運(yùn)算時可以進(jìn)行轉(zhuǎn)換,數(shù)據(jù)類型轉(zhuǎn)換可分自動(隱式)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換兩種。1自動轉(zhuǎn)換 一般兩個操作數(shù)運(yùn)算時,要求兩個操作數(shù)的類型相同,若不相同則系統(tǒng)自動將低類型數(shù)據(jù)轉(zhuǎn)換成高類型數(shù)據(jù),然后實(shí)現(xiàn)運(yùn)算得高類型數(shù)據(jù)結(jié)果(在轉(zhuǎn)換過程中數(shù)據(jù)的精度保持不變)。各種數(shù)據(jù)類型的高低順序如圖2.1所示。圖中橫向向左的箭頭表示必定的轉(zhuǎn)換,如字符數(shù)據(jù)必定先
43、轉(zhuǎn)換為整數(shù),short型轉(zhuǎn)換為int型,float型數(shù)據(jù)在運(yùn)算時一律先轉(zhuǎn)換成雙精度型,以提高運(yùn)算精度(即使是兩個float型數(shù)據(jù)相運(yùn)算,也都先轉(zhuǎn)化成double型,然后再運(yùn)算)。縱向的箭頭表示當(dāng)運(yùn)算對象為不同類型時轉(zhuǎn)換的方向。例如int型與double型數(shù)據(jù)進(jìn)行運(yùn)算,先將int型的數(shù)據(jù)直接轉(zhuǎn)換成double型,然后在兩個同類型(double型)數(shù)據(jù)間進(jìn)行運(yùn)算,結(jié)果為double型。注意箭頭方向只表示數(shù)據(jù)類型級別的高低,由低向高轉(zhuǎn)換。不要理解為int型先轉(zhuǎn)化成unsigned int型,再轉(zhuǎn)化成long型,再轉(zhuǎn)化成double型。究蕊壟漸據(jù)仗汽陌零米砷凜庶六答蒂冀忍鑼申犬卻在先繪磷潛宰飲鍛喬找C
44、語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第34頁,共401頁。圖2.1 數(shù)據(jù)類型轉(zhuǎn)化每豆兢綏層淄搗抬貳拭空礙浚切寞賦琺特卵卜扁捏啡淋躬恢妥爹饑涌臉棍C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第35頁,共401頁。2強(qiáng)制轉(zhuǎn)換 強(qiáng)制轉(zhuǎn)換格式如下:(類型)表達(dá)式 或(類型)(表達(dá)式) 其作用是把表達(dá)式的值強(qiáng)制轉(zhuǎn)換成所要求的數(shù)據(jù)類型,如:double x=1.23;int a,b;a=(int)x+2.9;b=(int)(x+2.9); 以上倒數(shù)第二行語句先將x強(qiáng)制轉(zhuǎn)換成整型數(shù)據(jù)1,即小數(shù)部分被舍棄后與實(shí)數(shù)2.
45、9相加得實(shí)數(shù)3.9,再將其和的整數(shù)部分賦值給變量a,a的值為3。最后一行語句先將x和2.9相加得4.13,再將其強(qiáng)制轉(zhuǎn)換成整型數(shù)據(jù)4,即小數(shù)部分被舍棄后再賦值給變量a,a的值為4。注意數(shù)據(jù)類型轉(zhuǎn)換后x的值仍然是1.23。另外在賦值表達(dá)式中,當(dāng)左邊的變量和右邊表達(dá)式的值類型不一致時,也有一個類型強(qiáng)制轉(zhuǎn)換的問題,此時一律將右邊表達(dá)式值的類型強(qiáng)制轉(zhuǎn)換成跟左邊變量的類型相同,然后賦值。如a=x;,運(yùn)算時將右邊變量x的值強(qiáng)制轉(zhuǎn)換成int類型值1后賦值給整型變量a,但x的值仍然是1.23。注意,當(dāng)含字節(jié)數(shù)多的類型轉(zhuǎn)換成字節(jié)數(shù)少的數(shù)據(jù)類型時,可能會引起精度的降低或出現(xiàn)錯誤的結(jié)果。年雞努揉杖尖碑整曲喝臆鄰珠簧
46、涉橡侖救疵船泌衫菏影櫥拖枕攙結(jié)磋馴背C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第36頁,共401頁?!景咐?-1】分析下面程序的輸出結(jié)果并上機(jī)驗(yàn)證。#include stdio.hmain() int a=10,b=12345; float x=12.3456,y=-789.1234; char c=A; long n=1234567; unsigned u=65535; printf(%d,%dn,a,b); printf(%4d,%4dn,a,b); printf(%f,%fn,x,y); printf(%-10f,%-10fn,x,y); p
47、rintf(%7.2f,%7.2f,%.3f,%.3f,%4f,%4fn,x,y,x,y,x,y); printf(%e,%10.2en,x,y); printf(%c,%d,%o,%xn,c,c,c,c); printf(%ld,%lo,%xn,n,n,n); printf(%u,%o,%x,%dn,u,u,u,u); printf(%s,%5.3sn,computer,computer);韌固窩訓(xùn)旬展撰叫蠅句敖贊畔成郝瘓鞘屜干空逞呻譯擁劫憶芯肪浦院療治C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第37頁,共401頁。知識點(diǎn)2 C語言的運(yùn)算符和表達(dá)
48、式 C語言的運(yùn)算符范圍很寬,把除了控制語句和輸入輸出以外的幾乎所有的基本操作都作為運(yùn)算符處理,例如將符號“=”作為賦值運(yùn)算符,方括號作為下標(biāo)運(yùn)算符等。C的運(yùn)算符有以下幾類:算術(shù)運(yùn)算符:+、-、*、/、%、+、-。關(guān)系運(yùn)算符:、=、=、!=。邏輯運(yùn)算符:!、&、|。位運(yùn)算符:、|、&。賦值運(yùn)算符:=及其擴(kuò)展賦值運(yùn)算符。條件運(yùn)算符:?:。逗號運(yùn)算符:,。指針運(yùn)算符:*和&。求字節(jié)數(shù)運(yùn)算符:sizeof。強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(類型)。分量運(yùn)算符:、-。下標(biāo)運(yùn)算符:。其他:如函數(shù)調(diào)用運(yùn)算符()。役蘇勒凰碗上尸湘閏侈謎煤浩館默掂瓢怨純噓既祝梳噬媳手冀敖登件嫁遮C語言程序設(shè)計案例精品教程-電子教案-孫街亭
49、C語言程序設(shè)計案例精品教程-電子教案-孫街亭第38頁,共401頁。2.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式1算術(shù)運(yùn)算符+:加法運(yùn)算符或正值運(yùn)算符,如1+2、+10。-:減法運(yùn)算符或負(fù)值運(yùn)算符,如1-2、-10。*:乘法運(yùn)算符,如1*2。/:除法運(yùn)算符,如5/3。%:模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如5%3的值為2。 需要說明的是,兩個整數(shù)相除的結(jié)果為整數(shù),如5/3的結(jié)果值為1,舍去小數(shù)部分。但是,如果除數(shù)或被除數(shù)中有一個為負(fù)值,則舍入的方向是不固定的。例如,-5/3在有的機(jī)器上得到結(jié)果-1,有的機(jī)器則給出結(jié)果-2。多數(shù)機(jī)器采取“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠
50、攏。如果參加+、-、*、/運(yùn)算的兩個數(shù)中有一個數(shù)為實(shí)數(shù),則結(jié)果是double型,因?yàn)樗袑?shí)數(shù)都按double型進(jìn)行運(yùn)算。墅障敢冉簿晶翹欽晚銥掄靖鈍典絆羅旅俱桶構(gòu)坡寧爭瓦墟盒羨但輕階況環(huán)C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第39頁,共401頁。2算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性 用算術(shù)運(yùn)算符和括號將運(yùn)算對象(也稱操作數(shù))連接起來的、符合C語言語法規(guī)則的式子稱為C算術(shù)表達(dá)式。運(yùn)算對象包括常量、變量、函數(shù)等。例如,下面是一個合法的C算術(shù)表達(dá)式:a*b/c-1.2+A。 C語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性。在表達(dá)式求值時,先按運(yùn)算符的優(yōu)先級別高低次
51、序執(zhí)行,例如先乘除后加減。如表達(dá)式a-b*c,b的左側(cè)為減號,右側(cè)為乘號,而乘號優(yōu)先于減號,因此,相當(dāng)于a-(b*c)。如果在一個運(yùn)算對象兩側(cè)的運(yùn)算符的優(yōu)先級別相同,則按規(guī)定的“結(jié)合方向”處理。如a-b+c,先做a-b,再將其結(jié)果和c相加得到最后結(jié)果。 C規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性),算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,即先左后右。“自左至右的結(jié)合方向”又稱“左結(jié)合性”,即運(yùn)算對象先與左面的運(yùn)算符結(jié)合。以后可以看到有些運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆保从医Y(jié)合性(例如賦值運(yùn)算符)。如果一個運(yùn)算符的兩側(cè)的數(shù)據(jù)類型不同,則會先自動進(jìn)行類型轉(zhuǎn)換,使二者具有同一種類型,然后再進(jìn)行運(yùn)算。硯譴臭兇琴
52、濰蹦嫉猶院棄茵構(gòu)處休肄不蹈揭器者詹遙駁楷鎖住術(shù)宴誅鄉(xiāng)矽C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第40頁,共401頁。3自增、自減運(yùn)算符自增、自減運(yùn)算符的作用是使變量的值增1或減1,例如:+i,-i:在使用i之前,先使i的值加(減)1。i+,i-:在使用i之后,使i的值加(減)1。+i和i+的作用都相當(dāng)于i=i+1。但其不同之處在于:+i是先執(zhí)行i=i+1后,再使用i的值,即先自增后操作;而i+是先使用i的值后,再執(zhí)行i=i+1,即先操作后自增。如果i的原值等于2,則執(zhí)行下面的賦值語句(設(shè)這兩條語句分別執(zhí)行):k=+i; /*i的值先變成3,再賦給
53、k,k的值為3*/k=i+; /*先將 i的值2賦給k,k的值為2,然后i變?yōu)?*/又如:i=3;printf(%d,+i);輸出4;若改為printf(%d,i+);則輸出3。自增(減)運(yùn)算符常用在循環(huán)語句中,使循環(huán)變量自動加(減)1,也可用于指針變量,使指針指向下一個地址。 瞳辮功用軋緊貶壯孵蒜猙失雀鐳棋當(dāng)札伶準(zhǔn)拙箍薄贖耶伍審廠組曼迭杉斜C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第41頁,共401頁。2.2 賦值運(yùn)算符及賦值表達(dá)式1賦值運(yùn)算符 賦值符號“=”就是賦值運(yùn)算符,它的作用是將一個數(shù)據(jù)賦給一個變量。如“a=10”的作用是執(zhí)行一次賦值操作
54、(或稱賦值運(yùn)算),把常量10賦給變量a。也可以將一個表達(dá)式的值賦給一個變量,如a=3*4-1,該操作執(zhí)行后a的值為11。2復(fù)合賦值運(yùn)算符 在賦值運(yùn)算符“=”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合賦值運(yùn)算符。如果在“=”前加上一個“+”運(yùn)算符就成了復(fù)合運(yùn)算符“+=”。例如: a+=10 等價于 a=a+10 b*=c+6 等價于 b=b*(c+6) d%=2 等價于 d=d%2 凡是二元(二目)運(yùn)算符,都可以與賦值運(yùn)算符一起組合成復(fù)合賦值運(yùn)算符。C語言規(guī)定可以使用10種復(fù)合賦值運(yùn)算符,即+=、-=、*=、/=、%=、=、&=、=、|=。 C語言采用這種復(fù)合運(yùn)算符,一是為了簡化程序,使程序精煉,二是為了
55、提高編譯效率。馴駐垢隔粵論暫里亢殃徹仇棕弧盯他鳥段項匝歧租饒皂憑嚷攏池鈔槽值汪C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第42頁,共401頁。3賦值表達(dá)式 由賦值運(yùn)算符將一個變量和一個表達(dá)式連接起來的式子稱為“賦值表達(dá)式”,它的一般形式為: 如a=10是一個賦值表達(dá)式。對賦值表達(dá)式求解的過程是:將賦值運(yùn)算符右側(cè)的“表達(dá)式”的值賦給左側(cè)的變量。賦值表達(dá)式的值就是被賦值的變量的值。上述一般形式的賦值表達(dá)式中的“表達(dá)式”又可以是一個賦值表達(dá)式。如a=(b=10),括號內(nèi)的b=10是一個賦值表達(dá)式,它的值等于10。a=(b=10)相當(dāng)于b=10和a=b兩個
56、賦值表達(dá)式,因此a的值等于10,整個賦值表達(dá)式的值也等于10。賦值運(yùn)算符按照“自右至左”的順序結(jié)合。氏搐螟痹揪估幻冠掏琉覽夢現(xiàn)擂位評暴超后駕互樁墟箋允暈象戮鬃瑚吶烯C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第43頁,共401頁。2.3 關(guān)系運(yùn)算符和關(guān)系表達(dá)式1關(guān)系運(yùn)算符關(guān)系運(yùn)算實(shí)際上就是“比較運(yùn)算”。將兩個值進(jìn)行比較,判斷其比較的結(jié)果是否為真。例如,x10是一個關(guān)系表達(dá)式,大于號()是一個關(guān)系運(yùn)算符,如果x的值為15,則滿足給定的“x10”條件,因此關(guān)系表達(dá)式的值為“真”(即“條件滿足”);如果x的值為5,不滿足“x10”條件,則稱關(guān)系表達(dá)式的值為
57、“假”。C語言中以1代表“真”,以“0”代表“假”。C語言提供了6種關(guān)系運(yùn)算符:優(yōu)先級相同(高)的有:(小于)、(大于)、=(大于或等于)。優(yōu)先級相同(低)的有:= =(等于)和!=(不等于)。關(guān)于優(yōu)先次序:(1)前4種關(guān)系運(yùn)算符(、=)的優(yōu)先級別相同,后兩種(!=和=)也相同。但前4種的優(yōu)先級高于后兩種。例如,“”優(yōu)先于“=”,而“”與“”優(yōu)先級相同。例如,3=35的結(jié)果值為0(假),而不為1(真)。因?yàn)槭窍茸?y x+yz-y x=10的值為“真”?,F(xiàn)假設(shè):x=10,y=20,z=30,則關(guān)系表達(dá)式xy)!=z的值為“真”,表達(dá)式的結(jié)果值為1;關(guān)系表達(dá)式x+yb)&(xy)、(ab)|(x
58、y)?!?”是單目(元)運(yùn)算符,只要求有一個運(yùn)算量,如!(ab)。邏輯運(yùn)算的結(jié)果為邏輯量真(1)或假(0),在一個邏輯表達(dá)式中如果包含多個邏輯運(yùn)算符,如!x &y|ab) & (n=cd)當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時,由于“ab”的值為0,因此m=0,而“n=cd”不被執(zhí)行,因此n的值不是0而仍保持原值1。嗜肛苑廳屆族顴鍺冀尺砸著阻蹤喘蛾攪踢齲著矣癡踩方慢編嗜鐮錄全恭頁C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第47頁,共401頁。2.5 條件運(yùn)算符 若if語句中,在表達(dá)式為“真”或“假”時都只執(zhí)行其中一個賦值語句給同一個變
59、量賦值,則可以用簡單的條件運(yùn)算符來處理。例如,若有以下if語句:if (ab) max=a;else max=b;可以用下面的條件運(yùn)算符來處理:max=(ab)? a:b; 該語句的執(zhí)行結(jié)果就是將a和b二者中的大者賦給max。其中(ab)?a:b是一個“條件表達(dá)式”。它是這樣執(zhí)行的:如果(ab)條件為真,則條件表達(dá)式取值a,否則取值b。 條件運(yùn)算符是C語言中唯一的一個三目運(yùn)算符,其要求有3個操作對象,故稱三目(元)運(yùn)算符。條件表達(dá)式的一般形式為:表達(dá)式1? 表達(dá)式2:表達(dá)式3 在執(zhí)行時先求解表達(dá)式1,若為非0(真),則求解表達(dá)式2,此時表達(dá)式2的值就作為整個條件表達(dá)式的值;若表達(dá)式1的值為0(
60、假),則求解表達(dá)式3,表達(dá)式3的值就是整個條件表達(dá)式的值。條件運(yùn)算符的優(yōu)先級別高于賦值運(yùn)算符,但比關(guān)系運(yùn)算符和算術(shù)運(yùn)算符都低。條件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆?。在條件表達(dá)式中,表達(dá)式1的類型可以與表達(dá)式2和表達(dá)式3的類型不同。紗涼竟布尖心僚藝柔翻誠歹載縛荔蛾唆震主殖甄軍圈栓昆謎愉喘吃捐蹭由C語言程序設(shè)計案例精品教程-電子教案-孫街亭C語言程序設(shè)計案例精品教程-電子教案-孫街亭第48頁,共401頁。【案例2-2】分析下面程序的輸出結(jié)果并上機(jī)驗(yàn)證。#include stdio.hvoid main() int a,b,c,i,j,k; int m,n; double x,y,z; a=b=c=7
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉利采購合同范例
- 公司委托簽合同模板
- 個人房屋購買合同范例
- 區(qū)域業(yè)務(wù)合同范例
- 公司經(jīng)營轉(zhuǎn)讓合同范例
- 中介承攬合同范例
- 半價打包餐飲服務(wù)合同范例
- 企業(yè)商城合同范例
- 公司度合同范例
- 關(guān)于抵押合同范例
- 三年級上冊美術(shù)課件-第7課 北京的胡同 ▏人美版(北京) (17張PPT)
- GB∕T 17888.3-2020 機(jī)械安全 接近機(jī)械的固定設(shè)施 第3部分:樓梯、階梯和護(hù)欄
- 房顫健康宣教課件
- 人教版八年級上Unit 6 I'm going to study computer science1 Section A (1a-1c)教案
- 一年級下冊數(shù)學(xué)教案 - 四 牧童-認(rèn)識圖形:《重疊問題》 青島版
- 家用電器常見認(rèn)證標(biāo)志一覽匯總(精選.)
- DB37 5155-2019 公共建筑節(jié)能設(shè)計標(biāo)準(zhǔn)
- 五年(2018-2022年)高考全國卷英語試題考點(diǎn)分析
- 試驗(yàn)室組織機(jī)構(gòu)圖
- T∕CSRME 001-2019 巖石動力特性試驗(yàn)規(guī)程
- 從農(nóng)業(yè)機(jī)械化到農(nóng)業(yè)信息化、自動化與智能化
評論
0/150
提交評論