




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、項目7 函數(shù)1項目8 指針2項目9 結構與聯(lián)合3項目10 位運算4項目11 文件5 目 錄項目1 C語言概述1項目2 數(shù)據(jù)類型、運算符與表達式2項目3 順序結構程序設計3項目4 選擇結構程序設計4項目5 循環(huán)結構程序設計5項目6 數(shù)組5附件5項目1 C語言概論1 項目導讀 項目目標 項目任務 本項目主要對C語言的一些基礎知識及其字符集和詞匯進行介紹,使讀者在學習C語言之前對其有個全面的認識。 項目導讀 安裝、配置TC2.0和VC+6.0,成功啟動TC2.0和VC+6.0。 能編寫一個簡單的C程序的源文件,并編譯該源文件,鏈接目標文件得到可執(zhí)行文件。項目目標任務1.1 C語言的發(fā)展與特點 C語言
2、是1972年由美國的Dennis Ritchie設計發(fā)明的,并首次在配備了UNIX操作系統(tǒng)的DEC PDP-11計算機上實現(xiàn)。它由早期的編程語言BCPL(Basic Combined Programming Language)發(fā)展演變而來。 C語言的特點1、C語言是中級語言 2、C語言是結構化語言 3、C語言功能齊全 4、C語言適用范圍廣 任務1.2 認識C語言 本任務通過幾個簡單的C程序,介紹C語言的基本組成和格式。案例1.1main( )printf(“This is a c program.n”);本程序的功能是輸入下列一行信息:This is a c program.任務1.2 認識C
3、語言 程序說明:(1)main函數(shù)是“主函數(shù)”,每一個C程序必須有一個main函數(shù)。(2)函數(shù)體由大括弧 括起來。本例中,主函數(shù)內只有一個輸出語句,printf(“This is a c program.n”);是C語言的輸出函數(shù)(具體詳見項目3)。雙引號內的字符串將照原樣輸出。(3)“n”是換行符,即在輸出“This is a c program.”后換行。(4)分號是C語句的基本構成,每一個C語句后都應再加上分號,分號是語句的結束標志。任務1.2 認識C語言 本任務通過幾個簡單的C程序,介紹C語言的基本組成和格式。案例1.2main() /*求兩數(shù)之和*/ int a,b,sum; /*本
4、行開始的以下4條為C語句*/ a=123;b=456; sum=a+b; printf(“sum is %dn”,sum);本程序的功能是求兩數(shù)之和。任務1.2 認識C語言 程序說明:(1)/*/是注釋語句,此信息對編譯和運行不起作用。(2) 程序第二行的含義是定義a、b和sum為整體變量。(3)“sum=a+b;”的含義是把變量a和b的和賦給變量sum。(4)該程序的輸出結果是:sum is 579。任務1.2 認識C語言 案例1.3 main( ) /*求一個數(shù)的絕對值*/ int x,y; scanf(“%d”,&x); y=abs(x); printf(“abs=%d”,y);
5、int abs (int z) int w;if (z=0) w=z;else w=-z;return(w);本程序的功能是求z的絕對值。任務1.2 認識C語言 程序說明:(1)本程序包括兩個函數(shù):主函數(shù)main和被調用函數(shù)abs。(2)函數(shù)abs的作用是將z的絕對值返回給主調函數(shù)main(返回值是通過函數(shù)名abs帶回到main函數(shù)的調用處的)。(3)程序中的scanf函數(shù)的作用是從鍵盤上輸入x的值。&x中的“&”的含義是“取地址”,此scanf函數(shù)的作用是將數(shù)值輸入到變量x的地址所標志的單元中去,也就是輸入給變量x。關于scanf函數(shù)詳見項目3。(4)main函數(shù)中的第四行為
6、調用abs函數(shù),在調用時將實際參數(shù)x傳給abs函數(shù)中的形式參數(shù)z,然后輸入y的值。(5)printf函數(shù)中雙引號內的abs=%d,在輸出時,其中的%d將由y值取代,“abs=”原樣輸出。該程序的運行結果是: 假定從鍵盤上輸入x的值為:-6 則y = 6(6)本例用到了函數(shù)調用、實際參數(shù)和形式參數(shù)等概念,只是做了簡單的解釋,讀者若對此不大理解,可先不予深究,在學到函數(shù)項目后的相關知識后,問題自會迎刃而解。這里介紹此案例的目的,是想讓讀者對C語言的組成和形式有一個初步了解。任務1.2 認識C語言 通過以上三個例子,我們可以得到以下幾點: 1、C程序是由函數(shù)構成的。一個C源程序至少包含一個main函
7、數(shù),也可以包含一個main函數(shù)和若干個其它函數(shù)。因此,函數(shù)是C語言的基本單位。被調用函數(shù)可以是系統(tǒng)提供的庫函數(shù)(例如printf函數(shù)和scanf函數(shù)),也可以是用戶根據(jù)需要自編譯的用戶函數(shù)(例如案例1.3中的abs函數(shù))。 2、函數(shù)及其結構。一個函數(shù)由兩部分組成:即函數(shù)首部和函數(shù)體。函數(shù)首部包括函數(shù)類型、函數(shù)名、函數(shù)參數(shù)(形參)、形參類型;函數(shù)體一般包括說明部分和執(zhí)行部分。 函數(shù)結構如下: 函數(shù)類型 函數(shù)名 (形參表) 說明部分: 函數(shù)體 執(zhí)行部分; 函數(shù)體以左花括號“”開始,以右花括號“”結束,其間可以有說明部分和執(zhí)行部分。在某些情況下,甚至可以既無說明部分,也無執(zhí)行部分。如:dump( )
8、 它是一個空函數(shù),表示什么也不做,但它是合法的 任務1.2 認識C語言 3、一個C程序中,不論main函數(shù)在整個程序中的位置如何(main函數(shù)可以放在程序最前頭,也可以放在程序最后頭,或在一些函數(shù)之前,或在另一些函數(shù)之后),但程序執(zhí)行時,總是從main函數(shù)開始執(zhí)行。 4、C程序書寫格式自由,一行中可以書寫多個語句,一個語句也可以書寫在連續(xù)的多行上。當一行寫不下時,用連字符“-”連接,并且每條語句的后面以分號“;”作為結束標記。 5、C語言本身沒有輸入輸出語句。C語言的函數(shù)庫提供了標準輸入輸出函數(shù)。 6、可以用/*對C程序中的任何一部分做注釋,以增加程序的可讀性。 任務1.3 C程序的執(zhí)行過程
9、C語言程序是一種編譯型的中級語言。用C語言編寫的源程序必須先進行編譯和連接,生成可執(zhí)行的程序之后才能執(zhí)行。執(zhí)行一個C語言程序一般經(jīng)過如下幾個步驟。 1、編輯 2、編譯 3、連接 4、運行 C語言程序的開發(fā)是一個由編輯開始,經(jīng)過編譯、連接和運行,程序如果有錯誤,又回到編輯的反復循環(huán)過程,如圖所示。 項目2 數(shù)據(jù)類型、運算符與表達式1 項目導讀 項目目標 項目任務 C語言中,為解決具體問題,需要采用多種類型的數(shù)據(jù);本項目將主要介紹C語言的數(shù)據(jù)類型、常用運算符和表達式。 項目導讀學會聲明整型變量,為聲明的變量賦值,交換變量的值,輸出變量的值。學會聲明浮點型變量,為聲明的浮點型變量賦值,對浮點型變量值
10、進行加法運算,并將運算結果存放到浮點型變量中,輸出浮點型變量的值。學會聲明字符型變量,為聲明的字符型變量賦值,按%d或%c格式輸出變量的值。項目目標任務2.1 常量、變量和標示符 標識符 在計算機高級語言中,用來對變量、符號常量名、函數(shù)、數(shù)組、類型等命名的有效字符序列統(tǒng)稱為標識符(identifier)。簡單地說,標識符就是一個對象的名字。 C語言規(guī)定標識符只能由字母、數(shù)字和下劃線組成,且第1個字符必須為字母或下劃線。下面列出的是合法的標識符,可以作為變量名: Sum, average, _total, Class, day, month, Student_name, lotus_1_2_3,
11、BASIC, li_ling. 下面是不合法的標識符和變量名: M. D. John, ¥123, #33, 3D64, ab 注意:編譯系統(tǒng)將大寫字母和小寫字母認為是兩個不同的字符。因此,sum和SUM是兩個不同的變量名。同樣,Class和class也是兩個不同的變量名。通常,變量名用小寫字母表示,習慣用對應的英文字母縮寫形式,做到見名知意,與人們日常習慣一致,以增加可讀性。 任務2.1 常量、變量和標示符 常量和變量1、常量 在程序運行過程中,其值不能被改變的量稱為常量。如案例2.1程序中的5,9,32和案例2.2程序中的1000,0.0036,0.0225,0.0198都是常量。數(shù)值常量
12、就是數(shù)學中的常數(shù)。 常用的常量有以下幾類: 整型常量。如1000,12345,0,-345等都是整型常量。 實型常量。有兩種表現(xiàn)形式: 十進制小數(shù)形式,由數(shù)字和小數(shù)點組成。如122.456,0.345,-55.79,0.0,12.0等。 指數(shù)形式,如12.34e3(代表12.34103),-345.87e-25(代表-345.8710-25),0.145E25(代表0.14510-25)等。 由于在計算機輸入或輸出時,無法表示上標或下標,故規(guī)定以字母e或E代表以10為底的指數(shù)。但應注意:e或E之前必須有數(shù)字,且e或E后面必須為整數(shù)。如不能寫成e4,12e2.5。 任務2.1 常量、變量和標示符
13、 字符常量。有兩種形式的字符常量: 普通字符,用單撇號括起來的一個字符,如a,Z,3, ?,#。 注意:單撇號只是界限符,字符常量只能是一個字符,不包括單撇號。a和A是不同的字符常量。字符常量存儲在計算機存儲單元中時,并不是存儲字符(如a,z,#等)本身,而是以其代碼(一般采用ASCII代碼)存儲的,例如字符A的ASCII話代碼是97,因此,在存儲單元中存放的是97(以二進制形式存放)。ASCII字符與代碼對照表見附錄。 轉義字符,除了以上形式的字符常量外,C還允許用一種特殊形式的字符常量,就是以字符開頭的 字符序列。例如,前面已經(jīng)遇到過的,在printf函數(shù)中的n它代表一個“換行”符。 常用
14、的以“”開頭的特殊字符見表 2.1任務2.1 常量、變量和標示符 表2.1任務2.1 常量、變量和標示符 字符串常量。如“boy”,“123”等,用雙撇號把若干個字符括起來,字符串常量是雙撇號中的全部字符(但不包括雙撇號本身)。注意不能錯寫成CHINA,boy,123。單撇號內只能包含一個字符,雙撇號內可以包含一個字符串。 符號常量。用#define指令,指定用一個符號名稱代表一個常量。如: #define PI 3.1416 注意行末沒有分號 經(jīng)過以上的指定后,本文件中從此行開始所有的PI都代表3.1416。在對程序進行編譯前,預處理器先對PI進行處理,把所有的PI全部置換為3.1416。這
15、種用一個符號名代表一個常量的,稱為符號常量。在預編譯后,符號常量全部變成字面常量(3.14159)。 使用符號常量有以下好處。 含義清楚。 在需要改變程序中多處用到的同一個常量時,能做到“一改全改”。 任務2.1 常量、變量和標示符 2、變量 變量代表一個有名字的、具有特定屬性的存儲單元。它用來存放數(shù)據(jù),也就是存放變量的值。在程序運行期間,變量的值是可以改變的。 變量必須先定義,后使用。在定義時指定該變量的名字和類型。一個變量應該有一個名字,以便被引用。請注意區(qū)分變量名和變量值這兩個不同的概念,圖2.1中a是變量名,3是變量a的值,即存放在變量a的內存單元中的數(shù)據(jù)。變量名的實質是以一個名字代表
16、的一個存儲地址。在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應的內存地址。從變量中取值,實際上是通過變量名找到相應的內存地址,從該儲存單元中讀取數(shù)據(jù)。 圖2.1任務2.1 常量、變量和標示符 3、常變量 如 const int a=3表示a被定義為一個整型變量,指定其值為3,而且在變量存在期間其值不能改變。 常變量與常量的異同是:常變量具有變量的基本屬性,有類型,占存儲單元,只是不允許改變其值??梢哉f,常變量是有名字的不變量,而常量是沒有名字的不變量,有名字就便于在程序中被引用。 任務2.2 數(shù)據(jù)類型 在定義變量時需要指定變量的類型。C語言要求在定義所有的變量時都要指定變量的類型。常量也是
17、區(qū)分類型的。 所謂類型,就是對數(shù)據(jù)分配存儲單元的安排,包括存儲單元的長度(占多少字節(jié))以及數(shù)據(jù)的存儲形式。不同的類型分配不同的長度和存儲形式。 C語言允許使用的類型見圖2.2。 圖2.2任務2.2 數(shù)據(jù)類型 整型數(shù)據(jù) 1、整型數(shù)據(jù)的分類 基本整型(int型) 編譯系統(tǒng)為int型數(shù)據(jù)分配2個字節(jié)或4個字節(jié)(有具體的C編譯系統(tǒng)自行決定)。如TurboC 2.0為每一個整型數(shù)據(jù)分配2個字節(jié)(16個二進位),而 Visual C+為每一個整型數(shù)據(jù)分配4個字節(jié)(32位)。在存儲單元中的存儲方式是:用整數(shù)的補碼(complement)形式存放。5的補碼-5的補碼任務2.2 數(shù)據(jù)類型 短整型(short i
18、nt) 類型名為short int或short。如用Visual C+ 5.0,編譯系統(tǒng)分配給int數(shù)據(jù)4個字節(jié),短整型2個字節(jié)。存儲方式與int型相同。一個短整型變量的值的范圍是3276832767。 長整型(long int) 類型名為long int 或long。一個long int 型變量的值的范圍是231(2311),即 21474836482147483647 (Visual C+ 5.0),編譯系統(tǒng)分配給long 數(shù)據(jù)4個字節(jié)。 雙長整型(long long int)或long long ,一般分配8個字節(jié)。 說明:C標準沒有具體規(guī)定各種類型數(shù)據(jù)所占用存儲單元的長度,這是由各編譯
19、系統(tǒng)自行決定的。C標準只要求long型數(shù)據(jù)長度不短于int型,short型不長于int型。即 Sizeof(short)sizeof(int)sizeof(long long) Sizeof是測量類型或變量長度的運算符。 任務2.2 數(shù)據(jù)類型 2、整型變量的符號屬性 以上介紹的幾種類型,變量值在存儲單元中都是以補碼形式存儲的,存儲單元中的第1個二進位制代表符號。整型變量的值的范圍包括負數(shù)到正數(shù)(見表2.2)。 表2.2 整型數(shù)據(jù)常見的存儲空間和值的范圍 任務2.2 數(shù)據(jù)類型 在實際應用中,有的數(shù)據(jù)的范圍常常只有正值(如學號、年齡、庫存量、存款額等)。為了充分利用變量的值的范圍,可以將變量定義為
20、“無符號”類型??梢栽陬愋头柷懊婕由闲揎椃鹵nsigned,表示指定該變量是“無符號整數(shù)”類型。如果加上修飾符signed,則是“有符號”類型。因此,在以上4種整型數(shù)據(jù)的基礎上可以擴展為以下8種整型數(shù)據(jù)。即 有符號基本整型 signed int; 無符號基本整型 unsigned int; 有符號短整型 signed short int; 無符號短整型 unsigned short int; 有符號長整型 signed long int; 無符號長整型 unsigned long int; 有符號雙長整型 signed long long int; 無符號雙長整型 unsigned long
21、 long int; 以上方括號表示其中的內容是可選的,既可以有,也可以沒有。如果既未指定為signed也未指定為unsigned的,默認為“有符號類型”。如signed int a和int a等價。 任務2.2 數(shù)據(jù)類型 字符型數(shù)據(jù) 1. 字符與字符代碼 字符與字符代碼并不是任意寫一個字符,程序都能識別的。例如圓周率在程序中是不能識別的,只能使用系統(tǒng)的字符集中的字符,目前大多數(shù)系統(tǒng)采用ASCII字符集。各種字符集(包括ASCII字符集)的基本集都包括了127個字符。其中包括: 字母:大寫英文字母AZ,小寫英文字母az。 數(shù)字:09。 專門符號:29個: !”# &()* +,:;=?
22、 -| 空格符:空格、水平制表符(tab)、換行、換頁(form feed)。 不能顯示的字符:空(null)字符(以0表示)、警告(以a表示)、退格(以b表示)、回車(以r表示)等。 任務2.2 數(shù)據(jù)類型 2、字符變量 字符變量使用類型符char定義字符變量。Char是英文character(字符)的縮寫,見名即可知意。如:char c=;? 定義c為字符型變量并使初值為字符?。?的ASCII代碼是63,系統(tǒng)把整數(shù)63賦給變量c。c是字符變量,實質上是一個字節(jié)的整形變量,由于它常用來存放字符。所以稱為字符變量??梢园?127之間的整數(shù)賦給一個字符變量。 在輸出字符變量的值時,可以選擇以十進制
23、整數(shù)形式輸出,或以字符形式輸出。如: printf(“%d %cn”, c , c );輸出結果是: 63 ? 用“%d”格式輸出十進制整數(shù)63,用%c格式用字符形式輸出字符?。 任務2.2 數(shù)據(jù)類型 浮點型數(shù)據(jù) 浮點型數(shù)據(jù)是用來表示具有小數(shù)點的實數(shù)的 。 浮點數(shù)類型包括float(單精度浮點型)、double(雙精度浮點型)、long double(長雙精度浮點型)。 (1)float型(單精度浮點型)。編譯系統(tǒng)為每一個float型變量分配4個字節(jié),數(shù)值以規(guī)范化的二進制數(shù)值形式存放在存儲單元中。在存儲時,系統(tǒng)將實型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分兩個部分,分別存放。小數(shù)部分的小數(shù)點前面的數(shù)為0.如
24、3.14159在內存中的存放形式可以用圖2.9表示。 圖2.9任務2.2 數(shù)據(jù)類型 double型(雙精度浮點型)。為了擴大能表示的數(shù)值范圍,用8個字節(jié)存儲一個double型數(shù)據(jù),可以得到15位有效數(shù)字,數(shù)值范圍為1.710-308 1.710308 。在C語言中進行浮點數(shù)的算術運算時,將float型數(shù)據(jù)都自動轉換為double型,然后進行運算。 long double型(長雙精度)型,不同的編譯系統(tǒng)對long double型的處理方法不同,Turbo C對long double型分配16個字節(jié)。而Visual C+6.0則對long double型和double型一樣處理,分配8個字節(jié)。請讀
25、者在使用不同的編譯系統(tǒng)時注意其差別。表2.4列出實型數(shù)據(jù)的有關情況 表2.4任務2.3 運算符和表達式 基本的算術運算符 表2.5 最常用的算術運算符 任務2.3 運算符和表達式 自增、自減運算符 作用是使變量的值加1或減1,例如: +i ,-i ( 在使用i之前,先使i的值加(減)1) i+, i-( 在使用i之后,使i的值加(減)1) 粗略地看,+i和i+的作用相當于i=i+1。但+i和i+的不同之處在于+i是先執(zhí)行i=i+1后,再使用i的值;而i+是先使用i的值后,再執(zhí)行i=i+1。如果i的原值等于3,請分析下面的賦值語句: j=+i;(i的值先變成4,再賦給j, j的值為4) j=i+
26、;(先將i的值3賦給j, j的值為3,然后i變?yōu)?) 又例如: i=3; printf(“%d”,i+); 輸出4。若改為 Printf(“%dn”,i+); 則輸出3。任務2.3 運算符和表達式 算術表達式和運算符的優(yōu)先級與結合性 用算術運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子,稱為C算術表達式。運算對象包括常量、變量、函數(shù)等。例如,下面是一個合法的C算術表達式: a*bc1.5+a C語言除了規(guī)定了運算符的優(yōu)先級外,還規(guī)定了運算符的結合性。在表達式求值時,先按運算符的優(yōu)先級別順序執(zhí)行,例如先乘除后加減。如表達式ab*c , b的左側為減號,右側為乘號,而乘號優(yōu)先
27、級高于減號,因此,相當于a(b*c)。 如果在一個運算對象兩側的運算符的優(yōu)先級別相同,如ab+c,則按規(guī)定的“結合方向”處理。C語言規(guī)定了各種運算符的結合方向(結合性),算術運算符的結合方向都是“自左至右”,及先左后右,因此b先與減號結合,執(zhí)行ab的運算,然后再執(zhí)行加c的運算。“自左至右的結合方向”又稱“左結合性”,即運算對象先于左面的運算符結合。以后可以看到有些運算符的結合方向為“自右至左”,即右結合性(例如,賦值運算符,若有a=b=c,按從右到左順序,先把變量c的值賦給變量b,然后把變量b的值賦給變量a)。 任務2.3 運算符和表達式 不同類型數(shù)據(jù)間的混合運算 在程序中經(jīng)常會遇到不同類型的
28、數(shù)據(jù)進行運算,如5*3.5。如果一個運算符的兩側的數(shù)據(jù)類型不同,則先自動進行類型轉換,使二者具有同一種類型,然后進行運算。因此整型、實型、字符型數(shù)據(jù)間可以進行混合運算。規(guī)律為: (1) +、*、運算的兩個數(shù)中有一個數(shù)為float或double型,結果是double型,因為系統(tǒng)將所有float型數(shù)據(jù)都先轉換為double型,然后進行運算。 (2) 如果int型與float或double型數(shù)據(jù)進行運算,先把int型和float型數(shù)據(jù)轉換為double型,然后再進行運算,結果是double型。 (3) 字符(char)型數(shù)據(jù)與整型數(shù)據(jù)進行運算,就是把字符的ASCII代碼與整型數(shù)據(jù)進行運算。如:12+
29、A,由于字符A的ASCII代碼是65,相當于12+65,等于77。字符數(shù)據(jù)可以直接與整型數(shù)據(jù)進行運算。如果字符型數(shù)據(jù)與實型數(shù)據(jù)進行運算,則將字符的ASCII代碼轉換為double型數(shù)據(jù),然后進行運算。 任務2.3 運算符和表達式 示例2.1 編程:給定一個大寫字母,要求用小寫字母輸出。 編寫程序: #includestdio.h int main ( ) char c1 ,c2; c1=A 將字符A的ASCII代碼放到c1變量中 c2=c1+32; 得到字符a的ASCII代碼,放在c2變量中 printf(“%cn”,c2); 輸出c2的值,是一個字符 printf(“%dn”,c2); 輸出
30、c2的值,是字符a的ASCII代碼 reurn 0 運行結果: a 97任務2.3 運算符和表達式 運算符 除了算術運算符外,C還提供其他運算符,共有以下幾類: 關系運算符 (= ! =) 邏輯運算符 (! & & |) 位運算符 (|&) 賦值運算符 (=及其擴展賦值運算符) 條件運算符 (?:) 逗號運算符 (,) 指針運算符 (*和&) 求字節(jié)數(shù)運算符 (sizeof) 強制類型轉換運算符 (類型) 成員運算符 () 下標運算符 ( ) 其他 (如函數(shù)調用運算符() 任務2.3 運算符和表達式 強制類型轉換運算符 可以利用強制類型轉換運算符將一個表達式轉換
31、成所需類型。例如: (double)a (將a轉換成double類型) (int)(x+y) (將x+y的值轉換成int型) (float)(5%3) (將5%3的值轉換成float型) 其一般形式為 (類型名)(表達式) 注意,表達式應該用括號括起來。如果寫成 (int)x+y 則只將x轉換成整型,然后與y相加。 需要說明的是,在強制類型轉換時,得到一個所需類型的中間數(shù)據(jù),而原來變量的類型未發(fā)生變化。例如: a=(int)x 如果已定義x為float型變量,a為整型變量,進行強制類型運算(int)x后得到一個int類型的臨時值,它的值等于x的整數(shù)部分,把它賦給a,注意x的值和類型都未變化,仍
32、為float型。該臨時值在賦值后就不存在了。 任務2.4 賦值語句 在C程序中,最常用的語句是:賦值語句和輸入輸出語句。其中最基本的是賦值語句。程序中的計算功能大部分是由賦值語句實現(xiàn)的,幾乎每一個有實用價值的程序都包括賦值語句。有的程序中的大部分語句都是賦值語句。 先分析一個例子。 給出三角形的三邊長,求三角形面積。 解題思路:假設給定的三個邊符合構成三角形的條件:任意兩邊之和大于第三邊。解此題的關鍵是要找到求三角形面積的公式。從數(shù)學知識已知求三角形面積的公式為: 其中s=(a+b+c)2。 )()(csbsassarea任務2.4 賦值語句 編寫程序:根據(jù)上面的公式編寫程序如下:#inclu
33、de stdio.h#include math.hint main( )double a,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*()*()*(); 計算areaprintf(“a=%ftb=%ft%fn”,a ,b ,c ); 輸出三邊a ,b ,c 的值printf(“area=%fn”,area); 輸出面積area的值return 0 ;運行結果:a=2.670000 b=4.430000 5.210000 area=8.903431
34、任務2.4 賦值語句 賦值運算符 賦值符號=就是賦值運算符,它的作用是將一個數(shù)據(jù)賦給一個變量。如a=3的作用是執(zhí)行一次賦值操作(或稱賦值運算)。把常量3賦給變量a。也可以將一個表達式的值賦給一個變量。 復合的賦值運算符 在賦值符=之前加上其它運算符,可以構成復合的運算符。如果在“=”前加一個“+”運算符就成了復合運算符“+=”。例如可以有以下的復合賦值運算: a+=3 等價于 a=a+3 x*=y+8 等價于 x=x*(y+8) x%=3 等價于 x=x%3 以“a+=3”為例來說明,它相當于使a進行一次自加3的操作。即:先使a加3,再賦給a。同樣,“x*=y+8”的作用是使x乘以(y+8),
35、再賦給x。 任務2.4 賦值語句 賦值表達式 由賦值運算符將一個變量和一個表達式連接起來的式子稱為“賦值表達式”。它的一般形式為變量 賦值運算符 表達式 賦值表達式的作用是將一個表達式的值賦給一個變量,因此賦值表達式具有計算和賦值的雙重功能。如a=3*5是一個賦值表達式。對賦值表達式求解的過程是:先求賦值運算符右側的“表達式”的值,然后賦給賦值運算符左側的變量。既然是一個表達式,就應該有一個值。賦值表達式a=3*5的值為15,對表達式求解后,變量a的值和表達式的值都是15。賦值過程中的類型轉換 如果賦值運算符兩側的類型一致,則直接進行賦值。如: i=234; 設已定義i為整型變量 此時直接將整
36、數(shù)234存入變量i的存儲單元中。 如果賦值運算符兩側的類型不一致,但都是算術類型時,在賦值時要進行類型轉換。類型轉換是由系統(tǒng)自動進行的 。任務2.4 賦值語句 賦值表達式和賦值語句 在C程序中,賦值語句是用的最多的語句。在任務1的C語句分類中,并沒有看到賦值語句,實際上,C語言的賦值語句屬于表達式語句,由一個賦值表達式加一個分號組成。 注意:要區(qū)分賦值表達式和賦值語句。 賦值表達式的末尾沒有分號,而賦值語句的末尾必須有分號。在一個表達式中可以包含一個或多個賦值表達式,但絕不能包含賦值語句。 變量賦初值 可以用賦值語句對變量賦值,也可以在定義變量時對變量賦以初值。這樣可以使程序簡練。如: int
37、 a=3; 定義a為整型變量,初值為3 float f=2.56; 定義f為浮點型變量初值為2.56 char c=a 定義c為字符變量,初值為a 項目3 順序結構程序設計1 項目導讀 項目目標 項目任務 在項目2中介紹了C程序中用到的一些基本要素,如常量、變量、運算符、表達式等。本項目將介紹編寫簡單的C程序所必需的一些內容。 項目導讀使用scanf函數(shù)從鍵盤為變量輸入值。使用printf函數(shù)輸出數(shù)據(jù)。能編寫簡單的C程序的源文件,并運行程序。 思考項目目標任務3.1 順序程序設計舉例 示例3.1 用溫度計測量出用華氏法表示的溫度(如69F),今要求把它轉換為以攝氏法表示的溫度(如20)。 解題
38、思路:這個問題的算法很簡單,關鍵在于找到二者之間的轉換公式。根據(jù)物理學知識,知道以下轉換公式: c=59(f-32) 其中f代表華氏溫度,c代表攝氏溫度。據(jù)此可以用N-S圖表示算法,見圖3.1。 圖3.1 算法由3個步驟組成,這是一個簡單的順序結構。 編寫程序:有了N-S圖,很容易用C語言表示,寫出求此問題的C程序。任務3.1 順序程序設計舉例 #includestdioh int main() float f,c; 定義f和c為單精度浮點型變量 f=63.0; 定義f的值 c=(59)*(f-32); 利用公式計算c的值 printf(“f=%nc=%n”,f,c);輸出c的值 return
39、 0; 運行結果: f=63.000000 c=16.777778任務3.1 順序程序設計舉例 示例3.2 計算存款利息。有1000元,想存一年。有三種方法可選:活期,年利率為r1;一年期定期,年利率為r2;存兩次半年定期,年利率為r3。請分別計算出一年后按三種方法所得到的本息和。 解題思路:關鍵是確定計算本息和的公式。從數(shù)學知識可知,若存款額為p0,則: 活期存款一年后本息和為p1=p0(1+r1)。 一年期定期存款,一年后本息和為p2=p0(1+r2)。 兩次半年定期存款,一年后本息和為p3=p0(1+r3/2)(1+r3/2)。 畫出N-S流程圖,見圖3.2。 圖3.2任務3.1 順序程
40、序設計舉例 #includestdio.hint main ()float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3; 定義變量p1=p0*(1+r1); 計算活期本息和p2=p0*(1+r2); 計算一年定期本息和p3=p0*(1+r32)*(1+r32);計算存兩次半年定期的本息和 printf(“p1=%fnp2=%fnp3=%fn”,p1,p2,p3);輸出結果 return 0; 運行結果:P1=1002.599976P2=1022.500000 P3=1018.898010任務3.2 C語句概述 C程序的執(zhí)行部分是由語句組成的。程
41、序的功能也是由執(zhí)行語句實現(xiàn)的,C程序主要包含表達式語句、函數(shù)調用語句、控制語句、復合語句和空語句,其中控制語句包含多種情況,本任務將分別進行介紹。 C程序結構可以用圖3.3表示。即一個C程序可以由若干個源程序文件(編譯時以文件模塊為單位)組成,一個源文件可以由若干個函數(shù)和預處理指令以及全局變量聲明部分組成(關于“全局變量”見項目7)。一個函數(shù)由數(shù)據(jù)聲明部分和執(zhí)行語句組成。 圖3.3任務3.2 C語句概述 C語句分為以下5類 : (1) 控制語句??刂普Z句用于完成一定的控制功能。C語句只有9種控制語句,它們的形式是: if( )else (條件語句) for ( ) (循環(huán)語句) while(
42、) (循環(huán)語句) dowhile( ) (循環(huán)語句) continue (結束本次循環(huán)語句) break (中斷執(zhí)行switch或循環(huán)語句) switch (多分支選擇語句) return (從函數(shù)返回語句) goto (轉向語句,在結構化程序中基本不用goto語句) 上面9種語句表示形式中的( )表示括號中是一個“判別條件”,“”表示內嵌的語句。例如上面的“if( )else”的具體語句可以寫成: if(xy) z=x ; else z=y ;任務3.2 C語句概述 (2) 函數(shù)調用語句。函數(shù)調用語句由一個函數(shù)調用加一個分號構成,例如:printf(“This is a c statemen
43、t .”); 其中printf(“This is a c statement .”)是一個函數(shù)調用,加一個分號成為一個語句。 表達式語句。表達式語句由一個表達式加一個分號構成,最典型的是,有賦值表達式構成一個賦值語句。例如: a=3 是一個賦值表達式,而 a=3; 是一個賦值語句。 空語句。下面是一個空語句: ; 此語句只有一個分號,它什么也不做。那么它有什么用呢?可以用來作為流程的轉向點(流程從程序其他地方轉到此語句處),也可以用來作為循環(huán)語句中的循環(huán)體(循環(huán)體是空語句,表示循環(huán)體什么也不做)。 任務3.2 C語句概述 復合語句。可以用 把一些語句和聲明括起來成為復合語句(又稱語句塊)。例如
44、下面是一個復合語句:float pi=2.14159,r=2.5,area; 定義變量area=pi * r * r ;printf(“area=%f”,area); 可以在復合語句中包含聲明部分(如上面的第2行),C99允許將聲明部分放在復合語句中的任何位置,但習慣上把它放在語句塊開頭位置。復合語句常用在if語句或循環(huán)中,此時程序需要連續(xù)執(zhí)行一組數(shù)據(jù)。 注意:復合語句中最后一個語句中最后的分號不能忽略不寫。 C語言允許一行寫幾個語句,也允許一個語句拆開寫在幾行上,書寫格式無固定要求 任務3.3 數(shù)據(jù)的輸入/輸出輸入輸出舉例 案例3.3 求ax2+bx+c=0方程的根。a ,b ,c由鍵盤輸入
45、,設b24ac0。 解題思路:首先要知道求方程式的根的方法。由數(shù)學知識已知:如果b24ac0,則一元二次方程有兩個實根: , 可以將上面的分式分為兩項: , 則x1 =p+q, x2=pq有了這些式子,只要知道a ,b ,c的值,就能順利的求出方程的兩個根。2142bbacxa 2242bbacxa 2bpa242bacqa任務3.3 數(shù)據(jù)的輸入/輸出 #include #include 程序重要調用求平方根函數(shù)sqrtint main () double a ,b ,c ,disc ,x1,x2,p ,q; disc用來存放判別式(b*b4ac)的值scanf(“%1f%1f%1f”,&am
46、p;a,&b,&c); 輸入雙精度變量型的值要用格式聲明“%1f”disc=b*b4*a*c;p=b(2.0*a);q=sqrt(disc)(2.0*a);x1=p+q;x2=pq; 求出方程的兩個根printf(“x1=%6.2fnx2=%6.2fn”,x1,x2); 輸出方程的兩個根 return 0;運行結果:1 3 2X1=-1.00X2=-2.00任務3.3 數(shù)據(jù)的輸入/輸出有關數(shù)據(jù)輸入輸出的概念 從前面的程序可以看到:幾乎每一個C程序都包含輸入輸出。因為要進行運算,就必須給出數(shù)據(jù),而運算的結果當然需要輸出,以便人們應用。沒有輸出的程序是沒有意義的。輸入輸出是程序中最
47、基本的操作之一。 在討論程序的輸入輸出時首先要注意以下幾點。 所謂輸入輸出是以計算機主機為主體而言的。 C語言本身不提供輸入輸出語句,輸入和輸出操作是由C標準函數(shù)庫中的函數(shù)來實現(xiàn)的。 在使用系統(tǒng)庫函數(shù)時,要在程序文件的開頭用預處理指令#include把有關頭文件放在本程序中 如:#include 注意:應養(yǎng)成這樣的習慣:只要在本程序文件中使用標準輸入輸出庫函數(shù)時,一律加上#include指令。 任務3.3 數(shù)據(jù)的輸入/輸出用printf函數(shù)輸出數(shù)據(jù) 在C程序中用來實現(xiàn)輸出和輸入的,主要是printf函數(shù)和scanf函數(shù)。這兩個函數(shù)是格式輸入輸出函數(shù)。用到兩個函數(shù)時,程序設計人員必須制定輸入輸出
48、數(shù)據(jù)的格式,即根據(jù)數(shù)據(jù)的不同類型指定不同的格式。 1、printf函數(shù)的一般格式 printf函數(shù)的一般格式為 printf(格式控制,輸出表列) 例如: printf(“%d,%cn”,i ,c) 2、格式字符 (1) d格式字符。用來輸出一個有符號的十進制整數(shù)。 可以在格式聲明中指定輸出數(shù)據(jù)的域寬(所占的列數(shù)),如用“%5d”,指定輸出數(shù)據(jù)占5列,輸出的數(shù)據(jù)顯示在此5列區(qū)域的右側。如: printf(“%5dn%5dn”,12,345); 輸出結果為 12 (12前面有3個空格) 345 (345前面有1個空格) 任務3.3 數(shù)據(jù)的輸入/輸出 (2)c格式符。用來輸出一個字符。例如; ch
49、ar ch=a; printf(“%c”,ch); 運行時輸出 a 一個整數(shù),如果在0127范圍中,也可以用“%c”使之按字符形式輸出,在輸出前,系統(tǒng)會將該整數(shù)作為ASCII碼轉換成相應的字符;如: short a=121; printf(“%c”,a); 輸出字符y。 (3)s格式符。用來輸出一個字符串。如: printf(“%s”,“CHINA”); 執(zhí)行此函數(shù)時在顯示屏上輸出字符串“CHINA”(不包括雙引號)。 任務3.3 數(shù)據(jù)的輸入/輸出 (4) f格式符。用來輸出實數(shù)(包括單、雙精度、長雙精度)。以小數(shù)形式輸出,有幾種用法: 基本型,用%f。 不指定輸出數(shù)據(jù)的長度,由系統(tǒng)根據(jù)數(shù)據(jù)的
50、實際情況決定數(shù)據(jù)所占的列數(shù)。系統(tǒng)處理的方法一般是:實數(shù)中的整數(shù)部分全部輸出,小數(shù)部分輸出6位。 示例 3.4 用%f輸出實數(shù),只能得到6位小數(shù)。#includeint main( )double a=1.0;printf(“%fn”, a3);return 0;運行結果:0.333333 雖然a是雙精度型,a3的結果也是雙精度型,但是用%f格式聲明只能輸出6位小數(shù)。 任務3.3 數(shù)據(jù)的輸入/輸出 指定數(shù)據(jù)寬度和小數(shù)位數(shù),用%m.nf。 如果想在示例3.4輸出雙精度變量a的15位小數(shù),可以采用案例3.3所用的方法,用“%20.15fn”, a/3)運行結果: 0.333333333333333
51、注意:在用%f輸出時要注意數(shù)據(jù)本身能提供的有效數(shù)字,如float型數(shù)據(jù)的存儲單元只能保證6位有效數(shù)字。double型數(shù)據(jù)能保證15位有效數(shù)字。不要以為計算機輸出的所有數(shù)字都是絕對精確有效的。 輸出的數(shù)據(jù)向左對齊,用%m.nf。 在m.n的前面加一個負號,其作用與%m.nf形式作用基本相同,但當數(shù)據(jù)長度不超過m時,數(shù)據(jù)向左靠,右端補空格。如: printf(“%24.15f,%24.15fn”,a ,a); 運行結果:3332.333333333333500 3332.333333333333500 第1次輸出a時輸出結果向左端靠,右端空5列。第2次輸出a使輸出結果向右端靠,左端空5列。 任務3
52、.3 數(shù)據(jù)的輸入/輸出 (5) e格式符。用格式聲明%e指定以指數(shù)形式輸出實數(shù)。 例如: printf(“%e”,122.456); 輸出如下: 1.234560 e+002 所輸出的實數(shù)共占13列寬度(注:不同系統(tǒng)的規(guī)定略有不同)。 也可以用“%m.ne”形式的格式聲明,如: printf(“%12.2e”,122.456); 輸出為 1.23e+002 (數(shù)的前面有4個空格) 格式符e也可以寫成大寫E形式,因此輸出的數(shù)據(jù)中的指數(shù)不是以小寫字母e表示而以大寫字母E表示,如1.23460E+002。 任務3.3 數(shù)據(jù)的輸入/輸出表3.1 printf函數(shù)中用到的格式字符 任務3.3 數(shù)據(jù)的輸入
53、/輸出函數(shù)輸入數(shù)據(jù) 1 . scanf函數(shù)的一般形式 scanf(格式控制,地址表列) “格式控制”的含義同printf函數(shù)。“地址表列”是由若干個地址組成的的表列,可以是變量的地址,或字符串的首地址。 2 . scanf函數(shù)中的格式聲明 與printf函數(shù)中的格式聲明相似,以%開始,以一個格式字符結束,中間可以插入附加的字符。 表3-4 scanf函數(shù)中用到的格式附加字符 任務3.3 數(shù)據(jù)的輸入/輸出表3-3 scanf函數(shù)中所用到的格式字符 任務3.3 數(shù)據(jù)的輸入/輸出字符數(shù)據(jù)的輸入輸出 除了可以用printf函數(shù)和scanf函數(shù)輸出和輸入字符外,C函數(shù)庫還提供了一些專門用于輸入和輸出字符
54、的函數(shù)。 用putchar函數(shù)輸出一個字符 putchar函數(shù)的一般形式為 putchar(c) 示例 3.6 先后輸出BOY三個字符。 解題思路:定義3個變量,分別賦以初值B,O,Y, 然后用putchar函數(shù)輸出這3個字符變量的值。 任務3.3 數(shù)據(jù)的輸入/輸出 #includeint main( )char a=B,b=O,c=Y; 定義3個字符變量并初始化putchar(a); 向顯示器輸出字符Bputchar(b); 向顯示器輸出字符Oputchar(c); 向顯示器輸出字符Yputchar(n); 向顯示器輸出一個換行符return 0;運行結果:BOY連續(xù)輸出B,O,Y3個字符,
55、然后換行。 任務3.3 數(shù)據(jù)的輸入/輸出 用getchar函數(shù)輸入一個字符 為了向計算機輸入一個字符,可以調用系統(tǒng)函數(shù)庫中的getchar函數(shù)(字符輸入函數(shù))。getchar函數(shù)的一般形式為 getchar( ) 示例3.7 從鍵盤輸入BOY3個字符,然后把它們輸出到屏幕。 解題思路:用3個getchar函數(shù)先后從鍵盤向計算機輸入BOY3個字符,然后用putchar函數(shù)輸出。 任務3.3 數(shù)據(jù)的輸入/輸出 #includeint main( )char a, b, c; 定義字符變量a, b, ca=getchar( ); 從鍵盤輸入一個字符,送給字符變量ab=getchar( ); 從鍵盤輸
56、入一個字符,送給字符變量bc=getchar( ); 從鍵盤輸入一個字符,送給字符變量cputchar(a); 將變量a的值輸出putchar(b); 將變量b的值輸出putchar(c); 將變量c的值輸出putchar(n); 換行return 0;運行結果:BOYBOY任務3.4 順序結構的程序設計 示例 3.9 輸入三角形的三邊長,求三角形面積。為簡單起見,設輸入的三邊長a,b,c能構成三角形。從數(shù)學知識已知三角形的面積的公式為 其中s=(a+b+c)2據(jù)此編寫程序如下; #includemain()float a,b,c,s,area;scanf(“%f,%f,%f”,&a,
57、&b,&c);s=1.02*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“a=%6.2f,b=%6.2f,c=%6.2f,s=%6.2fn”,a,b,c);printf(“area=%6.2fn”,area); 任務3.4 順序結構的程序設計 示例 3.10 從鍵盤輸入一個大寫字母,要求改用小寫字母輸出。 #includemain() char c1,c2; c1=getchar(); printf(“%c,%dn”,c1,c1); c2=c1+32; printf(“%c,%dn”,c2,c2); 運行情況如下; A A,65 a
58、 ,97項目4 選擇結構程序設計1 項目導讀 項目目標 項目任務 選擇結構是三種基本結構之一,在大多數(shù)程序中都會包含選擇結構。本項目將介紹如何用C語言編寫含選擇結構的程序。項目導讀了解if和if-else語句的用法以及了解多重條件下if語句的嵌套使用。掌握switch開關語句的用法。熟悉條件運算符的使用。思考項目目標任務4.1 if語句 選擇結構簡介 選擇結構體現(xiàn)了程序的判斷能力。在程序執(zhí)行過程中能依據(jù)運行時某些變量的值確定某些操作是否執(zhí)行,或者確定若干個操作中選擇哪個操作執(zhí)行,這種程序結構稱為選擇結構,又稱為分支結構。 C語言提供了兩種分支語句:if條件語句和switch多分支選擇語句用于實
59、現(xiàn)選擇程序的設計,其中,if語句又分三種結構。在程序設計過程中,根據(jù)各語句的結構特點,靈活應用。 任務4.1 if語句 簡單的if語句 if結構是一種常用的分支結構,用它可以構成復雜的判斷選擇。 if語句是最簡單的一種單分支結構,其一般形式為: if(表達式) 語句A 其中,表達式一般為條件表達式或邏輯表達式,if結構的功能是:先判斷表達式的邏輯值,若該邏輯值為“真”,則執(zhí)行語句A,否則,什么也不執(zhí)行。 if結構的流程圖如圖4.1所示。圖4.1任務4.1 if語句 示例4.1設x與y有如下函數(shù)關系,試根據(jù)輸入的x值,求出y的值。 解題思路:依題意知:當x0時,y=x-7;當x=0時,y=2;當
60、x0時,y=3*x*x;其程序流程圖如圖4.2所示。 圖4.2 程序流程圖任務4.1 if語句程序代碼如下: #includestdio.hvoid main() float x,y; printf(請輸入x的值:); scanf(%f,&x); if(x0) y=x-7; /*x為正數(shù)時*/ if(x=0) y=2; if(x0) y=3*x*x; /*x為負數(shù)時*/ printf(y的值是:%2fn,y); 任務4.1 if語句語句 雙分支結構是按照某個條件判斷出執(zhí)行兩個語句(可以是復合語句)中的哪個語句。雙分支結構如圖4.3所示。 在C語言中,使用ifelse語句可以實現(xiàn)雙分支結構。其格式為: if(表達式) 語句1; else 語句2; 功能:計算表達式的值,如果為真(非0),則執(zhí)行“語句1”;否則執(zhí)行“語句2”。 圖4.3 雙分支結
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編版《道德與法治》教學目標及計劃
- 電商平臺售后服務合同協(xié)議
- 商業(yè)綜合體前期物業(yè)管理計劃
- 高校藝術專業(yè)課程改革計劃
- 心電圖室年度預算與財務計劃范文
- 環(huán)保項目HSE風險管理計劃
- 智能體育賽事票務系統(tǒng)合同
- 中藥產業(yè)園區(qū)開發(fā)建設合作框架協(xié)議
- 會議及團建旅游山莊項目商業(yè)計劃書范文
- 醫(yī)療行業(yè)反洗錢防控措施計劃
- 遙感的物理基礎 課件 第二章 遙感的物理基礎
- 質量管理體系的文件與記錄控制
- 雜詩十二首其二陶淵明
- 第五屆大廣賽獲獎作品
- 《廣告攝影》課件第五講 食品廣告拍攝與后期制作
- (三起點)pep人教版五年級英語下學期Unit2單元課件全套
- Brother-TC-S2A機器操作資料課件
- 肖申克的救贖的英語ppt
- X62W銑床主軸機械加工工藝規(guī)程及鉆床夾具設計
- 中醫(yī)院進修申請表(共5頁)
- (完整版)粉筆數(shù)量關系聽課筆記(整理版)
評論
0/150
提交評論