已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言復(fù)習(xí)提綱第一章 C語言程序設(shè)計(jì)概述一、Visual C+6.0開發(fā)環(huán)境1、了解Visual C+6.0的安裝過程;2、了解Visual C+6.0的工作界面,菜單和工具欄的使用;二、掌握C語言程序運(yùn)行的過程1、編輯:是指把按照C語法規(guī)則編寫的程序代碼通過編輯器(Visual C+ 6.0,Turbo C 3.0)輸入計(jì)算機(jī),并存盤。在存盤時(shí),C源文件的擴(kuò)展名為 .c 2、編譯:將C語言源程序編譯成目標(biāo)程序,即對(duì)源程序進(jìn)行編譯,并將源程序轉(zhuǎn)換為擴(kuò)展名為.obj的二進(jìn)制目標(biāo)代碼(即把已經(jīng)編輯好的源程序翻譯成二進(jìn)制目標(biāo)代碼的過程)。 3、連接:將用戶程序生成的目標(biāo)代碼文件(.obj)和系統(tǒng)提供的庫文件(.lib)中的某些代碼連接在一起,生成一個(gè)可執(zhí)行文件(.exe)。4、執(zhí)行:執(zhí)行生成的可執(zhí)行代碼,并輸出結(jié)果。5、調(diào)試:是將編制的程序投入實(shí)際運(yùn)行前,用手工或編譯程序等方法進(jìn)行測(cè)試,修正語法錯(cuò)誤和邏輯錯(cuò)誤的過程。三、結(jié)構(gòu)化程序設(shè)計(jì)的基本概念1、概念以模塊化設(shè)計(jì)為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個(gè)相互獨(dú)立的模塊,將原來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計(jì),任何模塊都可以使用一些基本的結(jié)構(gòu)來實(shí)現(xiàn),任何復(fù)雜的程序,都可以使用這些基本結(jié)構(gòu)按一定的順序組合起來,這些基本結(jié)構(gòu)的特點(diǎn)都是只有一個(gè)入口、一個(gè)出口,這樣的程序設(shè)計(jì)方法稱為結(jié)構(gòu)化程序設(shè)計(jì)。2、基本思想結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用自頂向下,逐步細(xì)化、模塊化設(shè)計(jì)、結(jié)構(gòu)化編碼的程序設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。自頂向下、逐步細(xì)化的程序設(shè)計(jì)方法從問題本身開始,經(jīng)過逐步細(xì)化,將解決問題的步驟分解為由基本程序結(jié)構(gòu)模塊組成的結(jié)構(gòu)化程序框圖;單入口單出口的思想認(rèn)為一個(gè)復(fù)雜的程序,如果它僅是由順序、選擇和循環(huán)三種基本程序結(jié)構(gòu)通過組合、嵌套構(gòu)成,那么這個(gè)新構(gòu)造的程序一定是一個(gè)單入口單出口的程序。據(jù)此就很容易編寫出結(jié)構(gòu)良好、易于調(diào)試的程序來。3、三種基本結(jié)構(gòu)順序結(jié)構(gòu) 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu)4、三種基本結(jié)構(gòu)的特點(diǎn)只有一個(gè)入口 只有一個(gè)出口每一個(gè)基本結(jié)構(gòu)中的每一部分都有機(jī)會(huì)執(zhí)行到結(jié)構(gòu)內(nèi)不存在“死循環(huán)”5、設(shè)計(jì)原則自頂向下 逐步細(xì)化 模塊化設(shè)計(jì)結(jié)構(gòu)化編碼6、結(jié)構(gòu)化程序設(shè)計(jì)方法要求把程序的結(jié)構(gòu)規(guī)定為順序、選擇和循環(huán)三種基本機(jī)構(gòu),并提出了自頂向下、逐步求精、模塊化程序設(shè)計(jì)等原則。結(jié)構(gòu)化程序設(shè)計(jì)是把模塊分割方法作為對(duì)大型系統(tǒng)進(jìn)行分析的手段,使其最終轉(zhuǎn)化為三種基本結(jié)構(gòu),其目的是為了解決由許多人共同開發(fā)大型軟件時(shí),如何高效率地完成可靠系統(tǒng)的問題。程序的可讀性好、可維護(hù)性好成為評(píng)價(jià)程序質(zhì)量的首要條件。缺點(diǎn):程序和數(shù)據(jù)結(jié)構(gòu)松散地耦合在一起。解決此問題的方法就是采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法(OOP)。四、C程序的基本組成:C程序是由若干個(gè)函數(shù)構(gòu)成的,至少有一個(gè)主函數(shù)main(),main()的位置可以任意,其他各函數(shù)在程序中的前后位置也是可以任意的。程序的執(zhí)行總是從主函數(shù)開始,在主函數(shù)中結(jié)束。主函數(shù)是可以調(diào)用其他任何非主函數(shù)的函數(shù),任何非主函數(shù)也可以調(diào)用其它任何非主函數(shù)。C程序的基本組成:聲明區(qū)、主程序區(qū)、函數(shù)定義區(qū)。1、聲明區(qū)處在程序文件的所有函數(shù)的外部,一般包含:包含頭文件、宏定義、類定義、結(jié)構(gòu)體定義、函數(shù)聲明、全局變量聲明、條件編譯等。2、主程序區(qū)主程序以main()函數(shù)開始,main()函數(shù)(主函數(shù))是程序運(yùn)行時(shí)的入口,包含局部變量的聲明、函數(shù)調(diào)用、一般運(yùn)算、結(jié)構(gòu)控制、對(duì)象與結(jié)構(gòu)的處理、文件處理等。3、函數(shù)定義區(qū)函數(shù)的定義包含函數(shù)說明和函數(shù)體兩部分。五、標(biāo)識(shí)符1、標(biāo)識(shí)符的定義:用來對(duì)變量、符號(hào)常量名、函數(shù)、數(shù)組、類型等命名的有效字符序列統(tǒng)稱為標(biāo)識(shí)符。2、標(biāo)識(shí)符的命名規(guī)則:由字母、數(shù)字或下畫線組成,并且第1個(gè)字符必須為字母或下畫線。注意:標(biāo)識(shí)符區(qū)分大小寫,且不能與關(guān)鍵字重名。練習(xí)1_1:下列變量標(biāo)識(shí)符哪些是正確的,哪些是不正確的?a3bc if a!bc _abc abc _3abc a_bc 3abc3、標(biāo)識(shí)符分類:關(guān)鍵字、預(yù)定義標(biāo)識(shí)符、用戶自定義標(biāo)識(shí)符。第二章 數(shù)據(jù)類型與簡單輸入與輸出圖2_1 C語言的數(shù)據(jù)類型數(shù)據(jù)類型基本類型空類型(無值類型)void構(gòu)造類型指針類型實(shí)型(浮點(diǎn)型)聯(lián)合型類型union單字符型char整型int單精度型float雙精度型double字符型寬字符型w-char邏輯型bool類類型class枚舉類型enum結(jié)構(gòu)類型struct數(shù)組類型一、C語言的數(shù)據(jù)類型C語言中基本數(shù)據(jù)類型包括整型、實(shí)型、字符型、枚舉類型,構(gòu)造類型有數(shù)組、結(jié)構(gòu)體、共用體等。、基本數(shù)據(jù)類型(見P17)、構(gòu)造類型又稱為組合類型,它是由基本類型按照某種規(guī)則組合而成的。n 數(shù)組:是由具有相同數(shù)據(jù)類型的元素組成的集合。n 結(jié)構(gòu)體:是由不同的數(shù)據(jù)類型構(gòu)成的一種混合的數(shù)據(jù)結(jié)構(gòu),構(gòu)成結(jié)構(gòu)體的成員的數(shù)據(jù)類型一般不同,并且在內(nèi)存中分別占據(jù)不同的存儲(chǔ)單元。n 共用體:是類似于結(jié)構(gòu)體的一種構(gòu)造類型,與結(jié)構(gòu)體不同的是構(gòu)成共同體的數(shù)據(jù)成員共用同一段內(nèi)存單元。n 枚舉:是將變量的值一一列舉出來,變量的值只限于列舉出來的值的范圍內(nèi)。、指針類型變量用于存儲(chǔ)另一變量的地址,而不能用來存放基本類型的數(shù)據(jù)。它在內(nèi)存中占據(jù)一個(gè)存儲(chǔ)單元。、類是一種數(shù)據(jù)類型,它定義的是一種對(duì)象類型,由數(shù)據(jù)和方法組成,描述了屬于該類型的所有對(duì)象的性質(zhì)。 二、常量和變量、常量:在程序運(yùn)行的整個(gè)過程中,其值始終保持不變的量。n 整型常量:表示形式有十進(jìn)制、八進(jìn)制(以0開頭)和十六進(jìn)制(以0x或0X開頭)。整型常量可以后綴字母L(或l)表示長整數(shù),后綴字母U(或u)表示無符號(hào)整數(shù)。n 實(shí)型常量(浮點(diǎn)型常量):表示形式有一般形式和指數(shù)形式。實(shí)型常量缺省為double型(雙精度型),如后綴f或F,則為float型(單精度型)。n 字符常量:用單撇號(hào)括起來的一個(gè)字符。如A,*等。轉(zhuǎn)義字符:用反斜杠引導(dǎo)的,具有特定含義的字符(見P22表2-4),如 n,367,x8a。注:C語言字符集中的任何一個(gè)字符均可用轉(zhuǎn)義字符來表示。n 字符串常量:用雙撇號(hào)括起來的字符序列。如student,廣東廣州等。n 布爾常量:false,true。 n 符號(hào)常量: #define 宏名 常數(shù)練習(xí)2_1:下列哪些是合法的常量:12.7f 0986 0986.012 、0625L 87U-0x98C2 01a -6.87E-2 1.2e0.5 E-30xFF 2L 72 160 -0xffff011 -0xcdf 0xe -01 0668變量:指程序在運(yùn)行時(shí)其值可改變的量。n 變量應(yīng)先定義(聲明其類型和名稱)后使用; n 變量定義的一般形式為: u ,;n 在定義一個(gè)變量的同時(shí),也可以給它賦以初值。 練習(xí)2_2以下正確的變量標(biāo)識(shí)符是3abc $amount Num_of_Student if a!bc _above _abc ab sin day三、順序結(jié)構(gòu)程序設(shè)計(jì)數(shù)據(jù)的輸入和輸出1、格式化輸出printf()函數(shù)n printf()函數(shù)的一般格式如下:printf(格式字符串 ,輸出項(xiàng)表); 輸出項(xiàng)表:要輸出的數(shù)據(jù)項(xiàng)(可以沒有,有多個(gè)時(shí)以“,”分隔) 格式控制串:包含兩種信息格式說明: %修飾符格式字符 ,用于指定輸出格式如:格式控制字符“%c”表示的含義是輸出一個(gè)字符型數(shù)據(jù)。普通字符或轉(zhuǎn)義序列:原樣輸出。n 格式控制字符:表2_1 printf()函數(shù)格式字符格式轉(zhuǎn)換字符含義舉例%d,%i以十進(jìn)制整數(shù)輸出int a=65;printf(“%d”,a)/65%c輸出一個(gè)字符型數(shù)據(jù)int a=65;printf(“%c”,a)/A%s輸出一個(gè)字符串printf(“%s”,“abcd”)/abcd%e,%E以指數(shù)形式輸出一個(gè)浮點(diǎn)型數(shù)據(jù)(小數(shù)位數(shù)缺省值為6位)float x=984.235497426;printf(%e,x);/9.842355e+002%f(有效數(shù)字6-7位)以十進(jìn)制小數(shù)形式輸出一個(gè)浮點(diǎn)型數(shù)據(jù)(小數(shù)位數(shù)缺省值為6位)float x=984.235432426;printf(%f,x);/984.235413%g,%G按照%e,%f輸出寬度較短的格式輸出,不輸出無意義的0float x=23.240;printf(%g,x);/23.24n 修飾符:表2_2 printf()函數(shù)修飾符修飾符功能示例m數(shù)據(jù)最小寬度. m,正常輸出;m ,左補(bǔ)空格.int a=36;printf(a=%5dn,a);/36.n對(duì)實(shí)數(shù),表示輸出n位小數(shù);對(duì)字符串,表示截取的字符個(gè)數(shù)float a=123.456;printf(a=%8.2fn,a);/123.46輸出的數(shù)值靠左端,右邊補(bǔ)空格。printf(s=%-5.3s,guangdong)/gua 0小于指定寬度左邊補(bǔ)0。int b=789;printf(b=%05dn,b);/00789如:在C程序的格式輸出中,%d表示輸出十進(jìn)制整數(shù),%6.2f表示輸出長度為6位,有2位小數(shù)的實(shí)數(shù)。printf(s=%-5.3s,student);的輸出結(jié)果是s=stu 。2、格式化輸入scanf()函數(shù)scanf()函數(shù)的一般格式scanf(格式字符串, 輸入項(xiàng)首地址表);注:格式輸入函數(shù)scanf()可以從鍵盤上接收不同數(shù)據(jù)類型的數(shù)據(jù)。格式化輸出函數(shù)(printf())和格式化輸入函數(shù)(scanf())都包含在頭文件“stdio.h”中。n 格式字符串。格式字符串可以包含3種類型的字符:格式指示符、空白字符(空格、Tab鍵和回車鍵)和非空白字符(又稱普通字符)。格式指示符與printf()函數(shù)的相似,空白字符作為相鄰2個(gè)輸入數(shù)據(jù)的缺省分隔符,非空白字符在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入。n 輸入項(xiàng)首地址表由若干個(gè)輸入項(xiàng)首地址組成,相鄰2個(gè)輸入項(xiàng)首地址之間,用逗號(hào)分開。輸入項(xiàng)首地址表中的地址,可以是變量的首地址,也可以是字符數(shù)組名或指針變量。變量首地址的表示方法: &變量名其中“&”是地址運(yùn)算符。n 數(shù)據(jù)輸入操作 如果相鄰2個(gè)格式指示符之間,不指定數(shù)據(jù)分隔符(如逗號(hào)、冒號(hào)等),則相應(yīng)的2個(gè)輸入數(shù)據(jù)之間,至少用一個(gè)空格分開,或者用Tab鍵分開,或者輸入1個(gè)數(shù)據(jù)后,按回車,然后再輸入下1個(gè)數(shù)據(jù)。例如,scanf(%d%d,&num1,&num2);假設(shè)給num1輸入12,給num2輸入36,則正確的輸入操作為:1236或者:12 36 注:使用“”符號(hào)表示按回車鍵操作,在輸入數(shù)據(jù)操作中的作用是,通知系統(tǒng)輸入操作結(jié)束。 “格式字符串”中出現(xiàn)的普通字符(包括轉(zhuǎn)義字符形式的字符),務(wù)必原樣輸入。 例如,scanf(%d,%d,&num1,&num2); 假設(shè)給num1輸入12,給num2輸入36,正確的輸入操作為:12,36練習(xí)2_3已有定義doubled,f;,數(shù)據(jù)的輸入方式為:3.693.2,根據(jù)定義和數(shù)據(jù)的輸入方式,輸入函數(shù)語句的正確形式為scanf(%lf%lf,&d,&f)。(scanf(%4.2lf%3.1lf,&d,&f) 或scanf(%4.2f%3.1f,&d,&f)都是錯(cuò)誤的)第三章 運(yùn)算符與表達(dá)式一、運(yùn)算符和表達(dá)式1、算術(shù)運(yùn)算符和算術(shù)表達(dá)式注意:int i=1.2*3; /結(jié)果為3,而不是3.6。 int i=5/3結(jié)果為1。2、賦值運(yùn)算符和賦值表達(dá)式注意:n 賦值運(yùn)算符的結(jié)合性是從右至左的n 復(fù)合賦值運(yùn)算符:int a=12; a+=a-=a*=a;(a=a+(a=a-(a=a*a),結(jié)果為0)注意:在C語言中,定義inta=b=c=3;是錯(cuò)誤的,而定義inta,b,c; a=b=c=3;是正確的。 練習(xí)3_1設(shè)m=9,i=3,則執(zhí)行運(yùn)算m%=i+1后,m的值是多少?結(jié)果1。m=m%(i+1)m=9%(3+1)m=1。3、關(guān)系運(yùn)算符和關(guān)系表達(dá)式注意:n 關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。例如:a+bc 等價(jià)于 (a+b)c,a!=bc等價(jià)于a!=(bc) n “=”與“=”的區(qū)別4、邏輯運(yùn)算符與邏輯表達(dá)式注意:n 邏輯非的優(yōu)先級(jí)最高,邏輯與次之,邏輯或最低練習(xí)3_2 若有int a=3,b=0;則表達(dá)式a&!b的值為1。n 邏輯運(yùn)算符的短路特性。練習(xí)3_3int x,y,z; x=y=z=-1; +x&+y|+z; printf(“x=%dty=%dtz=%dn”,x,y,z);(結(jié)果:0 -1 0)x=y=z=-1; +x|+y&+z; printf(“x=%dty=%dtz=%dn”,x,y,z); (結(jié)果:0 0 -1)x=y=z=-1; +x&+y&+z; printf(“x=%dty=%dtz=%dn”,x,y,z); (結(jié)果:0 -1 -1)5、自增(+)、自減(-)運(yùn)算符注意:自增(+)、自減(-)運(yùn)算符的前置用法和后置用法的區(qū)別。練習(xí)3_4設(shè)有變量說明:int a=8,b=7;那么執(zhí)行語句:printf(%d,%d n,+a,b-),輸出的結(jié)果是9,7練習(xí)3_5設(shè)a,b,c均為int型變量,則執(zhí)行語句a=b=3;c=+a|+b;后,b的值為3。練習(xí)3_6int i, j, k; int m, n, p; i = 8; j = 10; k = 12; /* 自增在操作數(shù)之前 */ m = +i;printf(i = %dn, i);printf(m = %dn, m); (結(jié)果:9 9)/* 自減在操作數(shù)之后 */n = j-; printf(j = %dn, j); printf(n = %dn, n); (結(jié)果:9 10)/* 自增、自減的混合運(yùn)算 */p = (+m)*(n+)+(-k); printf(k = %dn, k); printf(p = %dn, p); (結(jié)果:11 111)6、條件運(yùn)算符表達(dá)式1?表達(dá)式2:表達(dá)式3注意:n 結(jié)合性是自右向左。ab?a:cd?c:d相當(dāng)于ab?a:(cd?c:d)n 條件運(yùn)算符的優(yōu)先級(jí)別高于賦值運(yùn)算符,低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。如:ab?a-b:b-a相當(dāng)于ab?(a-b):(b-a) 練習(xí)3_7設(shè)有變量說明:int x=3,y=5;那么表達(dá)式:z=xy?x:y運(yùn)算后,z的值是5。7、位運(yùn)算符位運(yùn)算符是對(duì)其操作數(shù)按其二進(jìn)制形式逐位進(jìn)行運(yùn)算,參加位運(yùn)算的操作數(shù)必須為整數(shù)。練習(xí)3_8 int a=5,b=6;a&b=4;a|b=7;ab=3;b=-7;b2=1。注:在位運(yùn)算中,操作數(shù)左移三位,其結(jié)果相當(dāng)于操作數(shù)乘以8。8、逗號(hào)運(yùn)算符表達(dá)式, 表達(dá)式, , 表達(dá)式n注意:自左至右,依次計(jì)算各表達(dá)式的值,“表達(dá)式n” 的值即為整個(gè)逗號(hào)表達(dá)式的值。如:a = 3 * 5, a * 4, a + 5的值為20。二、運(yùn)算符的優(yōu)先級(jí)與結(jié)合性1、所謂結(jié)合性是指,當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是語言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其它運(yùn)算符都是左結(jié)合性。2、表達(dá)式求值n 按運(yùn)算符的優(yōu)先級(jí)高低次序執(zhí)行。例如,先乘除后加減。n 如果在一個(gè)運(yùn)算對(duì)象(或稱操作數(shù))兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同,則按語言規(guī)定的結(jié)合方向(結(jié)合性)進(jìn)行。例如,算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a b + c”時(shí),變量b先與減號(hào)結(jié)合,執(zhí)行“a - b”;然后再執(zhí)行加c的運(yùn)算。練習(xí)3_9 設(shè)int x=2,y=3,z=4; 執(zhí)行語句行x+;y+=1;z=x+y-以后,x,y和z的值分別是多少?答案:3,3,7練習(xí)3_10 設(shè)x,y,z,t均為int型變量,則執(zhí)行x=y=z=1;t=+x|+y&+z;這些語句后,x,y,z,t的值為多少?2,1,1,1練習(xí)3_11 如果a=5,b=3,c=7,d=9,則條件表達(dá)式ab?a:cd?c:d的值為多少?結(jié)果為7。第四章 程序流程控制一、算法1、算法的概念:算法是指為解決一個(gè)問題而采取的確定的、有限的方法和步驟。2、算法的描述方法最常用的有自然語言、流程圖、N-S流程圖、PAD圖和偽代碼等。二、順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中最簡單、最常見的一種程序結(jié)構(gòu)。順序結(jié)構(gòu)中的語句是按照書寫的先后次序執(zhí)行的,并且每個(gè)語句都會(huì)被執(zhí)行到。練習(xí)4_1 編寫一個(gè)程序,從鍵盤上輸入一個(gè)學(xué)生5門課的成績,計(jì)算出該學(xué)生的總成績和平均成績,并用自然語言描述算法。解:設(shè)變量 a、b、c、d、e分別表示學(xué)生5門課的成績,sum表示總成績,aver表示平均成績, 則用自然語言描述算法如下:輸入學(xué)生5門課的成績a、b、c、d、e;求總成績sum=a+b+c+d+e;求平均成績: aver =sum/5.0;輸出總成績和平均成績。程序如下:#include main()float a,b,c,d,e,sum,aver;printf(請(qǐng)輸入學(xué)生5門課的成績n);scanf(%f,%f,%f,%f,%f,&a,&b,&c,&d,&e);sum=a+b+c+d+e;aver=sum/5.0;printf(總成績=%0.2f,平均成績=%.2fn,sum,aver);練習(xí)4_2 編寫一個(gè)程序,從鍵盤輸入梯形的上底、下底和高的值(浮點(diǎn)數(shù)),計(jì)算并輸出其面積(保留兩位小數(shù)),并用N-S結(jié)構(gòu)圖表示算法。 解:設(shè)變量a、b、h、area分別表示梯形的上底、下底、高和面積,則用N-S結(jié)構(gòu)圖表示算法如下:輸入梯形的上底a、下底b和高h(yuǎn)計(jì)算梯形的面積: area=(a+b)*h/2.0輸出結(jié)果。 程序如下:#include main()float a,b,h,area;printf(請(qǐng)輸入梯形的上底、下底和高n);scanf(%f,%f,%f,&a,&b,&h); area=(a+b)*h/2.0;printf(梯形的面積為%0.2fn,area);練習(xí)4_3 編寫一個(gè)程序,從鍵盤輸入圓的半徑,計(jì)算并輸出圓的周長和面積(保留兩位小數(shù)),用偽代碼表示出算法。解:設(shè)用變量r 、length、area分別表示圓的半徑、周長和面積,則用偽代碼表示算法如下:BEGIN input r length=2*3.14*r area=3.14*r*r print length,areaEND程序如下:#include #define PI 3.14main()float r,length,area;printf(請(qǐng)輸入圓的半徑n);scanf(%f,&r);length=2*PI*r;area=PI*r*r;printf(圓的周長為%0.2fn,length);printf(圓的面積為%0.2fn,area); 三、選擇結(jié)構(gòu)程序設(shè)計(jì)1、if語句、if語句的一般格式 if(表達(dá)式) 語句組1; else 語句組2; n if語句中的“表達(dá)式”必須用“(”和“)”括起來。表示程序執(zhí)行的條件,常用關(guān)系運(yùn)算符、邏輯運(yùn)算符等表示的條件表達(dá)式,其結(jié)果只有兩個(gè)值“1”或“0”(成立或不成立)。如:表示字符型變量ch是大寫英文字符的C語言表達(dá)式是ch=A&ch=0&ch=9。n else子句(可選)是if語句的一部分,必須與if配對(duì)使用,不能單獨(dú)使用。n 當(dāng)if和else下面的語句組,僅由一條語句構(gòu)成時(shí),也可不使用復(fù)合語句形式(即去掉花括號(hào))。、if語句的執(zhí)行過程n 缺省else子句時(shí)n 當(dāng)“表達(dá)式”的值不等于0(即判定為“邏輯真”)時(shí),則執(zhí)行語句組1,否則直接轉(zhuǎn)向執(zhí)行下一條。n 指定else子句時(shí)n 當(dāng)“表達(dá)式”的值不等于0(即判定為“邏輯真”)時(shí),則執(zhí)行語句組1,然后轉(zhuǎn)向下一條語句;否則,執(zhí)行語句組2。、if語句的嵌套與嵌套匹配原則n if語句允許嵌套。所謂if語句的嵌套是指,在“語句組1”或(和)“語句組2”中,又包含有if語句的情況。n if語句嵌套時(shí),為避免嵌套的if-else語句的二義性,C語言規(guī)定:else總是與在其之前最近的未配對(duì)的if語句組成配對(duì)關(guān)系。練習(xí)4_4:鐵路托運(yùn)行李,假設(shè)每張車票可按每公斤0.5元托運(yùn)50公斤以內(nèi)的行李,如果超過50公斤時(shí),超過的部分每公斤加價(jià)0.3元,試編寫一道計(jì)算行李托運(yùn)費(fèi)的程序。解:/*程序功能:計(jì)算行李托運(yùn)費(fèi)*/#include Void main() float w,x; printf(輸入行李的重量:); scanf(%f,&w); if(w50.0) x=50.0*0.5+(w-50.0)*0.8; else x=w*0.5;printf(行李重量w=%.2f公斤,托運(yùn)費(fèi)x=%.2f元n,w,x); 2switch語句、switch語句的一般形式switch(表達(dá)式) case 常量表達(dá)式1:語句組;break; case 常量表達(dá)式2:語句組;break; . case 常量表達(dá)式:語句組;break; default:語句組;break; 、執(zhí)行過程 n 當(dāng)switch后面“表達(dá)式”的值,與某個(gè)case后面的“常量表達(dá)式”的值相同時(shí),就執(zhí)行該case后面的語句(組);當(dāng)執(zhí)行到break語句時(shí),跳出switch語句,轉(zhuǎn)向執(zhí)行switch語句的下一條。n 如果沒有任何一個(gè)case后面的“常量表達(dá)式”的值,與“表達(dá)式”的值匹配,則執(zhí)行default 后面的語句(組)。然后,再執(zhí)行switch語句的下一條。說明n switch后面的“表達(dá)式”,可以是int、char和枚舉型中的一種。n 每個(gè)case子句后面的“常量表達(dá)式”的值,必須各不相同,否則會(huì)出現(xiàn)相互矛盾的現(xiàn)象(即對(duì)表達(dá)式的同一值,有兩種或兩種以上的執(zhí)行方案)。n case后面的常量表達(dá)式僅起語句標(biāo)號(hào)作用,并不進(jìn)行條件判斷。系統(tǒng)一旦找到入口標(biāo)號(hào),就從此標(biāo)號(hào)開始執(zhí)行,不再進(jìn)行標(biāo)號(hào)判斷,所以要退出switch語句,方法是使用break語句。n 各case及default子句的先后次序,不影響程序執(zhí)行結(jié)果。n 多個(gè)case子句,可共用同一語句(組)n 用switch語句實(shí)現(xiàn)的多分支結(jié)構(gòu)程序,完全可以用if語句或if語句的嵌套來實(shí)現(xiàn)。練習(xí)4_5:從鍵盤上輸入一個(gè)百分制成績score,按下列原則輸出其等級(jí):score90,等級(jí)為A;80score90,等級(jí)為B;70score80,等級(jí)為C;60score70,等級(jí)為D;score60,等級(jí)為E。解:#include Void main()int score, grade; printf(“Input a score(0100): ”); scanf(“%d”, &score); grade = score/10; /*將成績整除10,轉(zhuǎn)化成switch語句中的case標(biāo)號(hào)*/ switch (grade)case 10: case 9: printf(“grade=An”); break;case 8: printf(grade=Bn); break; case 7: printf(grade=Cn); break; case 6: printf(grade=Dn); break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“grade=En”); break; default: printf(“The score is out of range!n”);練習(xí)4_6以下程序段的輸出結(jié)果是int x=7,y=8,z=9;if(xy) x=y,y=z;z=x;printf(%d,%d,%dn,x,y,z);結(jié)果:7,8,7練習(xí)4_7 以下程序的輸出結(jié)果是#include void main() int m=5;if(m+5)printf(%dn,m);elseprintf(%dn,m-);結(jié)果:6練習(xí)4_8 以下程序的輸出結(jié)果是#include void main()int k=1,x=0,y=0;switch(k)case 0:y+;case 1:x+;case 2:x+;y+;printf(x=%d,y=%dn,x,y);結(jié)果x=2,y=1三、循環(huán)程序設(shè)計(jì)1、while語句、一般格式 while(循環(huán)繼續(xù)條件) 循環(huán)體語句組;、執(zhí)行過程求解“循環(huán)繼續(xù)條件”表達(dá)式。如果其值為非0,轉(zhuǎn);否則轉(zhuǎn)。執(zhí)行循環(huán)體語句組,然后轉(zhuǎn)。執(zhí)行while語句的下一條。練習(xí)4_9:/*程序功能:求1100的累計(jì)和*/#include void main() int i=1,sum=0; /*初始化循環(huán)控制變量i和累計(jì)器sum*/ while( i=100 ) sum += i;/*實(shí)現(xiàn)累加*/ i+;/*循環(huán)控制變量i增1*/ printf(“sum=%dn”,sum); 程序運(yùn)行情況如下:sum=50502、do-while語句(直到型循環(huán))、一般格式 do 循環(huán)體語句組; while(循環(huán)繼續(xù)條件);/*本行的分號(hào)不能缺省*/當(dāng)循環(huán)體語句組僅由一條語句構(gòu)成時(shí),可以不使用復(fù)合語句形式。、執(zhí)行過程執(zhí)行循環(huán)體語句組。計(jì)算“循環(huán)繼續(xù)條件”表達(dá)式。如果“循環(huán)繼續(xù)條件”表達(dá)式的值為非 0(真),則轉(zhuǎn)向繼續(xù)執(zhí)行;否則,轉(zhuǎn)向。執(zhí)行do-while的下一條語句。、do-while循環(huán)語句的特點(diǎn)是:先執(zhí)行循環(huán)體語句組,然后再判斷循環(huán)條件。do-while語句比較適用于處理:不論條件是否成立,先執(zhí)行1次循環(huán)體語句組的情況。練習(xí)4_10:用do-while語句求解1100的累計(jì)和。/*程序功能:求1100的累計(jì)和*/main() int i=1, sum=0; /*定義并初始化循環(huán)控制變量,以及累計(jì)器*/ Do sum += i; /*累加*/ i+; while(i=100);/*循環(huán)繼續(xù)條件:i=100*/ printf(“sum=%dn”,sum); 3、for語句、for語句的一般格式 for(變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值) 循環(huán)體語句組;、for語句的執(zhí)行過程求解“變量賦初值”表達(dá)式。求解“循環(huán)繼續(xù)條件”表達(dá)式。如果其值非0,執(zhí)行;否則,轉(zhuǎn)至。執(zhí)行循環(huán)體語句組,并求解“循環(huán)變量增值”表達(dá)式,然后轉(zhuǎn)向。執(zhí)行for語句的下一條語句。、說明“變量賦初值”、“循環(huán)繼續(xù)條件”和“循環(huán)變量增值”部分均可缺省,甚至全部缺省,但其間的分號(hào)不能省略。當(dāng)循環(huán)體語句組僅由一條語句構(gòu)成時(shí),可以不使用復(fù)合語句形式?!把h(huán)變量賦初值”表達(dá)式,既可以是給循環(huán)變量賦初值的賦值表達(dá)式,也可以是與此無關(guān)的其它表達(dá)式(如逗號(hào)表達(dá)式)。例如,for(sum=0;i=100;i+) sum += i; for(sum=0,i=1;i=100;i+) sum += i;“循環(huán)繼續(xù)條件”部分是一個(gè)邏輯量,除一般的關(guān)系(或邏輯)表達(dá)式外,也允許是數(shù)值(或字符)表達(dá)式。如:while(!E)等價(jià)于while(0),while(E)等價(jià)于while(1)。練習(xí)4_11:求n的階乘n!(n!=1*2*n)。/*程序功能:求n!*/main() int i, n; long fact=1;/*將累乘器fact初始化為1*/ printf(“Input n: ”); scanf(“%d”, &n); for(i=1; i=n; i+)fact *= i;/*實(shí)現(xiàn)累乘*/ printf(%d ! = %ldn, n, fact); 程序運(yùn)行情況如下:Input n: 55 ! = 120練習(xí)4_12 有以下程序#include void main()int a=10,b=10,i;for(i=0;a8;b=+i)printf(%d %d ,a-,b);程序輸出的結(jié)果是10 10 9 1練習(xí)4_13 有以下程序#include void main()int k;for(k=0;k10;k+);printf(%d,k);答案:10練習(xí)4_14 以下程序的運(yùn)行結(jié)果是#include void main()int m;for(m=1;m=1) a-;程序執(zhí)行后,a的值是0。5、循環(huán)的嵌套、循環(huán)語句的循環(huán)體內(nèi),又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。循環(huán)嵌套的概念,對(duì)所有高級(jí)語言都是一樣的。、for語句和while語句允許嵌套,do-while語句也不例外。練習(xí)4_18:編程: 輸出下列圖形 * * * * *解:/*程序功能:打印5行*,第一行1個(gè),第二行3個(gè),第三行5個(gè).*/#include void main() int i=1; while(i=5) int j=1,k=1; while(j=5-i) printf( ); j+; while(k3) 程序代碼如下:#includevoid main() int F1=1,F2=1; int F,S=2,n=3; while(n=12) F=F1+F2; F1=F2; F2=F; S=S+F; n+; printf(S=%dn,S); 練習(xí)4_20 求輸入的十個(gè)整數(shù)中正數(shù)的個(gè)數(shù)及其平均值#include void main() int i,num=0,a; float sum=0; for(i=0;i10;i+) scanf(%d,&a);if(a=0) continue;num+;sum+=a; printf(%d plus integers sum :%6.0fn,num,sum); printf(Mean value:%6.2fn,sum/num);練習(xí)4_21:編程:設(shè)計(jì)一個(gè)程序完成以下功能:若輸入英文字母,則原樣輸出;輸入其他字符,則不輸出,直到輸入q鍵結(jié)束。解:#include void main()char ch;doch=getchar();if(ch=Q | ch=q)break;else if(ch=A & ch=a & chn2?n1:n2); main()int max(int n1, int n2);/*函數(shù)說明*/ int num1,num2; printf(input two numbers:n); scanf(%d%d, &num1, &num2);printf(max=%dn, max(num1,num2);、說明函數(shù)定義不允許嵌套(但函數(shù)的調(diào)用可以嵌套)。在語言中,所有函數(shù)(包括主函數(shù)main())都是平行的。一個(gè)函數(shù)的定義,可以放在程序中的任意位置,主函數(shù)main()之前或之后。但在一個(gè)函數(shù)的函數(shù)體內(nèi),不能再定義另一個(gè)函數(shù),即不能嵌套定義??蘸瘮?shù)既無參數(shù)、函數(shù)體又為空的函數(shù)。其一般形式為:函數(shù)類型 函數(shù)名(void) 在老版本C語言中,參數(shù)類型說明允許放在函數(shù)說明部分的第2行單獨(dú)指定。 2、函數(shù)的返回值與函數(shù)類型函數(shù)返回值與return語句有參函數(shù)的返回值,是通過函數(shù)中的return語句來獲得的。return語句的一般格式: return ( 返回值表達(dá)式 );return語句的功能:返回調(diào)用函數(shù),并將“返回值表達(dá)式”的值帶給調(diào)用函數(shù)。注意:調(diào)用函數(shù)中無return語句,并不是不返回一個(gè)值,而是一個(gè)不確定的值。為了明確表示不返回值,可以用“void”定義成“無(空)類型”。函數(shù)類型函數(shù)的類型說明符指明了函數(shù)的類型,它實(shí)際上是函數(shù)返回值的類型。如果不要求函數(shù)有返回值,函數(shù)的類型說明符可以寫為void,如果缺省,C語言函數(shù)返回類型的默認(rèn)定義類型是int型。在定義函數(shù)時(shí),對(duì)函數(shù)類型的說明,應(yīng)與return語句中、返回值表達(dá)式的類型一致。如果不一致,則以函數(shù)類型為準(zhǔn)。如果缺省函數(shù)類型,則系統(tǒng)一律按整型處理。即:在C語言中,函數(shù)返回值的數(shù)據(jù)類型取決于在定義該函數(shù)時(shí)所指定的數(shù)據(jù)類型。3、對(duì)被調(diào)用函數(shù)的說明和函數(shù)原型在ANSI C新標(biāo)準(zhǔn)中,采用函數(shù)原型方式,對(duì)被調(diào)用函數(shù)進(jìn)行說明,其一般格式如下:函數(shù)類型 函數(shù)名(數(shù)據(jù)類型 參數(shù)名, 數(shù)據(jù)類型 參數(shù)名2);/C語言同時(shí)又規(guī)定,在以下3種情況下,可以省去對(duì)被
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)實(shí)習(xí)報(bào)告模板9篇
- 中學(xué)簡愛讀書筆記
- 企業(yè)承諾書15篇
- 城市公共空間功能提升項(xiàng)目建議書
- 城市更新基礎(chǔ)設(shè)施建設(shè)項(xiàng)目建議書
- 五年級(jí)國慶節(jié)作文300字
- 技能認(rèn)證考試練習(xí)卷附答案
- 國家級(jí)產(chǎn)業(yè)園基礎(chǔ)設(shè)施項(xiàng)目管理組織結(jié)構(gòu)
- 2024年裝修行業(yè)輕工施工協(xié)議范例
- 2024年離婚協(xié)議債務(wù)逃避處罰責(zé)任界定及執(zhí)行合同3篇
- 腰椎感染護(hù)理查房
- 2024秋期國家開放大學(xué)??啤斗勺稍兣c調(diào)解》一平臺(tái)在線形考(形考任務(wù)1至4)試題及答案
- 銷售業(yè)務(wù)拓展外包協(xié)議模板2024版版
- 體育大單元教學(xué)計(jì)劃(18課時(shí))
- 2024軟件維護(hù)合同范本
- 期末測(cè)評(píng)-2024-2025學(xué)年統(tǒng)編版語文三年級(jí)上冊(cè)
- 云南省師范大學(xué)附屬中學(xué)2025屆高二生物第一學(xué)期期末聯(lián)考試題含解析
- 人教部編版初中八年級(jí)生物上冊(cè)知識(shí)梳理
- 陜西省西安市未央?yún)^(qū)2023-2024學(xué)年五年級(jí)上學(xué)期期末科學(xué)試題
- 四年級(jí)上冊(cè)音樂教案 第七單元 送別蘇少版
- 九年級(jí)物理下冊(cè) 第十五章 電功和電熱 二 電功率教案 (新版)蘇科版
評(píng)論
0/150
提交評(píng)論