




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計主編:高立兵職業教育“十二五”規劃教材東北師范大學出版社1高校教育精品PPTC語言程序設計主編:高立兵職業教育“十二五”規劃教材東北師項目7
函數1項目8
指針2項目9
結構與聯合3項目10
位運算4項目11
文件5目錄項目1
C語言概述1項目2
數據類型、運算符與表達式2項目3
順序結構程序設計3項目4
選擇結構程序設計4項目5
循環結構程序設計5項目6
數組5附件52高校教育精品PPT項目7函數1項目8指針2項目9結構與聯合3項目10位項目1C語言概論1項目導讀項目目標項目任務3高校教育精品PPT項目1C語言概論1項目導讀3高校教育精品PPT本項目主要對C語言的一些基礎知識及其字符集和詞匯進行介紹,使讀者在學習C語言之前對其有個全面的認識。項目導讀●安裝、配置TC2.0和VC++6.0,成功啟動TC2.0和VC++6.0。●能編寫一個簡單的C程序的源文件,并編譯該源文件,鏈接目標文件得到可執行文件。項目目標4高校教育精品PPT本項目主要對C語言的一些基礎知識及其字符集和詞匯任務1.1C語言的發展與特點
C語言是1972年由美國的DennisRitchie設計發明的,并首次在配備了UNIX操作系統的DECPDP-11計算機上實現。它由早期的編程語言BCPL(BasicCombinedProgrammingLanguage)發展演變而來。C語言的特點1、C語言是中級語言2、C語言是結構化語言3、C語言功能齊全4、C語言適用范圍廣
5高校教育精品PPT任務1.1C語言的發展與特點C語言是197任務1.2認識C語言本任務通過幾個簡單的C程序,介紹C語言的基本組成和格式。案例1.1main(){printf(“Thisisacprogram.\n”);}本程序的功能是輸入下列一行信息:Thisisacprogram.6高校教育精品PPT任務1.2認識C語言本任務通過幾個簡單的C程序任務1.2認識C語言程序說明:main函數是“主函數”,每一個C程序必須有一個main函數。函數體由大括弧{}括起來。本例中,主函數內只有一個輸出語句,printf(“Thisisacprogram.\n”);是C語言的輸出函數(具體詳見項目3)。雙引號內的字符串將照原樣輸出。“\n”是換行符,即在輸出“Thisisacprogram.”后換行。分號是C語句的基本構成,每一個C語句后都應再加上分號,分號是語句的結束標志。7高校教育精品PPT任務1.2認識C語言程序說明:7高校教育精品PPT任務1.2認識C語言本任務通過幾個簡單的C程序,介紹C語言的基本組成和格式。案例1.2main()/*求兩數之和*/{inta,b,sum;/*本行開始的以下4條為C語句*/a=123;b=456;sum=a+b;printf(“sumis%d\n”,sum);}本程序的功能是求兩數之和。8高校教育精品PPT任務1.2認識C語言本任務通過幾個簡單的C程序任務1.2認識C語言程序說明:/*……*/是注釋語句,此信息對編譯和運行不起作用。(2)程序第二行的含義是定義a、b和sum為整體變量。(3)“sum=a+b;”的含義是把變量a和b的和賦給變量sum。(4)該程序的輸出結果是:sumis579。9高校教育精品PPT任務1.2認識C語言程序說明:9高校教育精品PPT任務1.2認識C語言案例1.3
main()/*求一個數的絕對值*/{intx,y;scanf(“%d”,&x);y=abs(x);printf(“abs=%d”,y);}intabs(intz){intw;if(z>=0)w=z;elsew=-z;return(w);}本程序的功能是求z的絕對值。10高校教育精品PPT任務1.2認識C語言案例1.310高校教育精品PPT任務1.2認識C語言程序說明:(1)本程序包括兩個函數:主函數main和被調用函數abs。(2)函數abs的作用是將z的絕對值返回給主調函數main(返回值是通過函數名abs帶回到main函數的調用處的)。(3)程序中的scanf函數的作用是從鍵盤上輸入x的值。&x中的“&”的含義是“取地址”,此scanf函數的作用是將數值輸入到變量x的地址所標志的單元中去,也就是輸入給變量x。關于scanf函數詳見項目3。(4)main函數中的第四行為調用abs函數,在調用時將實際參數x傳給abs函數中的形式參數z,然后輸入y的值。(5)printf函數中雙引號內的abs=%d,在輸出時,其中的%d將由y值取代,“abs=”原樣輸出。該程序的運行結果是:假定從鍵盤上輸入x的值為:-6↙
則y=6(6)本例用到了函數調用、實際參數和形式參數等概念,只是做了簡單的解釋,讀者若對此不大理解,可先不予深究,在學到函數項目后的相關知識后,問題自會迎刃而解。這里介紹此案例的目的,是想讓讀者對C語言的組成和形式有一個初步了解。11高校教育精品PPT任務1.2認識C語言程序說明:11高校教育精品PPT任務1.2認識C語言通過以上三個例子,我們可以得到以下幾點:
1、C程序是由函數構成的。一個C源程序至少包含一個main函數,也可以包含一個main函數和若干個其它函數。因此,函數是C語言的基本單位。被調用函數可以是系統提供的庫函數(例如printf函數和scanf函數),也可以是用戶根據需要自編譯的用戶函數(例如案例1.3中的abs函數)。2、函數及其結構。一個函數由兩部分組成:即函數首部和函數體。函數首部包括函數類型、函數名、函數參數(形參)、形參類型;函數體一般包括說明部分和執行部分。函數結構如下:
函數類型函數名(形參表)
{↓
說明部分:函數體執行部分;↑
﹜函數體以左花括號“{”開始,以右花括號“}”結束,其間可以有說明部分和執行部分。在某些情況下,甚至可以既無說明部分,也無執行部分。如:dump(){}它是一個空函數,表示什么也不做,但它是合法的12高校教育精品PPT任務1.2認識C語言通過以上三個例子,我們可任務1.2認識C語言3、一個C程序中,不論main函數在整個程序中的位置如何(main函數可以放在程序最前頭,也可以放在程序最后頭,或在一些函數之前,或在另一些函數之后),但程序執行時,總是從main函數開始執行。4、C程序書寫格式自由,一行中可以書寫多個語句,一個語句也可以書寫在連續的多行上。當一行寫不下時,用連字符“-”連接,并且每條語句的后面以分號“;”作為結束標記。5、C語言本身沒有輸入輸出語句。C語言的函數庫提供了標準輸入輸出函數。6、可以用/*······*\對C程序中的任何一部分做注釋,以增加程序的可讀性。13高校教育精品PPT任務1.2認識C語言3、一個C程序中,不論任務1.3C程序的執行過程C語言程序是一種編譯型的中級語言。用C語言編寫的源程序必須先進行編譯和連接,生成可執行的程序之后才能執行。執行一個C語言程序一般經過如下幾個步驟。1、編輯2、編譯3、連接4、運行C語言程序的開發是一個由編輯開始,經過編譯、連接和運行,程序如果有錯誤,又回到編輯的反復循環過程,如圖所示。14高校教育精品PPT任務1.3C程序的執行過程C語言程序是一種項目2數據類型、運算符與表達式1項目導讀項目目標項目任務15高校教育精品PPT項目2數據類型、運算符與表達式1項目導讀15高校教育精
C語言中,為解決具體問題,需要采用多種類型的數據;本項目將主要介紹C語言的數據類型、常用運算符和表達式。項目導讀●學會聲明整型變量,為聲明的變量賦值,交換變量的值,輸出變量的值。●學會聲明浮點型變量,為聲明的浮點型變量賦值,對浮點型變量值進行加法運算,并將運算結果存放到浮點型變量中,輸出浮點型變量的值。●學會聲明字符型變量,為聲明的字符型變量賦值,按%d或%c格式輸出變量的值。項目目標16高校教育精品PPTC語言中,為解決具體問題,需要采用多種類型的數據任務2.1常量、變量和標示符2.1.1標識符在計算機高級語言中,用來對變量、符號常量名、函數、數組、類型等命名的有效字符序列統稱為標識符(identifier)。簡單地說,標識符就是一個對象的名字。
C語言規定標識符只能由字母、數字和下劃線組成,且第1個字符必須為字母或下劃線。下面列出的是合法的標識符,可以作為變量名:
Sum,average,_total,Class,day,month,Student_name,lotus_1_2_3,BASIC,li_ling.
下面是不合法的標識符和變量名:M.D.John,¥123,#33,3D64,a>b注意:編譯系統將大寫字母和小寫字母認為是兩個不同的字符。因此,sum和SUM是兩個不同的變量名。同樣,Class和class也是兩個不同的變量名。通常,變量名用小寫字母表示,習慣用對應的英文字母縮寫形式,做到見名知意,與人們日常習慣一致,以增加可讀性。17高校教育精品PPT任務2.1常量、變量和標示符2.1.1標識符任務2.1常量、變量和標示符2.1.2常量和變量1、常量
在程序運行過程中,其值不能被改變的量稱為常量。如案例2.1程序中的5,9,32和案例2.2程序中的1000,0.0036,0.0225,0.0198都是常量。數值常量就是數學中的常數。常用的常量有以下幾類:⑴整型常量。如1000,12345,0,-345等都是整型常量。⑵實型常量。有兩種表現形式:①十進制小數形式,由數字和小數點組成。如122.456,0.345,-55.79,0.0,12.0等。②指數形式,如12.34e3(代表12.34×103),-345.87e-25(代表-345.87×10-25),0.145E25(代表0.145×10-25)等。由于在計算機輸入或輸出時,無法表示上標或下標,故規定以字母e或E代表以10為底的指數。但應注意:e或E之前必須有數字,且e或E后面必須為整數。如不能寫成e4,12e2.5。18高校教育精品PPT任務2.1常量、變量和標示符2.1.2常量和變量18高任務2.1常量、變量和標示符⑶字符常量。有兩種形式的字符常量:①普通字符,用單撇號括起來的一個字符,如‘a’,‘Z’,‘3’,‘?’,‘#’。
注意:單撇號只是界限符,字符常量只能是一個字符,不包括單撇號。‘a’和‘A’是不同的字符常量。字符常量存儲在計算機存儲單元中時,并不是存儲字符(如a,z,#等)本身,而是以其代碼(一般采用ASCII代碼)存儲的,例如字符‘A’的ASCII話代碼是97,因此,在存儲單元中存放的是97(以二進制形式存放)。ASCII字符與代碼對照表見附錄Ⅰ。
②轉義字符,除了以上形式的字符常量外,C還允許用一種特殊形式的字符常量,就是以字符﹨開頭的字符序列。例如,前面已經遇到過的,在printf函數中的‘﹨n’它代表一個“換行”符。常用的以“﹨”開頭的特殊字符見表2.119高校教育精品PPT任務2.1常量、變量和標示符⑶字符常量。任務2.1常量、變量和標示符表2.120高校教育精品PPT任務2.1常量、變量和標示符表2.120高校教育精品PP任務2.1常量、變量和標示符⑷字符串常量。如“boy”,“123”等,用雙撇號把若干個字符括起來,字符串常量是雙撇號中的全部字符(但不包括雙撇號本身)。注意不能錯寫成‘CHINA’,‘boy’,‘123’。單撇號內只能包含一個字符,雙撇號內可以包含一個字符串。⑸符號常量。用#define指令,指定用一個符號名稱代表一個常量。如:#definePI3.1416∥注意行末沒有分號經過以上的指定后,本文件中從此行開始所有的PI都代表3.1416。在對程序進行編譯前,預處理器先對PI進行處理,把所有的PI全部置換為3.1416。這種用一個符號名代表一個常量的,稱為符號常量。在預編譯后,符號常量全部變成字面常量(3.14159)。使用符號常量有以下好處。
①含義清楚。
②在需要改變程序中多處用到的同一個常量時,能做到“一改全改”。
21高校教育精品PPT任務2.1常量、變量和標示符⑷字符串常量任務2.1常量、變量和標示符
2、變量變量代表一個有名字的、具有特定屬性的存儲單元。它用來存放數據,也就是存放變量的值。在程序運行期間,變量的值是可以改變的。變量必須先定義,后使用。在定義時指定該變量的名字和類型。一個變量應該有一個名字,以便被引用。請注意區分變量名和變量值這兩個不同的概念,圖2.1中a是變量名,3是變量a的值,即存放在變量a的內存單元中的數據。變量名的實質是以一個名字代表的一個存儲地址。在對程序編譯連接時由編譯系統給每一個變量名分配對應的內存地址。從變量中取值,實際上是通過變量名找到相應的內存地址,從該儲存單元中讀取數據。圖2.122高校教育精品PPT任務2.1常量、變量和標示符2、變量圖2.任務2.1常量、變量和標示符
3、常變量如constinta=3表示a被定義為一個整型變量,指定其值為3,而且在變量存在期間其值不能改變。常變量與常量的異同是:常變量具有變量的基本屬性,有類型,占存儲單元,只是不允許改變其值。可以說,常變量是有名字的不變量,而常量是沒有名字的不變量,有名字就便于在程序中被引用。23高校教育精品PPT任務2.1常量、變量和標示符3、常變量23任務2.2數據類型在定義變量時需要指定變量的類型。C語言要求在定義所有的變量時都要指定變量的類型。常量也是區分類型的。所謂類型,就是對數據分配存儲單元的安排,包括存儲單元的長度(占多少字節)以及數據的存儲形式。不同的類型分配不同的長度和存儲形式。C語言允許使用的類型見圖2.2。圖2.224高校教育精品PPT任務2.2數據類型在定義變量時需要指定變量的任務2.2數據類型
2.2.1整型數據
1、整型數據的分類
⑴基本整型(int型)編譯系統為int型數據分配2個字節或4個字節(有具體的C編譯系統自行決定)。如Turbo C2.0為每一個整型數據分配2個字節(16個二進位),而VisualC++為每一個整型數據分配4個字節(32位)。在存儲單元中的存儲方式是:用整數的補碼(complement)形式存放。5的補碼-5的補碼25高校教育精品PPT任務2.2數據類型2.2.1整型數據5的補碼-5的補任務2.2數據類型⑵短整型(shortint)
類型名為shortint或short。如用VisualC++5.0,編譯系統分配給int數據4個字節,短整型2個字節。存儲方式與int型相同。一個短整型變量的值的范圍是-32768~32767。⑶長整型(longint)
類型名為longint或long。一個longint型變量的值的范圍是-231~(231-1),即-2147483648~2147483647(VisualC++5.0),編譯系統分配給long數據4個字節。⑷雙長整型(longlongint)或longlong,一般分配8個字節。說明:C標準沒有具體規定各種類型數據所占用存儲單元的長度,這是由各編譯系統自行決定的。C標準只要求long型數據長度不短于int型,short型不長于int型。即
Sizeof(short)≦sizeof(int)≦sizeof(longlong)Sizeof是測量類型或變量長度的運算符。26高校教育精品PPT任務2.2數據類型⑵短整型(short任務2.2數據類型
2、整型變量的符號屬性
以上介紹的幾種類型,變量值在存儲單元中都是以補碼形式存儲的,存儲單元中的第1個二進位制代表符號。整型變量的值的范圍包括負數到正數(見表2.2)。表2.2整型數據常見的存儲空間和值的范圍27高校教育精品PPT任務2.2數據類型2、整型變量的符號屬性任務2.2數據類型
在實際應用中,有的數據的范圍常常只有正值(如學號、年齡、庫存量、存款額等)。為了充分利用變量的值的范圍,可以將變量定義為“無符號”類型。可以在類型符號前面加上修飾符unsigned,表示指定該變量是“無符號整數”類型。如果加上修飾符signed,則是“有符號”類型。因此,在以上4種整型數據的基礎上可以擴展為以下8種整型數據。即有符號基本整型[signed]int;
無符號基本整型unsignedint;
有符號短整型[signed]short[int];
無符號短整型unsignedshort[int];
有符號長整型[signed]long[int];
無符號長整型unsignedlong[int];
有符號雙長整型[signed]longlong[int];
無符號雙長整型unsignedlonglong[int];以上方括號表示其中的內容是可選的,既可以有,也可以沒有。如果既未指定為signed也未指定為unsigned的,默認為“有符號類型”。如signedinta和inta等價。28高校教育精品PPT任務2.2數據類型在實際應用中,有的數據任務2.2數據類型2.2.2字符型數據1.字符與字符代碼字符與字符代碼并不是任意寫一個字符,程序都能識別的。例如圓周率π在程序中是不能識別的,只能使用系統的字符集中的字符,目前大多數系統采用ASCII字符集。各種字符集(包括ASCII字符集)的基本集都包括了127個字符。其中包括:●字母:大寫英文字母A~Z,小寫英文字母a~z。●數字:0~9。●專門符號:29個:!”#&‘()*+,-·∕:;﹤=﹥?[﹨]^-{|}~●空格符:空格、水平制表符(tab)、換行、換頁(formfeed)。●不能顯示的字符:空(null)字符(以‘﹨0’表示)、警告(以‘﹨a’表示)、退格(以‘﹨b’表示)、回車(以‘﹨r’表示)等。29高校教育精品PPT任務2.2數據類型2.2.2字符型數據29高校教育精任務2.2數據類型
2、字符變量字符變量使用類型符char定義字符變量。Char是英文character(字符)的縮寫,見名即可知意。如:charc=;‘?’
定義c為字符型變量并使初值為字符‘?’。‘?’的ASCII代碼是63,系統把整數63賦給變量c。c是字符變量,實質上是一個字節的整形變量,由于它常用來存放字符。所以稱為字符變量。可以把0~127之間的整數賦給一個字符變量。在輸出字符變量的值時,可以選擇以十進制整數形式輸出,或以字符形式輸出。如:
printf(“%d%c﹨n”,c,c);輸出結果是:63?用“%d”格式輸出十進制整數63,用%c格式用字符形式輸出字符‘?’。30高校教育精品PPT任務2.2數據類型2、字符變量30高校教育精任務2.2數據類型2.2.3浮點型數據
浮點型數據是用來表示具有小數點的實數的。浮點數類型包括float(單精度浮點型)、double(雙精度浮點型)、longdouble(長雙精度浮點型)。(1)float型(單精度浮點型)。編譯系統為每一個float型變量分配4個字節,數值以規范化的二進制數值形式存放在存儲單元中。在存儲時,系統將實型數據分成小數部分和指數部分兩個部分,分別存放。小數部分的小數點前面的數為0.如3.14159在內存中的存放形式可以用圖2.9表示。圖2.931高校教育精品PPT任務2.2數據類型2.2.3浮點型數據圖2.931任務2.2數據類型
⑵double型(雙精度浮點型)。為了擴大能表示的數值范圍,用8個字節存儲一個double型數據,可以得到15位有效數字,數值范圍為-1.7×10-308~1.7×10308。在C語言中進行浮點數的算術運算時,將float型數據都自動轉換為double型,然后進行運算。⑶longdouble型(長雙精度)型,不同的編譯系統對longdouble型的處理方法不同,TurboC對longdouble型分配16個字節。而VisualC++6.0則對longdouble型和double型一樣處理,分配8個字節。請讀者在使用不同的編譯系統時注意其差別。表2.4列出實型數據的有關情況表2.432高校教育精品PPT任務2.2數據類型⑵double型(雙精任務2.3運算符和表達式2.3.1基本的算術運算符表2.5最常用的算術運算符
33高校教育精品PPT任務2.3運算符和表達式2.3.1基本的算術運算符表2任務2.3運算符和表達式2.3.2自增、自減運算符
作用是使變量的值加1或減1,例如:
++i,--i(在使用i之前,先使i的值加(減)1)i++,
i--(在使用i之后,使i的值加(減)1)粗略地看,++i和i++的作用相當于i=i+1。但++i和i++的不同之處在于++i是先執行i=i+1后,再使用i的值;而i++是先使用i的值后,再執行i=i+1。如果i的原值等于3,請分析下面的賦值語句:j=++i;(i的值先變成4,再賦給j,j的值為4)j=i++;(先將i的值3賦給j,j的值為3,然后i變為4)又例如:i=3;printf(“%d”,i++);輸出4。若改為Printf(“%d﹨n”,i++);則輸出3。34高校教育精品PPT任務2.3運算符和表達式2.3.2自增、自減運算符3任務2.3運算符和表達式2.3.3算術表達式和運算符的優先級與結合性
用算術運算符和括號將運算對象(也稱操作數)連接起來的、符合C語法規則的式子,稱為C算術表達式。運算對象包括常量、變量、函數等。例如,下面是一個合法的C算術表達式:a*b∕c-1.5+‘a’C語言除了規定了運算符的優先級外,還規定了運算符的結合性。在表達式求值時,先按運算符的優先級別順序執行,例如先乘除后加減。如表達式a-b*c,b的左側為減號,右側為乘號,而乘號優先級高于減號,因此,相當于a-(b*c)。如果在一個運算對象兩側的運算符的優先級別相同,如a-b+c,則按規定的“結合方向”處理。C語言規定了各種運算符的結合方向(結合性),算術運算符的結合方向都是“自左至右”,及先左后右,因此b先與減號結合,執行a-b的運算,然后再執行加c的運算。“自左至右的結合方向”又稱“左結合性”,即運算對象先于左面的運算符結合。以后可以看到有些運算符的結合方向為“自右至左”,即右結合性(例如,賦值運算符,若有a=b=c,按從右到左順序,先把變量c的值賦給變量b,然后把變量b的值賦給變量a)。
35高校教育精品PPT任務2.3運算符和表達式2.3.3算術表達式和運算符的任務2.3運算符和表達式2.3.4不同類型數據間的混合運算在程序中經常會遇到不同類型的數據進行運算,如5*3.5。如果一個運算符的兩側的數據類型不同,則先自動進行類型轉換,使二者具有同一種類型,然后進行運算。因此整型、實型、字符型數據間可以進行混合運算。規律為:(1)+、-、*、∕運算的兩個數中有一個數為float或double型,結果是double型,因為系統將所有float型數據都先轉換為double型,然后進行運算。(2)如果int型與float或double型數據進行運算,先把int型和float型數據轉換為double型,然后再進行運算,結果是double型。(3)字符(char)型數據與整型數據進行運算,就是把字符的ASCII代碼與整型數據進行運算。如:12+‘A’,由于字符A的ASCII代碼是65,相當于12+65,等于77。字符數據可以直接與整型數據進行運算。如果字符型數據與實型數據進行運算,則將字符的ASCII代碼轉換為double型數據,然后進行運算。36高校教育精品PPT任務2.3運算符和表達式2.3.4不同類型數據間的混任務2.3運算符和表達式示例2.1編程:給定一個大寫字母,要求用小寫字母輸出。
編寫程序:#include﹤stdio.h>intmain(){charc1,c2;c1=‘A’∥將字符‘A’的ASCII代碼放到c1變量中c2=c1+32;∥得到字符‘a’的ASCII代碼,放在c2變量中printf(“%c﹨n”,c2);∥輸出c2的值,是一個字符printf(“%d﹨n”,c2);∥輸出c2的值,是字符‘a’的ASCII代碼reurn0}運行結果:
a9737高校教育精品PPT任務2.3運算符和表達式示例2.1編程:給任務2.3運算符和表達式2.3.6C運算符
除了算術運算符外,C還提供其他運算符,共有以下幾類:⑴關系運算符(﹥﹤==﹥=﹤=!=)⑵邏輯運算符(!&&||)
⑶位運算符(﹤﹤﹥﹥~|^&)⑷賦值運算符(=及其擴展賦值運算符)⑸條件運算符(?:)⑹逗號運算符(,)⑺指針運算符(*和&)⑻求字節數運算符(sizeof)⑼強制類型轉換運算符((類型))⑽成員運算符(-﹥)
⑾下標運算符([])
⑿其他(如函數調用運算符())38高校教育精品PPT任務2.3運算符和表達式2.3.6C運算符38高校任務2.3運算符和表達式2.3.5強制類型轉換運算符可以利用強制類型轉換運算符將一個表達式轉換成所需類型。例如:(double)a(將a轉換成double類型)(int)(x+y)(將x+y的值轉換成int型)(float)(5%3)(將5%3的值轉換成float型)其一般形式為
(類型名)(表達式)
注意,表達式應該用括號括起來。如果寫成(int)x+y則只將x轉換成整型,然后與y相加。需要說明的是,在強制類型轉換時,得到一個所需類型的中間數據,而原來變量的類型未發生變化。例如:a=(int)x如果已定義x為float型變量,a為整型變量,進行強制類型運算(int)x后得到一個int類型的臨時值,它的值等于x的整數部分,把它賦給a,注意x的值和類型都未變化,仍為float型。該臨時值在賦值后就不存在了。39高校教育精品PPT任務2.3運算符和表達式2.3.5強制類型轉換運算符任務2.4賦值語句在C程序中,最常用的語句是:賦值語句和輸入輸出語句。其中最基本的是賦值語句。程序中的計算功能大部分是由賦值語句實現的,幾乎每一個有實用價值的程序都包括賦值語句。有的程序中的大部分語句都是賦值語句。先分析一個例子。給出三角形的三邊長,求三角形面積。解題思路:假設給定的三個邊符合構成三角形的條件:任意兩邊之和大于第三邊。解此題的關鍵是要找到求三角形面積的公式。從數學知識已知求三角形面積的公式為:其中s=(a+b+c)∕2。40高校教育精品PPT任務2.4賦值語句在C程序中,最常用的語句任務2.4賦值語句
編寫程序:根據上面的公式編寫程序如下:#include﹤stdio.h﹥#include﹤math.h﹥intmain(){doublea,b,c,s,area;∥定義各變量,均為double型a=2.67;∥對邊長a賦值b=4.43;∥對邊長b賦值c=5.21;∥對邊長c賦值s=(a+b+c)/2;∥計算sarea=sqrt(s*(s-a)*(s-b)*(s-c));∥計算areaprintf(“a=%f﹨tb=%f﹨t%f﹨n”,a,b,c);∥輸出三邊a,b,c的值printf(“area=%f﹨n”,area);∥輸出面積area的值return0;}運行結果:a=2.670000b=4.4300005.210000area=8.90343141高校教育精品PPT任務2.4賦值語句編寫程序:根據上面的公任務2.4賦值語句
2.4.1賦值運算符賦值符號=就是賦值運算符,它的作用是將一個數據賦給一個變量。如a=3的作用是執行一次賦值操作(或稱賦值運算)。把常量3賦給變量a。也可以將一個表達式的值賦給一個變量。2.4.2復合的賦值運算符在賦值符=之前加上其它運算符,可以構成復合的運算符。如果在“=”前加一個“+”運算符就成了復合運算符“+=”。例如可以有以下的復合賦值運算:
a+=3等價于a=a+3x*=y+8等價于x=x*(y+8)x%=3等價于x=x%3
以“a+=3”為例來說明,它相當于使a進行一次自加3的操作。即:先使a加3,再賦給a。同樣,“x*=y+8”的作用是使x乘以(y+8),再賦給x。42高校教育精品PPT任務2.4賦值語句2.4.1賦值運算符42高校教育任務2.4賦值語句
2.4.3賦值表達式由賦值運算符將一個變量和一個表達式連接起來的式子稱為“賦值表達式”。它的一般形式為變量賦值運算符表達式賦值表達式的作用是將一個表達式的值賦給一個變量,因此賦值表達式具有計算和賦值的雙重功能。如a=3*5是一個賦值表達式。對賦值表達式求解的過程是:先求賦值運算符右側的“表達式”的值,然后賦給賦值運算符左側的變量。既然是一個表達式,就應該有一個值。賦值表達式a=3*5的值為15,對表達式求解后,變量a的值和表達式的值都是15。2.4.4賦值過程中的類型轉換如果賦值運算符兩側的類型一致,則直接進行賦值。如:
i=234;∥設已定義i為整型變量此時直接將整數234存入變量i的存儲單元中。如果賦值運算符兩側的類型不一致,但都是算術類型時,在賦值時要進行類型轉換。類型轉換是由系統自動進行的。43高校教育精品PPT任務2.4賦值語句2.4.3賦值表達式43高校教育任務2.4賦值語句
2.4.5賦值表達式和賦值語句
在C程序中,賦值語句是用的最多的語句。在任務1的C語句分類中,并沒有看到賦值語句,實際上,C語言的賦值語句屬于表達式語句,由一個賦值表達式加一個分號組成。
注意:要區分賦值表達式和賦值語句。賦值表達式的末尾沒有分號,而賦值語句的末尾必須有分號。在一個表達式中可以包含一個或多個賦值表達式,但絕不能包含賦值語句。
2.4.6變量賦初值可以用賦值語句對變量賦值,也可以在定義變量時對變量賦以初值。這樣可以使程序簡練。如:
inta=3;∥定義a為整型變量,初值為3floatf=2.56;∥定義f為浮點型變量初值為2.56charc=‘a’∥定義c為字符變量,初值為‘a’44高校教育精品PPT任務2.4賦值語句2.4.5賦值表達式和賦值語句項目3順序結構程序設計1項目導讀項目目標項目任務45高校教育精品PPT項目3順序結構程序設計1項目導讀45高校教育精品PPT在項目2中介紹了C程序中用到的一些基本要素,如常量、變量、運算符、表達式等。本項目將介紹編寫簡單的C程序所必需的一些內容。項目導讀●使用scanf函數從鍵盤為變量輸入值。●使用printf函數輸出數據。●能編寫簡單的C程序的源文件,并運行程序。項目目標46高校教育精品PPT在項目2中介紹了C程序中用到的一些基本要素,如任務3.1順序程序設計舉例示例3.1用溫度計測量出用華氏法表示的溫度(如69°F),今要求把它轉換為以攝氏法表示的溫度(如20℃)。解題思路:這個問題的算法很簡單,關鍵在于找到二者之間的轉換公式。根據物理學知識,知道以下轉換公式:
c=5/9(f-32)其中f代表華氏溫度,c代表攝氏溫度。據此可以用N-S圖表示算法,見圖3.1。圖3.1算法由3個步驟組成,這是一個簡單的順序結構。編寫程序:有了N-S圖,很容易用C語言表示,寫出求此問題的C程序。47高校教育精品PPT任務3.1順序程序設計舉例示例3.1任務3.1順序程序設計舉例
#include〈stdio.h〉intmain(){floatf,c;∥定義f和c為單精度浮點型變量
f=63.0;∥定義f的值
c=(5/9)*(f-32);∥利用公式計算c的值
printf(“f=%﹨nc=%﹨n”,f,c);∥輸出c的值
return0;
}
運行結果:
f=63.000000c=16.77777848高校教育精品PPT任務3.1順序程序設計舉例#incl任務3.1順序程序設計舉例示例3.2
計算存款利息。有1000元,想存一年。有三種方法可選:⑴活期,年利率為r1;⑵一年期定期,年利率為r2;⑶存兩次半年定期,年利率為r3。請分別計算出一年后按三種方法所得到的本息和。解題思路:關鍵是確定計算本息和的公式。從數學知識可知,若存款額為p0,則:活期存款一年后本息和為p1=p0(1+r1)。一年期定期存款,一年后本息和為p2=p0(1+r2)。兩次半年定期存款,一年后本息和為p3=p0(1+r3/2)(1+r3/2)。畫出N-S流程圖,見圖3.2。圖3.249高校教育精品PPT任務3.1順序程序設計舉例示例3.2計任務3.1順序程序設計舉例
#include〈stdio.h〉intmain(){floatp0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;∥定義變量p1=p0*(1+r1);∥計算活期本息和p2=p0*(1+r2);∥計算一年定期本息和p3=p0*(1+r3/2)*(1+r3/2);∥計算存兩次半年定期的本息和
printf(“p1=%f﹨np2=%fnp3=%f﹨n”,p1,p2,p3);∥輸出結果
return0;}運行結果:P1=1002.599976P2=1022.500000P3=1018.89801050高校教育精品PPT任務3.1順序程序設計舉例#inclu任務3.2C語句概述
C程序的執行部分是由語句組成的。程序的功能也是由執行語句實現的,C程序主要包含表達式語句、函數調用語句、控制語句、復合語句和空語句,其中控制語句包含多種情況,本任務將分別進行介紹。C程序結構可以用圖3.3表示。即一個C程序可以由若干個源程序文件(編譯時以文件模塊為單位)組成,一個源文件可以由若干個函數和預處理指令以及全局變量聲明部分組成(關于“全局變量”見項目7)。一個函數由數據聲明部分和執行語句組成。圖3.351高校教育精品PPT任務3.2C語句概述C程序的執行部分是由語任務3.2C語句概述
C語句分為以下5類:(1)控制語句。控制語句用于完成一定的控制功能。C語句只有9種控制語句,它們的形式是:①if()…else…(條件語句)②for()…(循環語句)③while()…(循環語句)④do…while()(循環語句)⑤continue(結束本次循環語句)⑥break(中斷執行switch或循環語句)⑦switch(多分支選擇語句)⑧return(從函數返回語句)⑨goto(轉向語句,在結構化程序中基本不用goto語句)
上面9種語句表示形式中的()表示括號中是一個“判別條件”,“…”表示內嵌的語句。例如上面的“if()…else…”的具體語句可以寫成:
if(x﹥y)z=x;elsez=y;52高校教育精品PPT任務3.2C語句概述C語句分為以下5類:任務3.2C語句概述
(2)函數調用語句。函數調用語句由一個函數調用加一個分號構成,例如:printf(“Thisisacstatement.”);其中printf(“Thisisacstatement.”)是一個函數調用,加一個分號成為一個語句。⑶表達式語句。表達式語句由一個表達式加一個分號構成,最典型的是,有賦值表達式構成一個賦值語句。例如:
a=3是一個賦值表達式,而
a=3;是一個賦值語句。⑷空語句。下面是一個空語句:;此語句只有一個分號,它什么也不做。那么它有什么用呢?可以用來作為流程的轉向點(流程從程序其他地方轉到此語句處),也可以用來作為循環語句中的循環體(循環體是空語句,表示循環體什么也不做)。53高校教育精品PPT任務3.2C語句概述(2)函數調用語句任務3.2C語句概述
⑸復合語句。可以用{}把一些語句和聲明括起來成為復合語句(又稱語句塊)。例如下面是一個復合語句:{floatpi=2.14159,r=2.5,area;∥定義變量area=pi*r*r;printf(“area=%f”,area);}
可以在復合語句中包含聲明部分(如上面的第2行),C99允許將聲明部分放在復合語句中的任何位置,但習慣上把它放在語句塊開頭位置。復合語句常用在if語句或循環中,此時程序需要連續執行一組數據。
注意:復合語句中最后一個語句中最后的分號不能忽略不寫。C語言允許一行寫幾個語句,也允許一個語句拆開寫在幾行上,書寫格式無固定要求54高校教育精品PPT任務3.2C語句概述⑸復合語句。可以用任務3.3數據的輸入/輸出3.3.1輸入輸出舉例
案例3.3求ax2+bx+c=0方程的根。a,b,c由鍵盤輸入,設b2-4ac≧0。解題思路:首先要知道求方程式的根的方法。由數學知識已知:如果b2-4ac≧0,則一元二次方程有兩個實根:
,可以將上面的分式分為兩項:
,則x1=p+q,x2=p-q有了這些式子,只要知道a,b,c的值,就能順利的求出方程的兩個根。55高校教育精品PPT任務3.3數據的輸入/輸出3.3.1輸入輸出舉例55任務3.3數據的輸入/輸出
#include<stdio.h>#include<math.h>∥程序重要調用求平方根函數sqrtintmain(
)
{doublea,b,c,disc,x1,x2,p,q;∥disc用來存放判別式(b*b-4ac)的值scanf(“%1f%1f%1f”,&a,&b,&c);∥輸入雙精度變量型的值要用格式聲明“%1f”disc=b*b-4*a*c;p=-b∕(2.0*a);q=sqrt(disc)∕(2.0*a);x1=p+q;x2=p-q;∥求出方程的兩個根printf(“x1=%6.2f﹨nx2=%6.2f﹨n”,x1,x2);∥輸出方程的兩個根return0;}運行結果:132X1=-1.00X2=-2.0056高校教育精品PPT任務3.3數據的輸入/輸出#includ任務3.3數據的輸入/輸出3.3.2有關數據輸入輸出的概念從前面的程序可以看到:幾乎每一個C程序都包含輸入輸出。因為要進行運算,就必須給出數據,而運算的結果當然需要輸出,以便人們應用。沒有輸出的程序是沒有意義的。輸入輸出是程序中最基本的操作之一。在討論程序的輸入輸出時首先要注意以下幾點。⑴所謂輸入輸出是以計算機主機為主體而言的。⑵C語言本身不提供輸入輸出語句,輸入和輸出操作是由C標準函數庫中的函數來實現的。⑶在使用系統庫函數時,要在程序文件的開頭用預處理指令#include把有關頭文件放在本程序中如:#include<stdio.h>
注意:應養成這樣的習慣:只要在本程序文件中使用標準輸入輸出庫函數時,一律加上#include<stdio.h>指令。57高校教育精品PPT任務3.3數據的輸入/輸出3.3.2有關數據輸入輸出的概任務3.3數據的輸入/輸出3.3.3用printf函數輸出數據在C程序中用來實現輸出和輸入的,主要是printf函數和scanf函數。這兩個函數是格式輸入輸出函數。用到兩個函數時,程序設計人員必須制定輸入輸出數據的格式,即根據數據的不同類型指定不同的格式。1、printf函數的一般格式printf函數的一般格式為printf(格式控制,輸出表列)例如:printf(“%d,%c﹨n”,i,c)2、格式字符
(1)d格式字符。用來輸出一個有符號的十進制整數。可以在格式聲明中指定輸出數據的域寬(所占的列數),如用“%5d”,指定輸出數據占5列,輸出的數據顯示在此5列區域的右側。如:printf(“%5d﹨n%5d﹨n”,12,-345);輸出結果為12(12前面有3個空格)-345(-345前面有1個空格)
58高校教育精品PPT任務3.3數據的輸入/輸出3.3.3用printf函數輸任務3.3數據的輸入/輸出
(2)c格式符。用來輸出一個字符。例如;charch=‘a’;printf(“%c”,ch);運行時輸出a
一個整數,如果在0~127范圍中,也可以用“%c”使之按字符形式輸出,在輸出前,系統會將該整數作為ASCII碼轉換成相應的字符;如:shorta=121;printf(“%c”,a);輸出字符y。(3)s格式符。用來輸出一個字符串。如:printf(“%s”,“CHINA”);
執行此函數時在顯示屏上輸出字符串“CHINA”(不包括雙引號)。59高校教育精品PPT任務3.3數據的輸入/輸出(2)c格式符任務3.3數據的輸入/輸出
(4)f格式符。用來輸出實數(包括單、雙精度、長雙精度)。以小數形式輸出,有幾種用法:① 基本型,用%f。不指定輸出數據的長度,由系統根據數據的實際情況決定數據所占的列數。系統處理的方法一般是:實數中的整數部分全部輸出,小數部分輸出6位。示例3.4
用%f輸出實數,只能得到6位小數。#include<stdio.h>intmain(){doublea=1.0;printf(“%f﹨n”,a∕3);return0;}運行結果:0.333333雖然a是雙精度型,a∕3的結果也是雙精度型,但是用%f格式聲明只能輸出6位小數。60高校教育精品PPT任務3.3數據的輸入/輸出(4)f格式任務3.3數據的輸入/輸出
②指定數據寬度和小數位數,用%m.nf。如果想在示例3.4輸出雙精度變量a的15位小數,可以采用案例3.3所用的方法,用“%20.15f﹨n”,a/3)運行結果:0.333333333333333
注意:在用%f輸出時要注意數據本身能提供的有效數字,如float型數據的存儲單元只能保證6位有效數字。double型數據能保證15位有效數字。不要以為計算機輸出的所有數字都是絕對精確有效的。③輸出的數據向左對齊,用%-m.nf。在m.n的前面加一個負號,其作用與%m.nf形式作用基本相同,但當數據長度不超過m時,數據向左靠,右端補空格。如:printf(“%-24.15f,%24.15f﹨n”,a,a);運行結果:3332.3333333333335003332.333333333333500第1次輸出a時輸出結果向左端靠,右端空5列。第2次輸出a使輸出結果向右端靠,左端空5列。61高校教育精品PPT任務3.3數據的輸入/輸出②指定數據寬任務3.3數據的輸入/輸出
(5)e格式符。用格式聲明%e指定以指數形式輸出實數。例如:printf(“%e”,122.456);輸出如下:1.234560e+002所輸出的實數共占13列寬度(注:不同系統的規定略有不同)。也可以用“%m.ne”形式的格式聲明,如:printf(“%12.2e”,122.456);輸出為1.23e+002(數的前面有4個空格)格式符e也可以寫成大寫E形式,因此輸出的數據中的指數不是以小寫字母e表示而以大寫字母E表示,如1.23460E+002。62高校教育精品PPT任務3.3數據的輸入/輸出(5)e格式任務3.3數據的輸入/輸出表3.1printf函數中用到的格式字符
63高校教育精品PPT任務3.3數據的輸入/輸出表3.1printf函數中用到任務3.3數據的輸入/輸出3.3.4scanf函數輸入數據1.scanf函數的一般形式
scanf(格式控制,地址表列)“格式控制”的含義同printf函數。“地址表列”是由若干個地址組成的的表列,可以是變量的地址,或字符串的首地址。2.scanf函數中的格式聲明與printf函數中的格式聲明相似,以%開始,以一個格式字符結束,中間可以插入附加的字符。表3-4scanf函數中用到的格式附加字符
64高校教育精品PPT任務3.3數據的輸入/輸出3.3.4scanf函數輸入數任務3.3數據的輸入/輸出表3-3scanf函數中所用到的格式字符
65高校教育精品PPT任務3.3數據的輸入/輸出表3-3scanf函數中所用到任務3.3數據的輸入/輸出3.3.5字符數據的輸入輸出除了可以用printf函數和scanf函數輸出和輸入字符外,C函數庫還提供了一些專門用于輸入和輸出字符的函數。⒈用putchar函數輸出一個字符
putchar函數的一般形式為
putchar(c)示例3.6
先后輸出BOY三個字符。解題思路:定義3個變量,分別賦以初值‘B’,‘O’,‘Y’,然后用putchar函數輸出這3個字符變量的值。66高校教育精品PPT任務3.3數據的輸入/輸出3.3.5字符數據的輸入輸出任務3.3數據的輸入/輸出
#include<stdio.h>intmain(){chara=‘B’,b=‘O’,c=‘Y’;∥定義3個字符變量并初始化putchar(a);∥向顯示器輸出字符Bputchar(b);∥向顯示器輸出字符Oputchar(c);∥向顯示器輸出字符Yputchar(‘﹨n’);∥向顯示器輸出一個換行符return0;}運行結果:BOY連續輸出B,O,Y3個字符,然后換行。67高校教育精品PPT任務3.3數據的輸入/輸出#includ任務3.3數據的輸入/輸出
⒉用getchar函數輸入一個字符
為了向計算機輸入一個字符,可以調用系統函數庫中的getchar函數(字符輸入函數)。getchar函數的一般形式為
getchar()示例3.7
從鍵盤輸入BOY3個字符,然后把它們輸出到屏幕。解題思路:用3個getchar函數先后從鍵盤向計算機輸入BOY3個字符,然后用putchar函數輸出。68高校教育精品PPT任務3.3數據的輸入/輸出⒉用getc任務3.3數據的輸入/輸出
#include<stdio.h>intmain(){chara,b,c;∥定義字符變量a,b,ca=getchar();∥從鍵盤輸入一個字符,送給字符變量ab=getchar();∥從鍵盤輸入一個字符,送給字符變量bc=getchar();∥從鍵盤輸入一個字符,送給字符變量cputchar(a);∥將變量a的值輸出putchar(b);∥將變量b的值輸出putchar(c);∥將變量c的值輸出putchar(‘﹨n’);∥換行return0;}運行結果:BOYBOY69高校教育精品PPT任務3.3數據的輸入/輸出#includ任務3.4順序結構的程序設計示例3.9輸入三角形的三邊長,求三角形面積。為簡單起見,設輸入的三邊長a,b,c能構成三角形。從數學知識已知三角形的面積的公式為
其中s=(a+b+c)∕2據此編寫程序如下;
#include<math.h>main(){floata,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&c);s=1.0∕2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“a=%6.2f,b=%6.2f,c=%6.2f,s=%6.2f\n”,a,b,c);printf(“area=%6.2f\n”,area);}70高校教育精品PPT任務3.4順序結構的程序設計示例3.9任務3.4順序結構的程序設計示例3.10從鍵盤輸入一個大寫字母,要求改用小寫字母輸出。
#include<stdio.h>main(){charc1,c2;
c1=getchar();printf(“%c,%d\n”,c1,c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家禽防疫隊管理制度
- 強化了制度管理制度
- 彩鋼房消防管理制度
- 得利斯信用管理制度
- 心理疏導站管理制度
- 快樂惠超市管理制度
- 快餐廳店面管理制度
- 急診icu管理制度
- 情侶零花錢管理制度
- 慈善會票據管理制度
- 小學生心肺復蘇培訓課件
- 《燕麥中的生物素:對頭發、皮膚和指甲健康的潛在益處》論文
- 《2025年普通高校在陜招生計劃》
- 2025年中考山西考試試題及答案
- JJF 2208-2025醫用中心供氧系統校準規范
- 智能機器人協助緊急救援行動
- 2025年湖南省長沙市岳麓區博才小學五下數學期末學業質量監測試題含答案
- 零基礎英語學習計劃安排
- 生產車間5S培訓教材
- 機械制造業智能化工廠規劃與建設方案
- 《云南教育強省建設規劃綱要(2024-2035年)》解讀培訓
評論
0/150
提交評論