語言程序設(shè)計(jì)_第1頁
語言程序設(shè)計(jì)_第2頁
語言程序設(shè)計(jì)_第3頁
語言程序設(shè)計(jì)_第4頁
語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩818頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C語言程序設(shè)計(jì)1整理ppt第一章C語言概述2整理ppt

本章要點(diǎn)

C語言的特點(diǎn)

C程序的結(jié)構(gòu)在計(jì)算機(jī)上運(yùn)行C程序的方法3整理ppt

§1-1C語言出現(xiàn)的歷史背景C語言是國際上廣泛流行的高級(jí)語言。C語言是在B語言的根底上開展起來的。B〔BCPL〕語言是1970年由美國貝爾實(shí)驗(yàn)室設(shè)計(jì)的,并用于編寫了第一個(gè)UNIX操作系統(tǒng),在PDP7上實(shí)現(xiàn)。優(yōu)點(diǎn):精練,接近硬件,缺點(diǎn):過于簡(jiǎn)單,數(shù)據(jù)無類型。1973年貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語言的根底上設(shè)計(jì)出了C語言,對(duì)B取長(zhǎng)補(bǔ)短,并用之改寫了原來用匯編編寫的UNIX,(即UNIX第5版〕,但僅在貝爾實(shí)驗(yàn)室使用。

§1-1C語言出現(xiàn)的歷史背景1975年UNIX第6版發(fā)布,C優(yōu)點(diǎn)突出引起關(guān)注。1977年出現(xiàn)了?可移植C語言編譯程序?,推動(dòng)了UNIX在各種機(jī)器上實(shí)現(xiàn),C語言也得到推廣,其開展相輔相成。1978年影響深遠(yuǎn)的名著?TheCProgrammingLanguage?由BrianW.Kernighan和DennisM.Ritchie合著,被稱為標(biāo)準(zhǔn)C。之后,C語言先后移植到大、中、小、微型計(jì)算機(jī)上,已獨(dú)立于UNIX和PDP,風(fēng)行世界,成為最廣泛的幾種計(jì)算機(jī)語言之一。

§1-1C語言出現(xiàn)的歷史背景1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語言各種版本對(duì)C的開展和擴(kuò)充,制定了新的標(biāo)準(zhǔn)ANSIC,比標(biāo)準(zhǔn)C有了很大的開展。1988年K&R按照ANSIC修改了他們的?TheCProgrammingLanguage?。1987年,ANSI公布了新標(biāo)準(zhǔn)——87ANSIC。1990年,國際標(biāo)準(zhǔn)化組織接受了87ANSIC為ISOC的標(biāo)準(zhǔn)(ISO9899—1990)。1994年,ISO又修訂了C語言標(biāo)準(zhǔn)。目前流行的C語言編譯系統(tǒng)大多是以ANSIC為根底進(jìn)行開發(fā)的。

§1-1C語言出現(xiàn)的歷史背景說明:不同版本的C編譯系統(tǒng)所實(shí)現(xiàn)的語言功能和語法規(guī)那么又略有差異,因此讀者應(yīng)了解所用的C語言編譯系統(tǒng)的特點(diǎn)(可以參閱有關(guān)手冊(cè))。本書的表達(dá)根本上以ANSIC為根底。

§1-2C語言的特點(diǎn)〔1〕語言簡(jiǎn)潔、緊湊,使用方便、靈活。32個(gè)關(guān)鍵字、9種控制語句,程序形式自由〔2〕運(yùn)算符豐富。34種運(yùn)算符〔3〕數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結(jié)構(gòu)?!?〕具有結(jié)構(gòu)化的控制語句,是完全模塊化和結(jié)構(gòu)化的語言。〔5〕語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。

§1-2C語言的特點(diǎn)〔6〕允許直接訪問物理地址,能進(jìn)行位操作,能實(shí)現(xiàn)匯編語言的大局部功能,可直接對(duì)硬件進(jìn)行操作。兼有高級(jí)和低級(jí)語言的特點(diǎn)?!?〕目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。只比匯編程序生成的目標(biāo)代碼效率低10%-20%。〔8〕程序可移植性好(與匯編語言比)。根本上不做修改就能用于各種型號(hào)的計(jì)算機(jī)和各種操作系統(tǒng)。

§1-2C語言的特點(diǎn)解釋1:C++是由于開發(fā)大型應(yīng)用軟件的需要而產(chǎn)生的,并不是所有的人都要去編寫大型軟件;解釋2:面向?qū)ο蟮母资敲嫦蜻^程。C++是面向?qū)ο蟮恼Z言,C是面向過程的,學(xué)起來比C語言困難得多,所以不太適合程序設(shè)計(jì)的初學(xué)者。問題:既然有了面向?qū)ο蟮腃++語言,為什么還要學(xué)習(xí)C語言?

§1-3簡(jiǎn)單的C語言程序介紹#include<stdio.h>void

main(){

printf("ThisisaCprogram.\n");}/*文件包含*//*主函數(shù)*//*函數(shù)體開始*//*輸出語句*//*函數(shù)體結(jié)束*/說明:main-主函數(shù)名,void-函數(shù)類型每個(gè)C程序必須有一個(gè)主函數(shù)main{}是函數(shù)開始和結(jié)束的標(biāo)志,不可省每個(gè)C語句以分號(hào)結(jié)束使用標(biāo)準(zhǔn)庫函數(shù)時(shí)應(yīng)在程序開頭一行寫:

#include<stdio.h>說明:

本程序的作用是輸出一行信息:ThisisaCprogram.例1.2求兩數(shù)之和

#include<stdio.h>

voidmain()/*求兩數(shù)之和*/

{

inta,b,sum;/*聲明,定義變量為整型*/

/*以下3行為C語句*/

a=123;b=456;

sum=a+b;

printf(″sumis%d\n″,sum);

}說明:

/*……*/表示注釋。注釋只是給人看的,對(duì)編譯和運(yùn)行不起作用。所以可以用漢字或英文字符表示,可以出現(xiàn)在一行中的最右側(cè),也可以單獨(dú)成為一行。說明:

輸出一行信息:sumis579例1.3求3個(gè)數(shù)中較大者。

#include<stdio.h>

voidmain()/*主函數(shù)*/

{

intmax(intx,inty);/對(duì)被調(diào)用函數(shù)max的聲明*/

inta,b,c;/*定義變量a、b、c*/

scanf(″%d,%d″,&a,&b);/*輸入變量a和b的值*/

c=max(a,b);/*調(diào)用max函數(shù),將得到的值賦給c*/

printf(″max=%d\\n″,c);/*輸出c的值*/

}程序運(yùn)行情況如下:8,5↙(輸入8和5賦給a和b)max=8(輸出c的值)intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}max(int

x,int

y);

max(a,b);

說明:本程序包括main和被調(diào)用函數(shù)max兩個(gè)函數(shù)。max函數(shù)的作用是將x和y中較大者的值賦給變量z。return語句將z的值返回給主調(diào)函數(shù)main。

§1-3簡(jiǎn)單的C語言程序介紹C程序:(1)C程序是由函數(shù)構(gòu)成的。這使得程序容易實(shí)現(xiàn)模塊化。(2)一個(gè)函數(shù)由兩局部組成:函數(shù)的首部:例1.3中的max函數(shù)首部intmax(intx,inty)函數(shù)體:花括號(hào)內(nèi)的局部。假設(shè)一個(gè)函數(shù)有多個(gè)花括號(hào),那么最外層的一對(duì)花括號(hào)為函數(shù)體的范圍。函數(shù)體包括兩局部:聲明局部:inta,b,c;可缺省執(zhí)行局部:由假設(shè)干個(gè)語句組成??扇笔?/p>

§1-3簡(jiǎn)單的C語言程序介紹注意:函數(shù)的聲明局部和執(zhí)行局部都可缺省,例如:voiddump(){}這是一個(gè)空函數(shù),什么也不做,但是合法的函數(shù)。

§1-3簡(jiǎn)單的C語言程序介紹小結(jié):(3)C程序總是從main函數(shù)開始執(zhí)行的,與main函數(shù)的位置無關(guān)。(4)C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語句,一個(gè)語句可以分寫在多行上,C程序沒有行號(hào)。(5)每個(gè)語句和數(shù)據(jù)聲明的最后必須有一個(gè)分號(hào)。(6)C語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成的。C對(duì)輸入輸出實(shí)行“函數(shù)化〞。

§1-4運(yùn)行C程序的步驟和方法一、運(yùn)行C程序的步驟上機(jī)輸入與編輯源程序?qū)υ闯绦蜻M(jìn)行編譯與庫函數(shù)連接運(yùn)行目標(biāo)程序17整理ppt

§1-4運(yùn)行C程序的步驟和方法二、上機(jī)運(yùn)行C程序的方法目前使用的大多數(shù)C編譯系統(tǒng)都是集成環(huán)境(IDE)的??梢杂貌煌木幾g系統(tǒng)對(duì)C程序進(jìn)行操作常用的有TurboC2.0、TurboC++3.0、VisualC++等TurboC++3.0:是一個(gè)集成環(huán)境,它具有方便、直觀和易用的界面,雖然它也是DOS環(huán)境下的集成環(huán)境,但是可以把啟動(dòng)TurboC++3.0集成環(huán)境的DOS執(zhí)行文件tc.exe生成快捷方式,也可以用鼠標(biāo)操作。VisualC++:也可以用VisualC++對(duì)C程序進(jìn)行編譯。18整理ppt例:TurboC++3.0的使用將TurboC++3.0編譯程序裝入磁盤某一目錄下,例如:放在C盤根目錄下一級(jí)TC3.0子目錄下。進(jìn)入TurboC++3.0集成環(huán)境①在DOS環(huán)境下

C:\TC3.0>tc↙

19整理ppt②在Windows環(huán)境下找到可執(zhí)行文件tc.exe,執(zhí)行該文件。主菜單:11個(gè)菜單項(xiàng):FileEditSearchRunCompileDebugProjectOptionsWindowHelp20整理ppt(2)編輯源文件新建:?jiǎn)螕簟癋ile〞菜單下的“New〞,修改:選擇“File〞→“Open〞(即單擊“File〞的下拉菜單中的“Open〞項(xiàng),修改已有的源程序。21整理ppt在編輯(EDIT)狀態(tài)下光標(biāo)表示當(dāng)前進(jìn)行編輯的位置,在此位置可以進(jìn)行插入、刪除或修改,直到自已滿意為止。22整理ppt保存:在編輯(EDIT)狀態(tài)下光標(biāo)表示當(dāng)前進(jìn)行編輯的位置,在此位置可以進(jìn)行插入、刪除或修改,直到自已滿意為止。23整理ppt(3)對(duì)源程序進(jìn)行編譯選擇“Compile〞(或“Alt+F9〞)對(duì)源程序進(jìn)行編譯。c1.cpp源程序,出現(xiàn)1個(gè)錯(cuò)誤(error),0個(gè)警告(warming)。24整理ppt(4)將目標(biāo)程序進(jìn)行連接

選擇菜單“Compile〞→“Link〞,如果不出現(xiàn)錯(cuò)誤,會(huì)得到一個(gè)后綴為.exe的可執(zhí)行文件。(5)執(zhí)行程序。選菜單“Run〞→“Run〞(或按“Ctrl+F9〞鍵)。(6)退出TurboC++3.0環(huán)境選擇“File〞→“Quit〞。25整理ppt第二章程序的靈魂--算法26整理ppt

本章要點(diǎn)算法的概念算法的表示結(jié)構(gòu)化程序設(shè)計(jì)方法27整理ppt

主要內(nèi)容2.1算法的概念2.2簡(jiǎn)單算法舉例2.3算法的特性2.4怎樣表示一個(gè)算法2.5化程序設(shè)計(jì)方法28整理ppt一個(gè)程序應(yīng)包括兩個(gè)方面的內(nèi)容:對(duì)數(shù)據(jù)的描述:數(shù)據(jù)結(jié)構(gòu)(datastructure)對(duì)操作的描述:算法(algorithm)著名計(jì)算機(jī)科學(xué)家沃思提出一個(gè)公式:

數(shù)據(jù)結(jié)構(gòu)+算法=程序

數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+語言工具完整的程序設(shè)計(jì)應(yīng)該是:

§2.1算法的概念廣義地說,為解決一個(gè)問題而采取的方法和步驟,就稱為“算法〞。方法1:1+2,+3,+4,一直加到100加99次方法2:100+(1+99)+(2+98)+…+(49+51)+50=100+49×100+50加51次對(duì)同一個(gè)問題,可有不同的解題方法和步驟例:求

§2.1算法的概念為了有效地進(jìn)行解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇適宜的算法。希望方法簡(jiǎn)單,運(yùn)算步驟少。計(jì)算機(jī)算法可分為兩大類別:數(shù)值運(yùn)算算法:求數(shù)值解,例如求方程的根、求函數(shù)的定積分等。非數(shù)值運(yùn)算:包括的面十分廣泛,最常見的是用于事務(wù)管理領(lǐng)域,例如圖書檢索、人事管理、行車調(diào)度管理等。

§2.2簡(jiǎn)單算法舉例例2.1:求1×2×3×4×5

步驟1:先求1×2,得到結(jié)果2步驟2:將步驟1得到的乘積2再乘以3,得到結(jié)果6步驟3:將6再乘以4,得24步驟4:將24再乘以5,得120太繁瑣如果要求1×2×…×1000,那么要寫999個(gè)步驟S1:使p=1S2:使i=2S3:使p×i,乘積仍放在變量p中,可表示為:p×ipS4:使i的值加1,即i+1i。S5:如果i不大于5,返回重新執(zhí)行步驟S3以及其后的步驟S4和S5;否那么,算法結(jié)束。最后得到p的值就是5!的值??梢栽O(shè)兩個(gè)變量:一個(gè)變量代表被乘數(shù),一個(gè)變量代表乘數(shù)。不另設(shè)變量存放乘積結(jié)果,而直接將每一步驟的乘積放在被乘數(shù)變量中。設(shè)p為被乘數(shù),i為乘數(shù)。用循環(huán)算法來求結(jié)果,算法可改寫:S1:1pS2:3iS3:p×ipS4:i+2pS5:假設(shè)i≤11,返回S3。否那么,結(jié)束。

如果題目改為:求1×3×5×……×1000算法只需作很少的改動(dòng):算法簡(jiǎn)練用這種方法表示的算法具有通用性、靈活性。S3到S5組成一個(gè)循環(huán),在實(shí)現(xiàn)算法時(shí)要反復(fù)屢次執(zhí)行S3,S4,S5等步驟,直到某一時(shí)刻,執(zhí)行S5步驟時(shí)經(jīng)過判斷,乘數(shù)i已超過規(guī)定的數(shù)值而不返回S3步驟為止。此時(shí)算法結(jié)束,變量p的值就是所求結(jié)果。例2.2

有50個(gè)學(xué)生,要求將他們之中成績(jī)?cè)?0分以上者打印出來。設(shè)n表示學(xué)號(hào),n1代表第一個(gè)學(xué)生學(xué)號(hào),代表第i個(gè)學(xué)生學(xué)號(hào)。用G代表學(xué)生成績(jī),gi代表第i個(gè)學(xué)生成績(jī),算法表示如下:S1:1iS2:如果≥80,那么打印和,否那么不打印。S3:i+1iS4:如果i≤50,返回S2,繼續(xù)執(zhí)行。否那么算法結(jié)束

變量i作為下標(biāo),用來控制序號(hào)(第幾個(gè)學(xué)生,第幾個(gè)成績(jī))。當(dāng)i超過50時(shí),表示已對(duì)50個(gè)學(xué)生的成績(jī)處理完畢,算法結(jié)束。例2.3

判定2000~2500年中的每一年是否閏年,將結(jié)果輸出。

變量i作為下標(biāo),用來控制序號(hào)(第幾個(gè)學(xué)生,第幾個(gè)成績(jī))。當(dāng)i超過50時(shí),表示已對(duì)50個(gè)學(xué)生的成績(jī)處理完畢,算法結(jié)束。分析:閏年的條件是:(1)能被4整除,但不能被100整除的年份都是閏年,如1996,2004年是閏年;(2)能被100整除,又能被400整除的年份是閏年。如1600,2000年是閏年。不符合這兩個(gè)條件的年份不是閏年。設(shè)y為被檢測(cè)的年份,算法可表示如下:S1:2000yS2:假設(shè)y不能被4整除,那么輸出y“不是閏年〞。然后轉(zhuǎn)到S6。S3:假設(shè)y能被4整除,不能被100整除,那么輸出y“是閏年〞。然后轉(zhuǎn)到S6。S4:假設(shè)y能被100整除,又能被400整除,輸出y“是閏年〞,否那么輸出“不是閏年〞。然后轉(zhuǎn)到S6。S5:輸出y“不是閏年〞。S6:y+1yS7:當(dāng)y≤2500時(shí),轉(zhuǎn)S2繼續(xù)執(zhí)行,如y>2500,算法停止。以上算法中每做一步都分別別離出一些范圍(巳能判定為閏年或非閏年),逐步縮小范圍,直至執(zhí)行S5時(shí),只可能是非閏年。“其它〞包括能被4整除,又能被100整除,而不能被400整除的那些年份(如1990)是非閏年。例2.4

求算法如下

:S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1)×signS5:term=sign×(1/deno)S6:sum=sum+termS7:deno=deno+1S8:假設(shè)deno≤100返回S4,否那么算法結(jié)束。單詞作變量名,以使算法更易于理解:sum表示累加和,deno是英文分母〔denominator〕縮寫,sign代表數(shù)值的符號(hào),term代表某一項(xiàng)。反復(fù)執(zhí)行S4到S8步驟,直到分母大于100為止。一共執(zhí)行了99次循環(huán),向sum累參加了99個(gè)分?jǐn)?shù)。sum最后的值就是多項(xiàng)式的值。

例2.5

對(duì)一個(gè)大于或等于3的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。概念:所謂素?cái)?shù),是指除了1和該數(shù)本身之外,不能被其它任何整數(shù)整除的數(shù)。例如,13是素?cái)?shù)。因?yàn)樗荒鼙?,3,4,…,12整除。分析:判斷一個(gè)數(shù)n(n≥3)是否素?cái)?shù)的方法:將n作為被除數(shù),將2到(n-1)各個(gè)整數(shù)輪流作為除數(shù),如果都不能被整除,那么n為素?cái)?shù)。算法如下

:S1:輸入n的值S2:i=2〔i作為除數(shù)〕S3:n被i除,得余數(shù)rS4:如果r=0,表示n能被i整除,那么打印n“不是素?cái)?shù)〞,算法結(jié)束。否那么執(zhí)行S5S5:i+1iS6:如果i≤n-1,返回S3。否那么打印n“是素?cái)?shù)〞。然后結(jié)束。

實(shí)際上,n不必被2到(n-1)的整數(shù)除,只需被2到n/2間整數(shù)除,甚至只需被2到之間的整數(shù)除即可。

§2.3算法的特性有窮性:包含有限的操作步驟確定性:算法中的每一個(gè)步驟都應(yīng)當(dāng)是確定的有零個(gè)或多個(gè)輸入:輸入是指在執(zhí)行算法時(shí)需要從外界取得必要的信息有一個(gè)或多個(gè)輸出:算法的目的是為了求解,“解〞就是輸出有效性:算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。一個(gè)算法應(yīng)該具有以下特點(diǎn):

§2.4算法的表示可以用不同的方法表示算法,常用的有:自然語言傳統(tǒng)流程圖結(jié)構(gòu)化流程圖偽代碼PAD圖

§2.4.1用自然語言表示算法自然語言就是人們?nèi)粘J褂玫恼Z言,可以是漢語或英語或其它語言。用自然語言表示通俗易懂,但文字冗長(zhǎng),容易出現(xiàn)“歧義性〞。自然語言表示的含義往往不大嚴(yán)格,要根據(jù)上下文才能判斷其正確含義,描述包含分支和循環(huán)的算法時(shí)也不很方便。因此,除了那些很簡(jiǎn)單的問題外,一般不用自然語言描述算法。

§2.4.2用流程圖表示算法美國國家標(biāo)準(zhǔn)化協(xié)會(huì)ANSI(AmericanNationalStandardInstitute)規(guī)定了一些常用的流程圖符號(hào):起止框判斷框處理框輸入/輸出框注釋框流向線連接點(diǎn)例2.6

將求5!的算法用流程圖表示如果需要將最后結(jié)果打印出來,可在菱形框的下面加一個(gè)輸出框。

例2.7

將例2.2的算法用流程圖表示。打印50名學(xué)生中成績(jī)?cè)?0分以上者的學(xué)號(hào)和成績(jī)。如果如果包括這個(gè)輸入數(shù)據(jù)的局部,流程圖為

例2.8

將例2.3判定閏年的算法用流程圖表示

用流程圖表示算法要比用文字描述算法邏輯清晰、易于理解。

例2.9

將例2.4的算法用流程圖表示

例2.10

將例2.5判斷素?cái)?shù)的算法用流程圖表示小結(jié):流程圖是表示算法的較好的工具。一個(gè)流程圖包括以下幾局部:(1)表示相應(yīng)操作的框;(2)帶箭頭的流程線;(3)框內(nèi)外必要的文字說明。53整理ppt§2.4.3三種根本結(jié)構(gòu)和改進(jìn)的流程圖1、傳統(tǒng)流程圖的弊端傳統(tǒng)流程圖用流程線指出各框的執(zhí)行順序,對(duì)流程線的使用沒有嚴(yán)格限制。因此,使用者可以毫不受限制地使流程隨意地轉(zhuǎn)向,使流程圖變得毫無規(guī)律,閱讀者要花很大精力去追蹤流程,使人難以理解算法的邏輯。如圖:傳統(tǒng)流程圖的流程可以是:

這種如同亂麻一樣的算法稱為BS型算法,意為一碗面條(ABowlofSpaghetti),亂無頭緒。缺點(diǎn):難以閱讀、修改,使算法的可靠性和可維護(hù)性難以保證。解決方法:必須限制箭頭的濫用,即不允許無規(guī)律地使流程隨意轉(zhuǎn)向,只能順序地進(jìn)行下去。2、三種根本結(jié)構(gòu)Bohra和Jacopini提出了以下三種根本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)用這三種根本結(jié)構(gòu)作為表示一個(gè)良好算法的根本單元。三種根本結(jié)構(gòu)的圖示:

順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)的圖示:

當(dāng)型(While型)循環(huán)結(jié)構(gòu)直到型(Until型)循環(huán)三種根本結(jié)構(gòu)的共同特點(diǎn):(1)只有一個(gè)入口;(2)只有一個(gè)出口;〔請(qǐng)注意:一個(gè)菱形判斷框有兩個(gè)出口,而一個(gè)選擇結(jié)構(gòu)只有一個(gè)出口。不要將菱形框的出口和選擇結(jié)構(gòu)的出口混淆?!?3)結(jié)構(gòu)內(nèi)的每一局部都有時(shí)機(jī)被執(zhí)行到;(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)〞(無終止的循環(huán))。

圖中沒有一條從入口到出口的路徑通過A框。不正確的流程表示:流程內(nèi)的死循環(huán)小結(jié):由三種根本結(jié)構(gòu)順序組成的算法結(jié)構(gòu),可以解決任何復(fù)雜的問題。由根本結(jié)構(gòu)所構(gòu)成的算法屬于“結(jié)構(gòu)化〞的算法,它不存在無規(guī)律的轉(zhuǎn)向,只在本根本結(jié)構(gòu)內(nèi)才允許存在分支和向前或向后的跳轉(zhuǎn)。61整理ppt擴(kuò)展:只要具有上述四個(gè)特點(diǎn)的都可以作為根本結(jié)構(gòu)??梢宰约憾x根本結(jié)構(gòu),并由這些根本結(jié)構(gòu)組成結(jié)構(gòu)化程序。此圖符合根本結(jié)構(gòu)的特點(diǎn)62整理ppt這是一個(gè)多分支選擇結(jié)構(gòu),根據(jù)表達(dá)式的值決定執(zhí)行路線。虛線框內(nèi)的結(jié)構(gòu)是一個(gè)入口一個(gè)出口,并且有上述全部的四個(gè)特點(diǎn)。由此構(gòu)成的算法結(jié)構(gòu)也是結(jié)構(gòu)化的算法。可以認(rèn)為這是由三種根本結(jié)構(gòu)所派生出來的。

§2.4.4

用N--S流程圖表示算法1973年美國學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線。全部算法寫在一個(gè)矩形框內(nèi),在該框內(nèi)還可以包含其它的附屬于它的框,或者說,由一些根本的框組成一個(gè)大的框。這種流程圖又稱N--S結(jié)構(gòu)化流程圖。

N--S流程圖用以下的流程圖符號(hào):

(1)順序結(jié)構(gòu)

(2)選擇結(jié)構(gòu)

(3)循環(huán)結(jié)構(gòu)

用三種N--S流程圖中的根本框,可以組成復(fù)雜的N--S流程圖。圖中的A框或B框,可以是一個(gè)簡(jiǎn)單的操作,也可以是三個(gè)根本結(jié)構(gòu)之一。A框可以是一個(gè)選擇結(jié)構(gòu)B框可以是一個(gè)循環(huán)結(jié)構(gòu)例2.11

將例2.1的求5!算法用N--S圖表示例2.12將例2.2的算法用N--S圖表示?!泊蛴?0名學(xué)生中成績(jī)高于80分的學(xué)號(hào)和成績(jī)〕沒有輸入數(shù)據(jù)例2.12將例2.2的算法用N--S圖表示?!泊蛴?0名學(xué)生中成績(jī)高于80分的學(xué)號(hào)和成績(jī)〕有輸入數(shù)據(jù)例2.13

將例2.3判定閏年的算法用N--S圖表示例2.14將例2.4的算法用N--S圖表示例2.15將例2.5判別素?cái)?shù)的算法用N--S流程圖表示。傳統(tǒng)流程圖分析:出口1出口2此圖不符合根本結(jié)構(gòu)特點(diǎn)!由于不能分解為三種根本結(jié)構(gòu),就無法直接用N--S流程圖的三種根本結(jié)構(gòu)的符號(hào)來表示。因此,應(yīng)領(lǐng)先作必要的變換。例2.15將例2.5判別素?cái)?shù)的算法用N--S流程圖表示。傳統(tǒng)流程圖變換為:一個(gè)出口用N--S流程圖表示:N--S圖表示算法的優(yōu)點(diǎn)比文字描述直觀、形象、易于理解;比傳統(tǒng)流程圖緊湊易畫。尤其是它廢除了流程線,整個(gè)算法結(jié)構(gòu)是由各個(gè)根本結(jié)構(gòu)按順序組成的,N--S流程圖中的上下順序就是執(zhí)行時(shí)的順序。用N--S圖表示的算法都是結(jié)構(gòu)化的算法,因?yàn)樗豢赡艹霈F(xiàn)流程無規(guī)律的跳轉(zhuǎn),而只能自上而下地順序執(zhí)行。75整理ppt小結(jié):一個(gè)結(jié)構(gòu)化的算法是由一些根本結(jié)構(gòu)順序組成的。在根本結(jié)構(gòu)之間不存在向前或向后的跳轉(zhuǎn),流程的轉(zhuǎn)移只存在于一個(gè)根本結(jié)構(gòu)范圍之內(nèi)(如循環(huán)中流程的跳轉(zhuǎn));一個(gè)非結(jié)構(gòu)化的算法可以用一個(gè)等價(jià)的結(jié)構(gòu)化算法代替,其功能不變。如果一個(gè)算法不能分解為假設(shè)干個(gè)根本結(jié)構(gòu),那么它必然不是一個(gè)結(jié)構(gòu)化的算法。76整理ppt

§2.4.5

用位代碼表示算法概念:偽代碼是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號(hào)來描述算法。特點(diǎn):它如同一篇文章一樣,自上而下地寫下來。每一行(或幾行)表示一個(gè)根本操作。它不用圖形符號(hào),因此書寫方便、格式緊湊,也比較好懂,也便于向計(jì)算機(jī)語言算法(即程序)過渡。用處:適用于設(shè)計(jì)過程中需要反復(fù)修改時(shí)的流程描述。IFxispositiveTHENprintxELSEprint-x也可以用漢字偽代碼表示:假設(shè)x為正打印x否那么打印-x也可以中英文混用,如:IFx為正printxELSEprint-x例:“打印x的絕對(duì)值〞的算法可以用偽代碼表示為:開始

置t的初值為1

置i的初值為2

當(dāng)i<=5,執(zhí)行下面操作:使t=t×i

使i=i+1

{循環(huán)體到此結(jié)束}輸出t的值結(jié)束也可以寫成以下形式:

BEGIN{算法開始}

1

t2

iwhilei≤5{t×i

ti+1

i}printtEND{算法結(jié)束}例2.16求5!。用偽代碼表示算法:例2.17輸出50個(gè)學(xué)生中成績(jī)高于80分者的學(xué)號(hào)和成績(jī)。用偽代碼表示算法:BEGIN{算法開始}

1

iwhilei≤50{inputandi+1

i}1

iwhilei≤50{if≥80printandi+1

i}END{算法結(jié)束}

§2.4.6

用計(jì)算機(jī)語言表示算法概念:用計(jì)算機(jī)實(shí)現(xiàn)算法。計(jì)算機(jī)是無法識(shí)別流程圖和偽代碼的。只有用計(jì)算機(jī)語言編寫的程序才能被計(jì)算機(jī)執(zhí)行。因此在用流程圖或偽代碼描述出一個(gè)算法后,還要將它轉(zhuǎn)換成計(jì)算機(jī)語言程序。特點(diǎn):用計(jì)算機(jī)語言表示算法必須嚴(yán)格遵循所用的語言的語法規(guī)那么,這是和偽代碼不同的。用處:要完成一件工作,包括設(shè)計(jì)算法和實(shí)現(xiàn)算法兩個(gè)局部。設(shè)計(jì)算法的目的是為了實(shí)現(xiàn)算法。#include<stdio.h>voidmain(){inti,t;t=1;i=2;while(i<=5){t=t*I;i=i+1;}printf(“%d\n〞,t);}例2.20將例2.16表示的算法〔求5!〕用C語言表示。應(yīng)當(dāng)強(qiáng)調(diào)說明:寫出了C程序,仍然只是描述了算法,并未實(shí)現(xiàn)算法。只有運(yùn)行程序才是實(shí)現(xiàn)算法。應(yīng)該說,用計(jì)算機(jī)語言表示的算法是計(jì)算機(jī)能夠執(zhí)行的算法。

§

2.5結(jié)構(gòu)化程序設(shè)計(jì)方法一個(gè)結(jié)構(gòu)化程序就是用高級(jí)語言表示的結(jié)構(gòu)化算法。用三種根本結(jié)構(gòu)組成的程序必然是結(jié)構(gòu)化的程序,這種程序便于編寫、便于閱讀、便于修改和維護(hù)。結(jié)構(gòu)化程序設(shè)計(jì)強(qiáng)調(diào)程序設(shè)計(jì)風(fēng)格和程序結(jié)構(gòu)的標(biāo)準(zhǔn)化,提倡清晰的結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)方法的根本思路是:把一個(gè)復(fù)雜問題的求解過程分階段進(jìn)行,每個(gè)階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。

§

2.5結(jié)構(gòu)化程序設(shè)計(jì)方法采取以下方法來保證得到結(jié)構(gòu)化的程序:自頂向下;逐步細(xì)化;模塊化設(shè)計(jì);結(jié)構(gòu)化編碼。

兩種不同的方法:自頂向下,逐步細(xì)化;自下而上,逐步積累。用這種方法逐步分解,直到作者認(rèn)為可以直接將各小段表達(dá)為文字語句為止。這種方法就叫做“自頂向下,逐步細(xì)化〞。自頂向下,逐步細(xì)化方法的優(yōu)點(diǎn):考慮周全,結(jié)構(gòu)清晰,層次清楚,作者容易寫,讀者容易看。如果發(fā)現(xiàn)某一局部中有一段內(nèi)容不妥,需要修改,只需找出該局部修改有關(guān)段落即可,與其它局部無關(guān)。我們提倡用這種方法設(shè)計(jì)程序。這就是用工程的方法設(shè)計(jì)程序。模塊設(shè)計(jì)的方法:模塊化設(shè)計(jì)的思想實(shí)際上是一種“分而治之〞的思想,把一個(gè)大任務(wù)分為假設(shè)干個(gè)子任務(wù),每一個(gè)子任務(wù)就相對(duì)簡(jiǎn)單了。在拿到一個(gè)程序模塊以后,根據(jù)程序模塊的功能將它劃分為假設(shè)干個(gè)子模塊,如果這些子模塊的規(guī)模還嫌大,還再可以劃分為更小的模塊。這個(gè)過程采用自頂向下方法來實(shí)現(xiàn)。子模塊一般不超過50行劃分子模塊時(shí)應(yīng)注意模塊的獨(dú)立性,即:使一個(gè)模塊完成一項(xiàng)功能,耦合性愈少愈好。

第三章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式89整理ppt

本章要點(diǎn)數(shù)據(jù)的描述規(guī)那么數(shù)據(jù)的操作規(guī)那么90整理ppt

主要內(nèi)容3.1C的數(shù)據(jù)類型3.2常量與變量3.3整型數(shù)據(jù)3.4浮點(diǎn)型數(shù)據(jù)運(yùn)行3.5字符型數(shù)據(jù)

91整理ppt

主要內(nèi)容3.6變量賦初值

3.7各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算

3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式

3.9賦值運(yùn)算符和賦值表達(dá)式

3.10逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式92整理ppt

§3.1C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。

數(shù)據(jù)類型構(gòu)造類型指針類型空類型〔無值類型〕void枚舉類型enum數(shù)組類型結(jié)構(gòu)類型struct聯(lián)合類型

union基本類型整型int字符型char實(shí)型(浮點(diǎn)型)單精度實(shí)型

float雙精度實(shí)型

double

§3.2常量與變量3.2.1常量和符號(hào)常量在程序運(yùn)行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:整型100,125,-100,0實(shí)型3.14,0.125,-3.789字符型‘a(chǎn)’,‘b’,‘2’字符串‘a(chǎn)’,‘a(chǎn)b’,‘1232’例3.1符號(hào)常量的使用

#definePRICE30

#include<stdio.h>

voidmain()

{

intnum,total;

num=10;

total=num*PRICE;

printf(″total=%d\n″,total);

}

說明:

程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運(yùn)算說明:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量的,稱為符號(hào)常量,即以標(biāo)識(shí)符形式出現(xiàn)的常量。符號(hào)常量的值在其作用域(在本例中為主函數(shù))內(nèi)不能改變,也不能再被賦值。說明:如再用賦值語句給PRICE賦值是錯(cuò)誤的。

PRICE=40;/*錯(cuò)誤,不能給符號(hào)常量賦值。運(yùn)行結(jié)果:

total=300

§3.2常量與變量3.2.2變量變量代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來存放數(shù)據(jù),這就是變量的值,在程序運(yùn)行期間,這些值是可以改變的。變量名實(shí)際上是一個(gè)以一個(gè)名字對(duì)應(yīng)代表一個(gè)地址,在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。圖

§3.2常量與變量

變量命名的規(guī)定:C語言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。

例:sum,_total,month,Student_name,

lotus_1_2_3,BASIC,li_lingM.D.John,¥123,3D64,a>b

§3.2常量與變量注意:編譯系統(tǒng)將大寫字母和小寫字母認(rèn)為是兩個(gè)不同的字符。建議變量名的長(zhǎng)度最好不要超過8個(gè)字符。在選擇變量名和其它標(biāo)識(shí)符時(shí),應(yīng)注意做到“見名知意〞,即選有含意的英文單詞〔或其縮寫〕作標(biāo)識(shí)符。要求對(duì)所有用到的變量作強(qiáng)制定義,也就是“先定義,后使用〞。

§3.3整型數(shù)據(jù)3.3.1整型常量的表示方法

整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。

如:123,-456.4。(2)八進(jìn)制整數(shù)。以0頭的數(shù)是八進(jìn)制數(shù)。

如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83,-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。

§3.3整型數(shù)據(jù)(3)十六進(jìn)制整數(shù)。以0x開頭的數(shù)是16進(jìn)制數(shù)。

如:0x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù)291。-0x12等于十進(jìn)制數(shù)-10。

3.3.2整型變量

(1)整型數(shù)據(jù)在內(nèi)存中的存放形式

數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。

如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/

圖§3.3整型數(shù)據(jù)注意:十進(jìn)制數(shù)10的二進(jìn)制形式為1010,TurboC2.0和TurboC++3.0為一個(gè)整型變量在內(nèi)存中分配2個(gè)字節(jié)的存儲(chǔ)單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC++6.0那么分配4個(gè)字節(jié)〕。數(shù)值是以補(bǔ)碼(complement)表示的?!?.3整型數(shù)據(jù)(2)整型變量的分類:共六種有符號(hào)根本整型有符號(hào)短整型有符號(hào)長(zhǎng)整型無符號(hào)根本整型無符號(hào)短整型無符號(hào)長(zhǎng)整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)

注意:括號(hào)表示其中的內(nèi)容是可選的.

§3.3整型數(shù)據(jù)整數(shù)類型的有關(guān)數(shù)據(jù):類型類型說明符長(zhǎng)度數(shù)的范圍根本型int2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長(zhǎng)整型long4字節(jié)-231~231-1無符號(hào)整型unsigned2字節(jié)0~65535無符號(hào)短整型unsignedshort2字節(jié)0~65535無符號(hào)長(zhǎng)整型unsignedlong4字節(jié)0~〔232-1〕

§3.3整型數(shù)據(jù)(3)整型變量的定義:C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強(qiáng)制類型定義〞。例如:inta,b〔指定變量a、b為整型〕unsignedshortc,d;〔指定變量c、d為無符號(hào)短整型〕longe,f;(指定變量e、f為長(zhǎng)整型〕例3.2整型變量的定義與使用

#include<stdio.h>

voidmain〔〕

{inta,b,c,d;/*指定a、b、c、d為整型變量*/

unsignedu;/*指定u為無符號(hào)整型變量*/

a=12;b=-24;u=10;

c=a+u;d=b+u;

printf〔″a+u=%d,b+u=%d\n″,c,d〕;

}說明:

可以看到不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算運(yùn)行結(jié)果:

a+u=22,b+u=-14

例3.3整型數(shù)據(jù)的溢出

#include<stdio.h>

voidmain()

{inta,b;

a=32767;

b=a+1;

printf(“%d,%d\n〞,a,b);

}

說明:數(shù)值是以補(bǔ)碼表示的。一個(gè)整型變量只能容納-32768~32767范圍內(nèi)的數(shù),無法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出〞。運(yùn)行結(jié)果:

32767,-32768

§3.3整型數(shù)據(jù)3.3.3整型常量的類型(1)一個(gè)整數(shù),如果其值在-32768~+32767范圍內(nèi),認(rèn)為它是int型,它可以賦值給int型和longint型變量。(2)一個(gè)整數(shù),如果其值超過了上述范圍,而在-2147483637~+2147483647范圍內(nèi),那么認(rèn)為它是為長(zhǎng)整型??梢詫⑺x值給一個(gè)longint型變量。

§3.3整型數(shù)據(jù)(3)如果所用的C版本〔如TurboC〕分配給shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長(zhǎng)度相同,那么它的表數(shù)范圍與int型相同。因此一個(gè)int型的常量同時(shí)也是一個(gè)shortint型常量,可以賦給int型或shortint型變量。

§3.3整型數(shù)據(jù)(4)一個(gè)整常量后面加一個(gè)字母u或U,認(rèn)為是unsignedint型,如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放(存儲(chǔ)單元中最高位不作為符號(hào)位,而用來存儲(chǔ)數(shù)據(jù))。如果寫成-12345u,那么先將-12345轉(zhuǎn)換成其補(bǔ)碼53191,然后按無符號(hào)數(shù)存儲(chǔ)。

§3.3整型數(shù)據(jù)(5)在一個(gè)整常量后面加一個(gè)字母l或L,那么認(rèn)為是longint型常量。例如123l.432L.0L等。這往往用于函數(shù)調(diào)用中。如果函數(shù)的形參為longint型,那么要求實(shí)參也為longint型。

§3.4浮點(diǎn)型數(shù)據(jù)3.4.1浮點(diǎn)型常量的表示方法兩種表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e

§3.4浮點(diǎn)型數(shù)據(jù)標(biāo)準(zhǔn)化的指數(shù)形式:在字母e〔或E〕之前的小數(shù)局部中,小數(shù)點(diǎn)左邊應(yīng)有一位〔且只能有一位〕非零的數(shù)字.例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e3稱為“標(biāo)準(zhǔn)化的指數(shù)形式〞。

§3.4浮點(diǎn)型數(shù)據(jù)3.4.2浮點(diǎn)型變量(1)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)局部和指數(shù)局部,分別存放。指數(shù)局部采用標(biāo)準(zhǔn)化的指數(shù)形式。圖類型位數(shù)數(shù)的范圍有效數(shù)字float32

10-37~10386~7位double型64

10-307~1030815~16位longdouble12810-4931~10493218~19位

§3.4浮點(diǎn)型數(shù)據(jù)(2)浮點(diǎn)型變量的分類浮點(diǎn)型變量分為單精度〔float型〕、雙精度〔double型〕和長(zhǎng)雙精度型〔longdouble〕三類形式。例3.4浮點(diǎn)型數(shù)據(jù)的舍入誤差

#include<stdio.h>

voidmain()

{floata,b;

a=123456.789e5;

b=a+20;

printf(“%f\n〞,b);

}

說明:一個(gè)浮點(diǎn)型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)防止將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否那么就會(huì)“喪失〞小的數(shù)運(yùn)行結(jié)果:

123456.789e5

§3.4浮點(diǎn)型數(shù)據(jù)3.4.3浮點(diǎn)型常量的類型C編譯系統(tǒng)將浮點(diǎn)型常量作為雙精度來處理。例如:f=2.45678*4523.65系統(tǒng)先把2.45678和4523.65作為雙精度數(shù),然后進(jìn)行相乘的運(yùn)算,得到的乘也是一個(gè)雙精度數(shù)。最后取其前7位賦給浮點(diǎn)型變量f。如是在數(shù)的后面加字母f或F〔如1.65f,654.87F〕,這樣編譯系統(tǒng)就會(huì)把它們按單精度〔32位〕處理。

§3.5字符型數(shù)據(jù)

3.5.1字符常量(1)用單引號(hào)包含的一個(gè)字符是字符型常量(2)只能包含一個(gè)字符例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a〞

§3.5字符型數(shù)據(jù)

有些以“\〞開頭的特殊字符稱為轉(zhuǎn)義字符\n換行\(zhòng)t橫向跳格\r回車\\反斜杠\dddddd表示1到3位八進(jìn)制數(shù)字\xhhhh表示1到2位十六進(jìn)制數(shù)字例3.5轉(zhuǎn)義字符的使用

#include<stdio.h>

voidmain〔〕

{printf〔″abc\tde\rf\tg\n″〕;

printf(″h\ti\b\bjk\n″);

打印機(jī)上的顯示結(jié)果:

fabcgdehjik顯示屏上的運(yùn)行結(jié)果:

fgde

hjk

§3.5字符型數(shù)據(jù)

3.5.2字符變量字符型變量用來存放字符常量,注意只能放一個(gè)字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語句對(duì)c1,c2賦值:

c1=‘a(chǎn)’;c2=‘b’

;一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。

§3.5字符型數(shù)據(jù)

3.5.3字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法將一個(gè)字符常量放到一個(gè)字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中。圖這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。例3.6向字符變量賦以整數(shù)。

#include<stdio.h>

voidmain()

{charc1,c2;

c1=97;

c2=98;

printf(“%c%c\n〞,c1,c2);

printf(“%d%d\n〞,c1,c2);

說明:在第3和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當(dāng)于以下兩個(gè)賦值語句:

c1=′a′;c2=′b′;因?yàn)椤痑’和’b’的ASCII碼為97和98運(yùn)行結(jié)果:ab

9798例3.7大小寫字母的轉(zhuǎn)換

#include<stdio.h>

voidmain()

{charc1,c2;

c1=’a’;

c2=’b’;

c1=c1-32;

c2=c2-32;

printf(“%c%c″,c1,c2〕;

}說明:程序的作用是將兩個(gè)小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASCII代碼表中可以看到每一個(gè)小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。C語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。運(yùn)行結(jié)果:AB

§3.5字符型數(shù)據(jù)說明:有些系統(tǒng)〔如TurboC〕將字符變量定義為signedchar型。其存儲(chǔ)單元中的最高位作為符號(hào)位,它的取值范圍是-128~127。如果在字符變量中存放一個(gè)ASCII碼為0~127間的字符,由于字節(jié)中最高位為0,因此用%d輸出字符變量時(shí),輸出的是一個(gè)正整數(shù)。如果在字符變量中存放一個(gè)ASCII碼為128~255間的字符,由于在字節(jié)中最高位為1,用%d格式符輸出時(shí),就會(huì)得到一個(gè)負(fù)整數(shù)。

§3.5字符型數(shù)據(jù)3.5.4字符串常量字符串常量是一對(duì)雙撇號(hào)括起來的字符序列.合法的字符串常量:“Howdoyoudo.〞,“CHINA〞,“a〞,“$123.45〞可以輸出一個(gè)字符串,如printf(“Howdoyoudo.〞);

§3.5字符型數(shù)據(jù)‘a’是字符常量,〞a〞是字符串常量,二者不同。如:假設(shè)C被指定為字符變量:charcc=’a’;c=〞a〞;c=〞CHINA〞;

結(jié)論:不能把一個(gè)字符串常量賦給一個(gè)字符變量。

§3.5字符型數(shù)據(jù)CHINA\0C規(guī)定:在每一個(gè)字符串常量的結(jié)尾加一個(gè)“字符串結(jié)束標(biāo)志〞,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標(biāo)志。如:如果有一個(gè)字符串常量〞CHINA〞,實(shí)際上在內(nèi)存中是:

它占內(nèi)存單元不是5個(gè)字符,而是6個(gè)字符,最后一個(gè)字符為’\0’。但在輸出時(shí)不輸出’\0’?!?.6變量賦初值

字符串常量(1)C語言允許在定義變量的同時(shí)使變量初始化如:inta=3;//指定a為整型變量,初值為3

floatf=3.56;//指定f為浮點(diǎn)型變量,初值為3.56charc=‘a(chǎn)’;//指定c為字符變量,初值為‘a(chǎn)’§3.6變量賦初值

(2)可以使被定義的變量的一局部賦初值。如:inta,b,c=5;表示指定a、b、c為整型變量,但只對(duì)c初始化,c的初值為5(3)如果對(duì)幾個(gè)變量賦以同一個(gè)初值,應(yīng)寫成:inta=3,b=3,c=3;表示a、b、c的初值都是3。不能寫成∶inta=b=c3;

注意:初始化不是在編譯階段完成的而是在程序運(yùn)行時(shí)執(zhí)行本函數(shù)時(shí)賦初值的,相當(dāng)于有一個(gè)賦值語句?!?.7各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算

整型〔包括int,short,long〕、浮點(diǎn)型〔包括float,double〕可以混合運(yùn)算。在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算.圖上述的類型轉(zhuǎn)換是由系統(tǒng)自動(dòng)進(jìn)行的§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式3.8.1C運(yùn)算符簡(jiǎn)介C的運(yùn)算符有以下幾類:(1)算術(shù)運(yùn)算符〔+-*/%〕(2)關(guān)系運(yùn)算符〔><==>=<=?。健?3)邏輯運(yùn)算符〔!&&||〕(4)位運(yùn)算符〔<<>>~|∧&〕(5)賦值運(yùn)算符〔=及其擴(kuò)展賦值運(yùn)算符〕(6)條件運(yùn)算符〔?:〕(7)逗號(hào)運(yùn)算符(,〕§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式(8)指針運(yùn)算符〔*和&〕(9)求字節(jié)數(shù)運(yùn)算符〔sizeof〕(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符〔(類型〕)(11)分量運(yùn)算符〔.->〕(12)下標(biāo)運(yùn)算符〔[]〕(13)其他〔如函數(shù)調(diào)用運(yùn)算符〔〕〕§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式3.8.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式(1)根本的算術(shù)運(yùn)算符:+〔加法運(yùn)算符,或正值運(yùn)算符。如:3+5、+3〕-〔減法運(yùn)算符,或負(fù)值運(yùn)算符。如:5-2、-3〕*〔乘法運(yùn)算符。如:3*5〕/〔除法運(yùn)算符。如:5/3〕%〔模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3〕?!?.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式(2)算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性根本的算術(shù)運(yùn)算符:用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù)〕連接起來的、符合C語法規(guī)那么的式子,稱為C算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。

例如:a*b/c-1.5+′a′是一個(gè)合法的表達(dá)式

§3.2常量與變量C語言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別上下次序執(zhí)行,例如先乘除后加減。C規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性)算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣舀?,即先左后右?!?.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式(3)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。一般形式:〔類型名〕〔表達(dá)式〕例如:(double)a將a轉(zhuǎn)換成double類型(int)(x+y)將x+y的值轉(zhuǎn)換成整型(float)〔5%3〕將5%3的值轉(zhuǎn)換成float型例3.8強(qiáng)制類型轉(zhuǎn)換。

#include<stdio.h>

voidmain〔〕

{floatx;

inti;

x=3.6;

i=〔int〕x;

printf("x=%f,i=%d\n",x,i);

說明:有兩種類型轉(zhuǎn)換,一種是在運(yùn)算時(shí)不必用戶指定,系統(tǒng)自動(dòng)進(jìn)行的類型轉(zhuǎn)換,如3+6.5。第二種是強(qiáng)制類型轉(zhuǎn)換。當(dāng)自動(dòng)類型轉(zhuǎn)換不能實(shí)現(xiàn)目的時(shí),可以用強(qiáng)制類型轉(zhuǎn)換。運(yùn)行結(jié)果:

x=3.600000,i=3§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式(4)自增、自減運(yùn)算符作用是使變量的值增1或減1如:++i,--i〔在使用i之前,先使i的值加〔減〕1〕i++,i--〔在使用i之后,使i的值加〔減〕1〕

§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式i++與++i的區(qū)別:

++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:①j=++i;

i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然后i變?yōu)椋础?.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式注意:(1)自增運(yùn)算符〔++〕,自減運(yùn)算符〔--〕,只能用于變量,而不能用于常量或表達(dá)式,(2)++和--的結(jié)合方向是“自右至左〞。

自增〔減〕運(yùn)算符常用于循環(huán)語句中使循環(huán)變量自動(dòng)加1。也用于指針變量,使指針指向下一個(gè)地址

§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式(5)有關(guān)表達(dá)式使用中的問題說明

①ANSIC并沒有具體規(guī)定表達(dá)式中的子表達(dá)式的求值順序,允許各編譯系統(tǒng)自己安排。例如:對(duì)表達(dá)式a=f1()+f2()

并不是所有的編譯系統(tǒng)都先調(diào)用f1(),然后調(diào)用f2()。在有的情況下結(jié)果可能不同。有時(shí)會(huì)出現(xiàn)一些令人容易搞混的問題,因此務(wù)必要小心謹(jǐn)慎。

§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式②C語言中有的運(yùn)算符為一個(gè)字符,有的運(yùn)算符由兩個(gè)字符組成,為防止誤解,最好采取大家都能理解的寫法。例如:不要寫成i+++j的形式,而應(yīng)寫成(i++)+j的形式

§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式③在調(diào)用函數(shù)時(shí),實(shí)參數(shù)的求值順序,C標(biāo)準(zhǔn)并無統(tǒng)一規(guī)定。例如:i的初值為3,如果有下面的函數(shù)調(diào)用:printf〔″%d,%d″,i,i++)在有的系統(tǒng)中,從左至右求值,輸出“3,3〞。在多數(shù)系統(tǒng)中對(duì)函數(shù)參數(shù)的求值順序是自右而左,printf函數(shù)輸出的是“4,3〞。以上這種寫法不宜提倡,最好改寫成j=i++;printf("%d,%d",j,i)不要寫出別人看不懂的也不知道系統(tǒng)會(huì)怎樣執(zhí)行程序

§3.9賦值運(yùn)算符和賦值表達(dá)式

(1)賦值運(yùn)算符賦值符號(hào)“=〞就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如“a=3〞的作用是執(zhí)行一次賦值操作〔或稱賦值運(yùn)算〕。把常量3賦給變量a。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量.

§3.9賦值運(yùn)算符和賦值表達(dá)式

(2)類型轉(zhuǎn)換如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值型或字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。①將浮點(diǎn)型數(shù)據(jù)〔包括單、雙精度〕賦給整型變量時(shí),舍棄浮點(diǎn)數(shù)的小數(shù)局部。如:i為整型變量,執(zhí)行“i=3.56〞的結(jié)果是使i的值為3,以整數(shù)形式存儲(chǔ)在整型變量中.

§3.9賦值運(yùn)算符和賦值表達(dá)式

②將整型數(shù)據(jù)賦給單、雙精度變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中如:將23賦給float變量f,即執(zhí)行f=23,先將23轉(zhuǎn)換成23.00000,再存儲(chǔ)在f中。將23賦給double型變量d,即執(zhí)行d=23,那么將23補(bǔ)足有效位數(shù)字為23.00000000000000,然后以雙精度浮點(diǎn)數(shù)形式存儲(chǔ)到變量d中。

§3.9賦值運(yùn)算符和賦值表達(dá)式

③將一個(gè)double型數(shù)據(jù)賦給float變量時(shí),截取其前面7位有效數(shù)字,存放到float變量的存儲(chǔ)單元〔4個(gè)字節(jié)〕中。但應(yīng)注意數(shù)值范圍不能溢出。如:floatf;doubled=123.456789e100;f=d;就出現(xiàn)溢出的錯(cuò)誤。如果將一個(gè)float型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到16位,在內(nèi)存中以8個(gè)字節(jié)存儲(chǔ)

§3.9賦值運(yùn)算符和賦值表達(dá)式

④字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占1個(gè)字節(jié),而整型變量為2個(gè)字節(jié),因此將字符數(shù)據(jù)〔8?jìng)€(gè)二進(jìn)位〕放到整型變量存儲(chǔ)單元的低8位中。第一種情況:如果所用系統(tǒng)將字符處理為無符號(hào)的字符類型,或程序已將字符變量定義為unsignedchar型,那么將字符的8位放到整型變量低8位,高8位補(bǔ)零例如:將字符‘\376’賦給int型變量i圖

§3.9賦值運(yùn)算符和賦值表達(dá)式

第二種情況:如果所用系統(tǒng)〔如TurboC++〕將字符處理為帶符號(hào)的〔即signedchar〕,假設(shè)字符最高位為0,那么整型變量高8位補(bǔ)0;假設(shè)字符最高位為1,那么高8位全補(bǔ)1。這稱為“符號(hào)擴(kuò)展〞,這樣做的目的是使數(shù)值保持不變,如變量c〔字符‘\376’〕以整數(shù)形式輸出為-2,i的值也是-2。圖

§3.9賦值運(yùn)算符和賦值表達(dá)式

⑤將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)char型變量時(shí),只將其低8位原封不動(dòng)地送到char型變量〔即截?cái)唷?。例如:inti=289;charc=′a′;c=i;賦值情況:圖c的值為33,如果用“%c〞輸出c,將得到字符“!〞〔其ASCII碼為33〕。

§3.9賦值運(yùn)算符和賦值表達(dá)式

將帶符號(hào)的整型數(shù)據(jù)〔int型〕賦給long型變量時(shí),要進(jìn)行符號(hào)擴(kuò)展,將整型數(shù)的16位送到long型低16位中:如果int型數(shù)據(jù)為正值〔符號(hào)位為0〕,那么long型變量的高16位補(bǔ)0;如果int型變量為負(fù)值〔符號(hào)位為1〕,那么long型變量的高16位補(bǔ)1,以保持?jǐn)?shù)值不改變。反之,假設(shè)將一個(gè)long型數(shù)據(jù)賦給一個(gè)int型變量,只將long型數(shù)據(jù)中低16位原封不動(dòng)地送到整型變量〔即截?cái)唷场?/p>

§3.9賦值運(yùn)算符和賦值表達(dá)式

例如:inta;longb=8;a=b

賦值情況如圖:圖如果b=65536〔八進(jìn)制數(shù)0200000〕,那么賦值后a值為0。見圖3.14圖3.14

§3.9賦值運(yùn)算符和賦值表達(dá)式

⑦將unsignedint型數(shù)據(jù)賦給longint型變量時(shí),不存在符號(hào)擴(kuò)展問題,只需將高位補(bǔ)0即可。將一個(gè)unsigned類型數(shù)據(jù)賦給一個(gè)占字節(jié)數(shù)相同的非unsigned型整型變量〔例如:unsignedint->int,unsignedlong->long,unsignedshort->short〕,將unsigned型變量的內(nèi)容原樣送到非unsigned型變量中,但如果數(shù)據(jù)范圍超過相應(yīng)整型的范圍,那么會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤。

§3.9賦值運(yùn)算符和賦值表達(dá)式

例如:unsignedinta=65535;intb;b=a;

圖將a整個(gè)送到b中,由于b是int,第1位是符號(hào)位,因此b成了負(fù)數(shù)。根據(jù)補(bǔ)碼知識(shí)可知,b的值為-1,可以用printf〔″%d″,b〕;來驗(yàn)證。⑧將非unsigned型數(shù)據(jù)賦給長(zhǎng)度相同的unsigned型變量,也是原樣照賦〔連原有的符號(hào)位也作為數(shù)值一起傳送〕。

例3.9有符號(hào)數(shù)據(jù)傳送給無符號(hào)變量。

#include<stdio.h>

voidmain〔〕

{unsigneda;

intb=-1;

a=b;

printf〔″%u\n″,a〕;

說明:“%u〞是輸出無符號(hào)數(shù)時(shí)所用的格式符。如果b為正值,且在0~32767之間,那么賦值后數(shù)值不變。賦值情況見圖圖運(yùn)行結(jié)果:65535

§3.9賦值運(yùn)算符和賦值表達(dá)式

(3)復(fù)合的賦值運(yùn)算符在賦值符“=〞之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符。例如:a+=3等價(jià)于a=a+3x*=y+8等價(jià)于x=x*〔y+8〕x%=3等價(jià)于x=x%3以“a+=3〞為例來說明,它相當(dāng)于使a進(jìn)行一次自加〔3〕的操作。即先使a加3,再賦給a。

§3.9賦值運(yùn)算符和賦值表達(dá)式

為便于記憶,可以這樣理解:①a+=b(其中a為變量,b為表達(dá)式)②a+=b〔將有下劃線的“a+〞移到“=〞右側(cè)〕|___↑③a=a+b〔在“=〞左側(cè)補(bǔ)上變量名a〕

§3.9賦值運(yùn)算符和賦值表達(dá)式

注意:如果b是包含假設(shè)干項(xiàng)的表達(dá)式,那么相當(dāng)于它有括號(hào)。如:①x%=y+3②x%=(y+3)|__↑③x=x%(y+3)(不要錯(cuò)寫成x=x%y+3)但凡二元〔二目〕運(yùn)算符,都可以與賦值符一起組合成復(fù)合賦值符。C語言規(guī)定可以使用10種復(fù)合賦值運(yùn)算符:+=,-=,*=,/=,%=,<<=,>>=,&=,∧=,|=

§3.9賦值運(yùn)算符和賦值表達(dá)式

(4)賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為“賦值表達(dá)式〞。一般形式為:<變量><賦值運(yùn)算符><表達(dá)式>例如:“a=5〞是一個(gè)賦值表達(dá)式

§3.9賦值運(yùn)算符和賦值表達(dá)式

對(duì)賦值表達(dá)式求解的過程是:①求賦值運(yùn)算符右側(cè)的“表達(dá)式〞的值;②賦給賦值運(yùn)算符左側(cè)的變量。例如:賦值表達(dá)式“a=3*5〞的值為15,執(zhí)行表達(dá)式后,變量a的值也是15。注意:一個(gè)表達(dá)式應(yīng)該有一個(gè)值

§3.9賦值運(yùn)算符和賦值表達(dá)式

左值(lvalue)

:賦值運(yùn)算符左側(cè)的標(biāo)識(shí)符變量可以作為左值;而表達(dá)式就不能作為左值(如a+b);常變量也不能作為左值,

右值(lvalue)

:出現(xiàn)在賦值運(yùn)算符右側(cè)的表達(dá)式

左值也可以出現(xiàn)在賦值運(yùn)算符右側(cè),因而左值都可以作為右值。

§3.9賦值運(yùn)算符和賦值表達(dá)式

賦值表達(dá)式中的“表達(dá)式〞,又可以是一個(gè)賦值表達(dá)式.例如:a=(b=5)分析:括弧內(nèi)的“b=5〞是一個(gè)賦值表達(dá)式,它的值等于5。執(zhí)行表達(dá)式“a=(b=5)〞相當(dāng)于執(zhí)行“b=5〞和“a=b〞兩個(gè)賦值表達(dá)式。賦值運(yùn)算符按照“自右而左〞的結(jié)合順序,因此,“(b=5)〞外面的括弧可以不要,即“a=(b=5)〞和“a=b=5〞等價(jià).

§3.9賦值運(yùn)算符和賦值表達(dá)式

請(qǐng)分析下面的賦值表達(dá)式∶(a=3*5)=4*3分析:先執(zhí)行括弧內(nèi)的運(yùn)算,將15賦給a,然后執(zhí)行4*3的運(yùn)算,得12,再把12賦給a。最后a的值為12,整個(gè)表達(dá)式的值為12??梢钥吹健?a=3*5)出現(xiàn)在賦值運(yùn)算符的左側(cè),因此賦值表達(dá)式(a=3*5)是左值注意:在對(duì)賦值表達(dá)式(a=3*5)求解后,變量a得到值15執(zhí)行(a=3*5)=4*3時(shí),實(shí)際上是將4*3的積12賦給變量a,而不是賦給3*5。不能寫成:a=3*5=4*3

§3.9賦值運(yùn)算符和賦值表達(dá)式

賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。

如:a+=a-=a*a分析:此賦值表達(dá)式的求解步驟如下∶①先進(jìn)行“a-=a*a〞的運(yùn)算,它相當(dāng)于a=a-a*a,a的值為12-144=-132。②再進(jìn)行“a+=-132〞的運(yùn)算,相當(dāng)于a=a+(-132),a的值為-132-132=-264。

§3.9賦值運(yùn)算符和賦值表達(dá)式

將賦值表達(dá)式作為表達(dá)式的一種,使賦值操作不僅可以出現(xiàn)在賦值語句中,而且可以以表達(dá)式形式出現(xiàn)在其他語句〔如輸出語句、循環(huán)語句等〕中.如:printf("%d",a=b);

分析:如果b的值為3,那么輸出a的值(也是表達(dá)式a=b的值)為3。在一個(gè)語句中完成了賦值和輸出雙重功能。

§3.10逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符:將兩個(gè)表達(dá)式連接起來,又稱為“順序求值運(yùn)算符〞如:3+5,6+8

一般形式:

表達(dá)式1,表達(dá)式2求解過程:先求解表達(dá)式1,再求解表達(dá)式2。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式2的值。

逗號(hào)表達(dá)式的值為14

§3.10逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式例:逗號(hào)表達(dá)式a=3*5,a*4

分析:賦值運(yùn)算符的優(yōu)先級(jí)別高于逗號(hào)運(yùn)算符,因此應(yīng)先求解a=3*5.a的值為15,然后求解a*4,得60。整個(gè)逗號(hào)表達(dá)式的值為60。一個(gè)逗號(hào)表達(dá)式又可以與另一個(gè)表達(dá)式組成一個(gè)新的逗號(hào)表達(dá)式如:〔a=3*5,a*4〕a+5先計(jì)算出a的值等于15,再進(jìn)行a*4的運(yùn)算得60〔但a值未變,仍為15〕,再進(jìn)行a+5得20,即整個(gè)表達(dá)式的值為20。

§3.10逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)表達(dá)式的一般形式可以擴(kuò)展為

表達(dá)式1,表達(dá)式2,表達(dá)式3,……,表達(dá)式n它的值為表達(dá)式n的值。逗號(hào)運(yùn)算符是所有運(yùn)算符中級(jí)別最低的例:①x=〔a=3,6*3〕②x=a=3,6*3賦值表達(dá)式,將一個(gè)逗號(hào)表達(dá)式的值賦給x,x的值等于18逗號(hào)表達(dá)式,包括一個(gè)賦值表達(dá)式和一個(gè)算術(shù)表達(dá)式,x的值為3,整個(gè)逗號(hào)表達(dá)式的值為18?!?.10逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式注意:并不是任何地方出現(xiàn)的逗號(hào)都是作為逗號(hào)運(yùn)算符。例如函數(shù)參數(shù)也是用逗號(hào)來間隔的。如:printf(“%d,%d,%d〞,a,b,c);“a,b,c〞并不是一個(gè)逗號(hào)表達(dá)式,它是printf函數(shù)的3個(gè)參數(shù)printf(“%d,%d,%d〞,(a,b,c),b,c)“〔a,b,c〕〞是一個(gè)逗號(hào)表達(dá)式,它的值等于c的值。第四章最簡(jiǎn)單的c程序設(shè)計(jì)170整理ppt

主要內(nèi)容4.1C語句概述4.2賦值語句4.3數(shù)據(jù)輸入輸出的概念及在c語言中的實(shí)現(xiàn)4.4字符數(shù)據(jù)的輸入輸出4.5格式輸入與輸出4.6順序結(jié)構(gòu)程序設(shè)計(jì)舉例171整理ppt

§4.1C語句概述C程序源程序文件1源程序文件2預(yù)處理命令數(shù)據(jù)聲明函數(shù)1函數(shù)首部函數(shù)體數(shù)據(jù)聲明執(zhí)行語句函數(shù)n源程序文件n§4.1C語句概述〔續(xù)〕一個(gè)c程序可以有假設(shè)干個(gè)源程序文

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論