![實(shí)驗(yàn)2-用用C語(yǔ)言編寫(xiě)程序_第1頁(yè)](http://file4.renrendoc.com/view/c4dd3d4124a4242ff6cbda6455aa729e/c4dd3d4124a4242ff6cbda6455aa729e1.gif)
![實(shí)驗(yàn)2-用用C語(yǔ)言編寫(xiě)程序_第2頁(yè)](http://file4.renrendoc.com/view/c4dd3d4124a4242ff6cbda6455aa729e/c4dd3d4124a4242ff6cbda6455aa729e2.gif)
![實(shí)驗(yàn)2-用用C語(yǔ)言編寫(xiě)程序_第3頁(yè)](http://file4.renrendoc.com/view/c4dd3d4124a4242ff6cbda6455aa729e/c4dd3d4124a4242ff6cbda6455aa729e3.gif)
![實(shí)驗(yàn)2-用用C語(yǔ)言編寫(xiě)程序_第4頁(yè)](http://file4.renrendoc.com/view/c4dd3d4124a4242ff6cbda6455aa729e/c4dd3d4124a4242ff6cbda6455aa729e4.gif)
![實(shí)驗(yàn)2-用用C語(yǔ)言編寫(xiě)程序_第5頁(yè)](http://file4.renrendoc.com/view/c4dd3d4124a4242ff6cbda6455aa729e/c4dd3d4124a4242ff6cbda6455aa729e5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Chap 1 用C語(yǔ)言編寫(xiě)程序 1.1 在屏幕上顯示 Hello World!1.2 求華氏溫度 100F 對(duì)應(yīng)的攝氏溫度1.3 計(jì)算分段函數(shù)1.4 輸出華氏攝氏溫度轉(zhuǎn)換表1.5 生成乘方表與階乘表 本章要點(diǎn)怎樣編寫(xiě)程序,在屏幕上顯示一些信息?怎樣編寫(xiě)程序,實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)處理,例如將華氏溫度轉(zhuǎn)換為攝氏溫度?怎樣使用 if 語(yǔ)句計(jì)算分段函數(shù)?怎樣用 for 語(yǔ)句求 1+2+100?如何定義和調(diào)用函數(shù)生成一張乘方表?1.1 在屏幕上顯示Hello World! 例1-1 在屏幕上顯示一個(gè)短句:Hello World!1.1 在屏幕上顯示Hello World!/* 顯示“Hello World!
2、*/ 注釋文本 # include int main(void) 主函數(shù) printf(“Hello World! n); 語(yǔ)句結(jié)束 return 0; 輸出函數(shù) 換行符1.任何程序都有主函數(shù)1.程序由假設(shè)干語(yǔ)句組成3.語(yǔ)句由;結(jié)束1.1 在屏幕上顯示一些信息例1-2 在屏幕上顯示:Programming is fun!And Programming in C is even more fun!# include 編譯預(yù)處理命令int main(void) printf(Programming is fun! n); printf(And Programming in C is even mo
3、re fun! n); return 0; 1.2 求華氏溫度 100F 對(duì)應(yīng)的攝氏溫度 攝氏溫度 C=(5/9)(F-32)1.2.1 程序解析1.2.2 常量、變量和數(shù)據(jù)類型1.2.3 算術(shù)運(yùn)算和賦值運(yùn)算1.2.4 格式化輸出函數(shù)printf1.2.1 程序解析例1-3 求華氏溫度 100F 對(duì)應(yīng)的攝氏溫度。攝氏溫度 C=(5/9)(F-32) #include int main(void) int celsius, fahr; 變量定義 fahr = 100; 變量使用 celsius = 5 * (fahr - 32) / 9; printf(fahr = %d, celsius =
4、%dn, fahr, celsius);輸出結(jié)果 return 0;輸出:fahr =100, celsius = 371.2.2 常量、變量和數(shù)據(jù)類型int celsius, fahr; celsius = 5 * (fahr - 32) / 9;數(shù)據(jù)常量:在程序運(yùn)行過(guò)程中,其值不能被改變 變量:在程序運(yùn)行過(guò)程中,其值可以被改變 數(shù)據(jù)類型常量:5 和 9是整型常量整數(shù)變量:在定義時(shí)指定變量的定義變量定義的一般形式:類型名 變量名表;例如:int celsius, fahr; 定義整型變量float x; 定義單精度浮點(diǎn)型變量double area, length; 定義雙精度浮點(diǎn)型變量dou
5、ble型數(shù)據(jù)比f(wàn)loat精度高,取值范圍大 變量名:小寫(xiě)字母;見(jiàn)名知義變量的定義定義變量時(shí)要指定變量名和數(shù)據(jù)類型類型名 變量名表;int celsius, fahr; float x;double area, length;變量名代表內(nèi)存中的一個(gè)存儲(chǔ)單元存放該變量的值該存儲(chǔ)單元的大小由變量的數(shù)據(jù)類型決定C語(yǔ)言中的變量代表保存數(shù)據(jù)的存儲(chǔ)單元數(shù)學(xué)中的變量代表未知數(shù) x = x+1變量的定義與使用變量必須先定義,后使用。#include int main(void) int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; print
6、f(fahr = %d, celsius = %dn, fahr, celsius); return 0;一個(gè)變量名只能定義一次變量一般都定義在程序的頭上不能定義在程序的中間或后面應(yīng)該先賦值,后引用1.2.3 算術(shù)運(yùn)算和賦值運(yùn)算fahr = 100; celsius = 5 * (fahr - 32) / 9; 1、算術(shù)運(yùn)算雙目算術(shù)運(yùn)算符:+ - * / %算術(shù)表達(dá)式:用算術(shù)運(yùn)算符將運(yùn)算對(duì)象連接起來(lái)的符合C語(yǔ)言語(yǔ)法規(guī)那么的式子 數(shù)學(xué)式:(5/9)(F-32) C表達(dá)式:5 * (fahr - 32) / 9 或者:數(shù)學(xué)式:s(s-a)(s-b)(s-c)C表達(dá)式:算術(shù)運(yùn)算雙目算術(shù)運(yùn)算符:+ -
7、 * / %算術(shù)表達(dá)式:用算術(shù)運(yùn)算符將運(yùn)算對(duì)象連接起來(lái)的符合C語(yǔ)言語(yǔ)法規(guī)那么的式子 注意/ 整數(shù)除整數(shù),得整數(shù)如:1/2 0,9/4 2 ?5 * (fahr - 32) / 9 和 5 / 9 * (fahr - 32) 等價(jià)嗎% 針對(duì)整型數(shù)據(jù)如: 565,941,10040雙目運(yùn)算符兩側(cè)操作數(shù)的類型要相同賦值運(yùn)算賦值運(yùn)算符 =賦值表達(dá)式:用 = 將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子 變量 表達(dá)式例如:fahr = 100; celsius = 5 * (fahr - 32) / 9; 計(jì)算賦值運(yùn)算符右側(cè)表達(dá)式的值將賦值運(yùn)算符右側(cè)表達(dá)式的值賦給左側(cè)的變量的左邊必須是一個(gè)變量1.2.4 格式化
8、輸出函數(shù)printf數(shù)據(jù)輸出:格式化輸出函數(shù) printf #include printf(Hello World! n);printf(fahr = %d, celsius = %dn, fahr, celsius);printf(格式控制字符串, 輸出參數(shù)1, , 輸出參數(shù)n);用雙引號(hào)括起來(lái),表示輸出的格式要輸出的數(shù)據(jù)printf格式控制字符串printf(Hello World! n); printf(fahr = %d, celsius = %dn, fahr, celsius);printf(Hin, fahr);格式控制字符串:普通字符:原樣輸出格式控制說(shuō)明:按指定的格式輸出數(shù)據(jù)
9、,%與數(shù)據(jù)類型有關(guān)int型 :%dfloat double型:%fprintf(fahr = %d, celsius = %dn, fahr, celsius);輸出:fahr =100, celsius = 371.3 計(jì)算分段函數(shù) 1.3.1 程序解析1.3.2 關(guān)系運(yùn)算1.3.3 if-else語(yǔ)句1.3.4 格式化輸入函數(shù)scanf1.3.5 常用數(shù)學(xué)庫(kù)函數(shù)1.3.1 程序解析例1-4 分段計(jì)算水費(fèi)要解決的問(wèn)題:輸入計(jì)算分段函數(shù)輸出,并保存2位小數(shù) 求ex1.3.1 程序解析求分段函數(shù) #include int main(void) double x, y; printf(Enter
10、x (x=0):n); /* 輸入提示 */ scanf(%lf, &x); /* 調(diào)用scanf函數(shù)輸入數(shù)據(jù) */ if(x =0):9.5f(9.500000)=11.67Enter x (x=0):15f(12.000000)=20.00數(shù)據(jù)必須輸入嗎?Enter x (x=0):21.3f(21.300000)=41.751.3.2 關(guān)系運(yùn)算x = 15比較 x 和 15 的大小比較的結(jié)果:真 假當(dāng) x 取值9.5時(shí), x = 15的結(jié)果是:?當(dāng) x 取值21.3時(shí), x = 15的結(jié)果是:? 關(guān)系運(yùn)算 比較運(yùn)算,比較兩個(gè)操作數(shù)關(guān)系運(yùn)算符x y x y x = y x != y關(guān)系表達(dá)
11、式:用關(guān)系運(yùn)算符將2個(gè)表達(dá)式連接起來(lái)的式子。如:x = 1區(qū)分= 和=運(yùn)用關(guān)系表達(dá)式表示比較的數(shù)學(xué)式 C關(guān)系表達(dá)式x10 x10 x10 x = 10 x = 10 x != 10 x = 10用關(guān)系表達(dá)式描述條件判斷 x 是否為負(fù)數(shù)x 0判斷 x 是否不為零x != 01.3.3 if - else語(yǔ)句if (表達(dá)式) 語(yǔ)句1else 語(yǔ)句2if(x = 15) y = 4 * x / 3; else y = 1.5 * x - 10.5;語(yǔ)句1表達(dá)式語(yǔ)句2真假計(jì)算二分段函數(shù) if (表達(dá)式) 語(yǔ)句1else 語(yǔ)句2if(x != 0) y = 1/x;else y = 0;源程序#incl
12、ude int main(void) double x, y; printf(Enter x:n); scanf(%lf, &x); if(x != 0) y = 1/x; else y = 0; printf(f(%.2f) = %.1fn, x, y); return 0;#include /*例1-4 */int main(void) double x, y; printf(Enter x (x=0):n); scanf(%lf, &x); if(x = 15) y = 4 * x / 3; else y = 1.5 * x - 10.5; printf(f(%f) = %.2fn, x
13、, y); return 0;運(yùn)行結(jié)果#include int main(void) double x, y; printf(Enter x:n); scanf(%lf, &x); if(x != 0) y = 1/x; else y = 0; printf(f(%.2f) = %.1fn, x, y); return 0;input x:1.5f(1.50)=0.4input x:0f(0.00)=0.0軟件測(cè)試的根本思想 軟件測(cè)試精心設(shè)計(jì)一批測(cè)試用例 輸入數(shù)據(jù),預(yù)期輸出結(jié)果 ,然后分別用這些測(cè)試用例運(yùn)行程序,看程序的實(shí)際運(yùn)行結(jié)果與預(yù)期輸出結(jié)果是否一致。input x:1.5f(1.50)=
14、0.4input x:0f(0.00)=0.0if(x != 0) y = 1/x;else y = 0;if(x =0):9.5f(9.500000)=11.67Enter x (x=0):15f(12.000000)=20.00Enter x (x=0):21.3f(21.300000)=41.751.3.4 格式化輸入函數(shù)scanf數(shù)據(jù)輸入:格式化輸入函數(shù) scanf #include scanf(%lf, &x);scanf(格式控制字符串, 輸入?yún)?shù)1, , 輸入?yún)?shù)n);用雙引號(hào)括起來(lái),表示輸入的格式變量地址scanf格式控制字符串格式控制字符串:格式控制說(shuō)明: 按指定的格式輸入數(shù)
15、據(jù), %與數(shù)據(jù)類型有關(guān)int型 :%dfloat型:%fdouble型:%lf普通字符:原樣輸入例如:scanf(%lf, &x);輸入: 9.5scanf(x=%lf, &x);輸入: x=9.5盡量不要出現(xiàn)普通字符改進(jìn)例1-3的程序例1-3 求華氏溫度 100F 對(duì)應(yīng)的攝氏溫度。攝氏溫度 C=(5/9)(F-32) #include int main(void) int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf(fahr = %d, celsius = %dn, fahr, celsius); retu
16、rn 0;scanf(%d, &fahr);printf(“Enter fahr: n);Enter fahr:100fahr =100, celsius = 371.3.5 常用數(shù)學(xué)庫(kù)函數(shù)庫(kù)函數(shù)C語(yǔ)言處理系統(tǒng)提供事先編好的函數(shù),供用戶在編程時(shí)調(diào)用。scanf(), printf(), exp()在相應(yīng)的系統(tǒng)文件頭文件中定義一些必需的信息。#include命令用戶調(diào)用庫(kù)函數(shù)時(shí),將相應(yīng)的頭文件包含到源程序中。例如調(diào)用scanf, printf,需要 #include 調(diào)用sqrt,需要 #include 常用數(shù)學(xué)庫(kù)函數(shù)平方根函數(shù) sqrt(x) 絕對(duì)值函數(shù) fabs(x)fabs(-3.56)
17、的值為3.56冪函數(shù) pow(x, n) :xnpow(1.1, 2) 的值為1.21即1.12指數(shù)函數(shù) exp(x):exexp(1.3) 的值為e1.3以e為底的對(duì)數(shù)函數(shù) log(x):ln xlog(123.45) 的值為4.815836以10為底的對(duì)數(shù)函數(shù) log10(x):log10 xlog10(123.45) 的值為1.091491。 例1-5 計(jì)算存款的本息輸入存款金額 money、存期 year 和年利率 rate,根據(jù)公式計(jì)算存款到期時(shí)的本息合計(jì)sum稅前,輸出時(shí)保存2位小數(shù)。sum = money ( 1 + rate)yearsum = money * pow(1 +
18、rate), year)例1-5 程序# include # include int main(void) int money, year; double rate, sum; printf(“Enter money:); scanf(%d, &money); printf(“Enter year: ); scanf(%d, &year); printf(“Enter rate:); scanf(%lf, &rate); sum = money * pow(1 + rate), year); printf(sum = %.2f, sum); return 0;Enter money: 1000
19、Enter year: 3Enter rate: 0.025sum = 1076.89scanf(%d%d%lf, &money, &year, &rate);調(diào)用scanf函數(shù)輸入多個(gè)數(shù)據(jù)scanf(%d%d%lf, &money, &year, &rate); 輸入:1000 3 0.025scanf需要多個(gè)輸入?yún)?shù)和多個(gè)格式控制說(shuō)明輸入?yún)?shù)的類型、個(gè)數(shù)和位置要與格式控制說(shuō)明一一對(duì)應(yīng) ? scanf(%d%lf%d , &money, &year, &rate);程序運(yùn)行時(shí),輸入的多個(gè)數(shù)據(jù)之間必須有間隔。scanf(%d%lf%d , &money, &rate , &year);如何輸入
20、?輸入?yún)?shù)、格式控制說(shuō)明、輸入數(shù)據(jù)1.4 輸出華氏攝氏溫度轉(zhuǎn)換表1.4.1 程序解析1.4.2 for語(yǔ)句1.4.3 指定次數(shù)的循環(huán)程序設(shè)計(jì)1.4.1 程序解析例1-6輸入2個(gè)整數(shù)lower和 upper,輸出一張華氏攝氏溫度轉(zhuǎn)換表,華氏溫度的取值范圍是lower, upper,每次增加1F。 fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.71.4.1 程序解析-溫度轉(zhuǎn)換表#include int main(void) int fahr, lower, upper; double celsius; printf(Enter low
21、er:); scanf(%d, &lower); printf(Enter upper:); scanf(%d, &upper); printf(fahr celsiusn);/ 溫度重復(fù)轉(zhuǎn)換:華氏溫度從lower開(kāi)始,到upper結(jié)束,每次增加1F for (fahr = lower; fahr = upper; fahr +) celsius = (2.0 / 9.0) * (fahr - 32); printf(%d %6.1fn, fahr, celsius); return 0; fahr = fahr+1Enter lower: 30Enter upper: 35fahr cels
22、ius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7例1-8中for語(yǔ)句的流程for (fahr = lower; fahr = upper; fahr +) celsius = (2.0 / 9.0) * (fahr - 32); printf(%d %6.1fn, fahr, celsius); fahr = fahr+2輸出?Enter lower: 30Enter upper: 35fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語(yǔ)句實(shí)
23、現(xiàn)C語(yǔ)句的重復(fù)執(zhí)行1.4.2 for語(yǔ)句循環(huán)語(yǔ)句3個(gè)表達(dá)式、循環(huán)體語(yǔ)句!書(shū)寫(xiě)順序和執(zhí)行順序不同!表達(dá)式1只執(zhí)行一次循環(huán)(控制)變量:for語(yǔ)句中,通過(guò)改變或判斷某個(gè)變量的值來(lái)控制循環(huán)的執(zhí)行for (fahr = lower; fahr = upper; fahr +) celsius = (2.0 / 9.0) * (fahr - 31.0); printf(%d %6.1fn, fahr, celsius); for語(yǔ)句中的循環(huán)變量賦初值判斷其值改變其值for (fahr = lower; fahr = upper; fahr +) celsius = (2.0 / 9.0) * (fahr
24、 - 31.0); printf(%d %6.1fn, fahr, celsius); 表達(dá)式1:給循環(huán)變量賦初值,指定循環(huán)的起點(diǎn)。fahr = lower表達(dá)式2:給出循環(huán)的條件,決定循環(huán)的繼續(xù)或結(jié)束。fahr = upper表達(dá)式3:設(shè)置循環(huán)的步長(zhǎng),改變循環(huán)變量的值,從而可改變表達(dá)式2的真假性。fahr+語(yǔ)句:被反復(fù)執(zhí)行的語(yǔ)句,一條語(yǔ)句。for語(yǔ)句的說(shuō)明for (fahr = lower; fahr = upper; fahr +) celsius = (2.0 / 9.0) * (fahr - 31.0); printf(%d %6.1fn, fahr, celsius); for (f
25、ahr = lower ; fahr = upper; fahr = fahr + 1) celsius = (2.0 / 9.0) * (fahr - 31.0); printf(%d %6.1fn, fahr, celsius); 復(fù)合語(yǔ)句 和空語(yǔ)句 ;for (fahr = lower ; fahr = upper; fahr = fahr + 1); celsius = (2.0 / 9.0) * (fahr - 31.0); printf(%d %6.1fn, fahr, celsius); !不要在for語(yǔ)句中隨意加分號(hào)求 1+2+100抽取具有共性的算式:sum = sum +
26、i sum初值為0,該算式重復(fù)100次,i從1變到100設(shè)i為循環(huán)變量,那么:指定循環(huán)起點(diǎn)的表達(dá)式1:i = 1給出循環(huán)條件的表達(dá)式2:i = 100設(shè)置循環(huán)步長(zhǎng)的表達(dá)式3:i+循環(huán)體語(yǔ)句:sum = sum + i;for(i=1; i=100; i+)sum =sum+i;1.4.3 指定次數(shù)的循環(huán)程序設(shè)計(jì)/* 計(jì)算1 + 2 + 3 + + 100 */#include int main(void) int i, sum; sum = 0; /* 置累加和sum的初值為0 */ for ( i = 1; i = 100; i+ ) /* 循環(huán)重復(fù)100次 */ sum = sum + i
27、; /* 反復(fù)累加 */ printf( “sum = %dn, sum); /* 輸出累加和 */ return 0;源程序求 1+2+100for(i=1; i=100; i+) sum=0; sum=sum+i;sum=5050#include int main(void) int i, sum; sum = 0; for ( i = 1; i = 100; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;求 1+1/2+1/3+ 1/100for(i=1; i=100; i+) sum=sum+1.0/i;int i;dou
28、ble sum;printf( “sum = %fn, sum);一般包含四個(gè)局部:初始化:指定循環(huán)起點(diǎn)給循環(huán)變量賦初值,如i = 1;進(jìn)入循環(huán)之前,設(shè)置相關(guān)變量的初值,如sum = 0。條件控制:只要i 100,循環(huán)結(jié)束。指定次數(shù)的循環(huán)程序設(shè)計(jì)輸入一個(gè)正整數(shù)n,求前n項(xiàng)和,即循環(huán)n次#include int main(void) int i, sum; sum = 0; for ( i = 1; i = 100; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;例1-7 求 1+2+3+n for(i=1; i=n; i+) su
29、m=sum+i;printf(“Enter n:); scanf(%d, &n); Enter n: 100Sum = 5050#include int main(void) int i, sum; printf(“Enter n: ); scanf(%d, &n); sum = 0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;求1+1/2+1/3+ 1/n #include int main(void) int i; double sum; printf(“Enter n: ); sc
30、anf(%d, &n); sum = 0; for ( i = 1; i = n; i+ ) sum = sum + 1.0/i; printf( “sum = %fn, sum); return 0;求前n項(xiàng)和,即循環(huán)n次,每次累加1項(xiàng)。for (i = 1; i = n ; i+) sum = sum + item (第i項(xiàng))item = 1.0 / (2 * i - 1)求 1+1/3+1/5+ 的前n項(xiàng)和#include int main(void) int i, n; double item, sum; printf(“Enter n: ); scanf (%d, &n);sum =
31、 0 ; for ( i = 1; i = n; i+ ) item = 1.0 / (2 * i - 1); /* 計(jì)算第i項(xiàng)的值 */ sum = sum + item ; /* 累加第i項(xiàng)的值 */ printf ( sum = %fn, sum); return 0;源程序求 1+1/3+1/5+ 求前n項(xiàng)和,即循環(huán)n次,每次累加1項(xiàng)。for (i = 1; i = n ; i+) sum = sum + item (第i項(xiàng))item = flag * 1.0 / denominator denominator = denominator + 2flag = -flag例1-8 求 1
32、-1/3+1/2- 的前n項(xiàng)和item = flag*1.0/(2 * i - 1)#include int main(void) int denominator, flag, i, n; double item, sum; printf(“Enter n: ); scanf (%d, &n);flag=1; denominator =1;sum = 0 ; for ( i = 1; i = n; i+ ) item = flag * 1.0/ denominator; /* 計(jì)算第i項(xiàng)的值 */ sum = sum + item ; /* 累加第i項(xiàng)的值 */ flag = -flag; /
33、* 準(zhǔn)備下一次循環(huán) */ denominator = denominator +2; printf ( sum = %fn, sum); return 0;例1-8 源程序n! = 1*2*nfor (i = 1; i = n ; i+) product = product * item (第i項(xiàng))item=i例1-9 求n!product = ?#include int main(void) int i, n; double product; printf(input n: n); scanf (%d, &n) ; product=1; /* 置階乘product的初值為1 */ for (
34、 i = 1; i = n; i+ ) /* 循環(huán)重復(fù)n次,計(jì)算n! */ product = product * i ; printf ( product = %.0fn, product ); return 0;例1-9 源程序輸入實(shí)數(shù)x和正整數(shù)n,計(jì)算xn = x * x * * xfor (i = 1; i = n ; i+) power = power * item (第i項(xiàng))item=?求 xn #include int main(void) int i, n; double x, power ; printf(“Enter x, n: n); scanf (%lf%d, &x,
35、&n) ; power = 1; /* 置power的初值為1 */ for ( i = 1; i = n; i+ ) /* 循環(huán)重復(fù)n次,計(jì)算x的n次冪 */ power = power * x; printf( %0.fn, power);源程序求 xn 1.5 生成乘方表和階乘表1.2.1 程序解析1.2.2 結(jié)構(gòu)化程序設(shè)計(jì)思想1.2.1 程序解析例1-101輸入一個(gè)正整數(shù)n,生成一張2的乘方表,輸出20到2n的值,可以調(diào)用冪函數(shù)計(jì)算2的乘方。for (i = 0; i = n ; i+) power = pow(2, i); /*調(diào)用冪函數(shù)pow(2,i)計(jì)算2的i次方*/ 輸出pow
36、er的值;源程序生成乘方表#include #include int main(void) int i, n; double power; printf(Enter n:); scanf(%d, &n); for (i = 0; i = n ; i+) power = pow(2, i); /* 調(diào)用冪函數(shù)pow(2,i)計(jì)算2的i次方 */ printf(pow(2,%d)= %.0fn, i, power); return 0;Enter n: 4pow(2,0)= 1pow(2,1)= 2pow(2,2)= 4pow(2,3)= 8pow(2,4)= 16 例1-102生成階乘表輸入一個(gè)
37、正整數(shù)n,生成一張階乘表,輸出0!到n!的值。要求定義和調(diào)用函數(shù)fact(n)計(jì)算n!,函數(shù)類型是double。 for (i = 0; i = n ; i+) power = pow(2, i); /*調(diào)用冪函數(shù)pow(2,i)計(jì)算2的i次方*/ 輸出power的值;for (i = 0; i = n ; i+) product = fact(i); /* 調(diào)用自定義函數(shù)fact(i)計(jì)算i! */ 輸出product的值;源程序生成階乘表#include double fact(int n); /* 自定義函數(shù)的聲明 */int main(void) int i, n; double re
38、sult; printf(Enter n:); scanf(%d, &n); for (i = 0; i = n ; i+) result = fact(i); /* 調(diào)用自定義函數(shù)fact(i)計(jì)算i! */ printf(%d!=%.0fn, i, result); return 0;Enter n: 30!=11!=12!=23!=6double fact(int n) /* 函數(shù)首部 */ int i; double product; product = 1; for (i = 1; i = n; i+) product = product * i; return product; /
39、* 將結(jié)果回送主函數(shù) */1.2.2 結(jié)構(gòu)化程序設(shè)計(jì)思想結(jié)構(gòu)化程序設(shè)計(jì)(Structured Programming)程序設(shè)計(jì)技術(shù)C語(yǔ)言是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言強(qiáng)調(diào)程序設(shè)計(jì)的風(fēng)格和程序結(jié)構(gòu)的標(biāo)準(zhǔn)化,提倡清晰的結(jié)構(gòu),其根本思路是將一個(gè)復(fù)雜問(wèn)題的求解過(guò)程劃分為假設(shè)干階段,每個(gè)階段要處理的問(wèn)題都容易被理解和處理。按自頂向下的方法對(duì)問(wèn)題進(jìn)行分析、模塊化設(shè)計(jì)和結(jié)構(gòu)化編碼等3個(gè)步驟。自頂向下的分析方法把大的復(fù)雜的問(wèn)題分解成小問(wèn)題后再解決面對(duì)一個(gè)復(fù)雜的問(wèn)題,首先進(jìn)行上層整體的分析,按組織或功能將問(wèn)題分解成子問(wèn)題,如果子問(wèn)題仍然十分復(fù)雜,再做進(jìn)一步分解,直到處理對(duì)象相對(duì)簡(jiǎn)單,容易處理為止。當(dāng)所有的子問(wèn)題都得到了解
40、決,整個(gè)問(wèn)題也就解決了。每一次分解都是對(duì)上一層的問(wèn)題進(jìn)行細(xì)化和逐步求精,最終形成一種類似樹(shù)形的層次結(jié)構(gòu),來(lái)描述分析的結(jié)果。學(xué)生成績(jī)統(tǒng)計(jì)程序成績(jī)輸入數(shù)據(jù)計(jì)算數(shù)據(jù)查找輸出成績(jī)計(jì)算學(xué)生平均分計(jì)算課程平均分學(xué)生成績(jī)統(tǒng)計(jì)程序的層次結(jié)構(gòu)圖 模塊化設(shè)計(jì)將模塊組織成良好的層次系統(tǒng),頂層模塊調(diào)用其下層模塊以實(shí)現(xiàn)程序的完整功能,每個(gè)下層模塊再調(diào)用更下層的模塊,從而完成程序的一個(gè)子功能,最下層的模塊完成最具體的功能。遵循模塊獨(dú)立性的原那么,即模塊之間的聯(lián)系應(yīng)盡量簡(jiǎn)單。一個(gè)模塊只完成一個(gè)指定的功能。模塊之間只通過(guò)參數(shù)進(jìn)行調(diào)用。一個(gè)模塊只有一個(gè)入口和一個(gè)出口。模塊內(nèi)慎用全局變量。結(jié)構(gòu)化編碼 選用順序、選擇和循環(huán)三種控制
41、結(jié)構(gòu),使程序具有良好的風(fēng)格。對(duì)變量、函數(shù)、常量等命名時(shí),要見(jiàn)名知意,有助于對(duì)變量含義或函數(shù)功能的理解。在程序中增加必要的注釋,增加程序的可讀性。程序要清晰易懂,語(yǔ)句構(gòu)造要簡(jiǎn)單直接,一行寫(xiě)一條語(yǔ)句,采用縮進(jìn)格式。程序有良好的交互性,輸入有提示,輸出有說(shuō)明,并盡量采用統(tǒng)一整齊的格式。Chap 2 函數(shù) 2.1 計(jì)算圓柱體積2.2 使用函數(shù)編寫(xiě)程序2.3 變量與函數(shù)本章要點(diǎn)怎樣定義函數(shù)?如何調(diào)用函數(shù)?如何聲明函數(shù)?什么是函數(shù)的參數(shù)?在函數(shù)調(diào)用時(shí),參數(shù)是如何傳遞的?在使用函數(shù)的過(guò)程中,要注意哪些問(wèn)題?怎樣確定函數(shù)的參數(shù)?如何使用局部變量和全局變量?什么是靜態(tài)變量?2.1 計(jì)算圓柱體積2.1.1 程序解
42、析2.1.2 函數(shù)的定義2.1.3 函數(shù)的調(diào)用2.1.1 程序解析計(jì)算圓柱體積 例2-1 輸入圓柱體的高和半徑,求圓柱體積,volume=*r2*h。要求定義和調(diào)用函數(shù)cylinder (r, h )計(jì)算圓柱體的體積。 例2-1源程序/* 計(jì)算圓柱體積 */#include int main( void ) double height, radius, volume;double cylinder (double r, double h); /* 函數(shù)聲明*/printf (Enter radius and height: );scanf (%lf%lf, &radius, &height);
43、 /* 調(diào)用函數(shù),返回值賦給volume */volume = cylinder (radius, height );printf (Volume = %.3fn, volume);return 0;例2-1源程序/* 定義求圓柱體積的函數(shù) */double cylinder (double r, double h)double result;result =3.1415926 * r * r * h; /* 計(jì)算體積 */return result; /* 返回結(jié)果 */Enter radius and height: 3.0 10Volume = 281.7432.1.2 函數(shù)的定義 函數(shù)
44、是指完成一個(gè)特定工作的獨(dú)立程序模塊。庫(kù)函數(shù):由C語(yǔ)言系統(tǒng)提供定義如scanf、printf等函數(shù)自定義函數(shù):需要用戶自己定義如計(jì)算圓柱體體積函數(shù)cylindermain()也是一個(gè)函數(shù),C程序由一個(gè)main()或多個(gè)函數(shù)構(gòu)成。程序中一旦調(diào)用了某個(gè)函數(shù),該函數(shù)就會(huì)完成一些特定的工作,然后返回到調(diào)用它的地方。函數(shù)經(jīng)過(guò)運(yùn)算,得到一個(gè)明確的運(yùn)算結(jié)果,并需要回送該結(jié)果。例如,函數(shù)cylinder()返回圓柱的體積。函數(shù)完成一系列操作步驟,不需要回送任何運(yùn)算結(jié)果。1返回運(yùn)算結(jié)果的函數(shù)定義函數(shù)類型 函數(shù)名形參表/* 函數(shù)首部 */ /* 函數(shù)體 */ 函數(shù)實(shí)現(xiàn)過(guò)程 return 表達(dá)式;把函數(shù)運(yùn)算的結(jié)果回送
45、給主函數(shù)只能返回一個(gè)值函數(shù)返回值的類型沒(méi)有分號(hào)double cylinder (double r, double h) double result; result = 3.1415926 * r * r * h; return result;形參類型1 參數(shù)1 ,類型2 參數(shù)2 ,類型n 參數(shù)n參數(shù)之間用逗號(hào)分隔,每個(gè)參數(shù)前面的類型都必須分別寫(xiě)明函數(shù)類型 函數(shù)名形參表 函數(shù)實(shí)現(xiàn)過(guò)程 return 表達(dá)式;不能寫(xiě)成 double r, hdouble cylinder (double r, double h) double result; result =3.1415926 * r * r *
46、h; return result;double cylinder (double r, double h) /* 函數(shù)首部 */* 函數(shù)體,寫(xiě)在一對(duì)大括號(hào)內(nèi) */ double result;result =3.1415926 * r * r * h; /* 計(jì)算圓柱體積 */return result; /* 返回運(yùn)算結(jié)果*/分析函數(shù)的定義函數(shù)類型函數(shù)名形參表與函數(shù)類型一致1.不返回運(yùn)算結(jié)果的函數(shù)定義void 函數(shù)名參數(shù)表 /* 函數(shù)首部 */ /* 函數(shù)體 */ 函數(shù)實(shí)現(xiàn)過(guò)程 return; /* 可以省略return */這類函數(shù)通常用于屏幕輸出等表示不返回結(jié)果不能省略否那么函數(shù)類型被默
47、認(rèn)定義為int例2-2 輸出5之內(nèi)的數(shù)字金字塔。/* 輸出數(shù)字金字塔 */#include int main (void) void pyramid (int n);/* 函數(shù)聲明 */pyramid(5);/* 調(diào)用函數(shù),輸出數(shù)字金字塔 */return 0;void pyramid (int n) /* 函數(shù)定義 */int i, j;for (i = 1; i = n; i+)/* 需要輸出的行數(shù) */ for (j = 1; j = n-i; j+) /* 輸出每行左邊的空格 */printf( ); for (j = 1; j = i; j+) /* 輸出每行的數(shù)字 */ print
48、f( %d , i); /* 每個(gè)數(shù)字的前后各有一個(gè)空格 */ putchar (n); 12 2 3 3 3 4 4 4 45 5 5 5 5 2.1.3 函數(shù)的調(diào)用定義一個(gè)函數(shù)后,就可以在程序中調(diào)用這個(gè)函數(shù)。調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí),在程序的最前面用#include命令包含相應(yīng)的頭文件。調(diào)用自定義函數(shù)時(shí),程序中必須有與調(diào)用函數(shù)相對(duì)應(yīng)的函數(shù)定義。1函數(shù)調(diào)用的形式和過(guò)程使用返回值:volume = cylinder (radius, height );printf(“%f n , cylinder (radius, height );完成操作:pyramid(5);常用于void類型函數(shù)的調(diào)用常用于返
49、回結(jié)果的函數(shù)的調(diào)用常量、變量、表達(dá)式函數(shù)名實(shí)參表函數(shù)調(diào)用的過(guò)程計(jì)算機(jī)在執(zhí)行程序時(shí),從主函數(shù)main開(kāi)始執(zhí)行,如果遇到某個(gè)函數(shù)調(diào)用,主函數(shù)被暫停執(zhí)行,轉(zhuǎn)而執(zhí)行相應(yīng)的函數(shù),該函數(shù)執(zhí)行完后,將返回主函數(shù),然后再?gòu)脑葧和5奈恢美^續(xù)執(zhí)行。函數(shù)遇return或最后的大括號(hào),返回主函數(shù)分析函數(shù)調(diào)用的過(guò)程#include int main( void ) double height, radius, volume;double cylinder (double r, double h); printf (Enter radius and height: );scanf (%lf%lf, &radius, &
50、height);volume = cylinder (radius, height );printf (Volume = %.3fn, volume);return 0;double cylinder (double r, double h)double result;result =3.1415926 * r * r * h; return result; 調(diào)用函數(shù)實(shí)參形參執(zhí)行函數(shù)中的語(yǔ)句返回調(diào)用它的地方1.參數(shù)傳遞函數(shù)定義時(shí)的參數(shù)被稱為形式參數(shù)簡(jiǎn)稱形參double cylinder (double r, double h);函數(shù)調(diào)用時(shí)的參數(shù)被稱為實(shí)際參數(shù)簡(jiǎn)稱實(shí)參volume = cylin
51、der (radius, height);實(shí)參形參在參數(shù)傳遞過(guò)程中,實(shí)參把值復(fù)制給形參。形參和實(shí)參一一對(duì)應(yīng):數(shù)量一致,類型一致,順序一致形參:變量,用于接受實(shí)參傳遞過(guò)來(lái)的值實(shí)參:常量、變量或表達(dá)式單向傳遞3函數(shù)結(jié)果返回函數(shù)返回的兩種情況完成確定的運(yùn)算,有一個(gè)運(yùn)算結(jié)果返回給主調(diào)函數(shù)。完成指定工作,沒(méi)有確定的運(yùn)算結(jié)果需返回給主調(diào)函數(shù)函數(shù)類型void。函數(shù)結(jié)果返回的形式:return 表達(dá)式;return (表達(dá)式);【例2-3】定義判斷奇偶數(shù)的函數(shù)even (n)定義一個(gè)判斷奇偶數(shù)的函數(shù)even (n),當(dāng)n為偶數(shù)時(shí)返回1,否那么返回0。/* 判斷奇偶數(shù)的函數(shù) */int even (int n)
52、/* 函數(shù)首部 */if(n%2 = 0) /* 判別奇偶數(shù) */return 1;/* 偶數(shù)返回1 */elsereturn 0;/* 奇數(shù)返回0 */如何調(diào)用該函數(shù)?4函數(shù)原型聲明函數(shù)類型 函數(shù)名(參數(shù)表);double cylinder (double r, double h);void pyramid (int n);函數(shù)必須先定義后調(diào)用,將主調(diào)函數(shù)放在被調(diào)函數(shù)的后面,就像變量先定義后使用一樣。如果自定義函數(shù)在主調(diào)函數(shù)的后面,就需要在函數(shù)調(diào)用前,加上函數(shù)原型聲明。函數(shù)聲明:說(shuō)明函數(shù)的類型和參數(shù)的情況,以保證程序編譯時(shí)能判斷對(duì)該函數(shù)的調(diào)用是否正確。只寫(xiě)函數(shù)定義中的第1行函數(shù)首部,并以分號(hào)
53、結(jié)束。2.2 使用函數(shù)編寫(xiě)程序例2-4 輸入精度e,使用格里高利公式求的近似值,精確到最后一項(xiàng)的絕對(duì)值小于e。要求定義和調(diào)用函數(shù) funpi(e) 求的近似值。例2-4 源程序/* 用格里高利公式計(jì)算的近似值,精度為e */#include #include int main (void) double e, pi; double funpi (double e); printf (Enter e:); scanf (%lf, &e); pi = funpi (e); printf (pi = %fn, pi);return 0;double funpi (double e) int denominator, flag; double item, sum; flag = 1; denominator = 1; item = 1.0; sum = 0; while (fabs (item) = e) item = flag * 1.0 / denominator; sum = sum + item; flag = -flag; denomin
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技沙發(fā)布料的創(chuàng)新設(shè)計(jì)與制作工藝
- 老年人居住的小戶型公寓設(shè)計(jì)要點(diǎn)
- DB35T 2240-2024公共數(shù)據(jù)清洗技術(shù)要求
- 二手房轉(zhuǎn)讓合同樣本大全
- 中外雙向投資合同
- 專業(yè)派遣人員勞務(wù)合同范本
- 上海市設(shè)備采購(gòu)合同模版
- 不動(dòng)產(chǎn)附條件贈(zèng)與合同協(xié)議書(shū)
- 個(gè)人借款延期還款合同模板
- 個(gè)人房產(chǎn)互換合同
- 2023高考語(yǔ)文全國(guó)甲卷詩(shī)歌閱讀題晁補(bǔ)之《臨江仙 身外閑愁空滿眼》講評(píng)課件
- 數(shù)字營(yíng)銷廣告技術(shù)行業(yè)rta巨量引擎實(shí)時(shí)接口
- 化工企業(yè)靜電安全檢查規(guī)程
- 線性系統(tǒng)理論鄭大鐘第二版
- 寧騷公共政策學(xué)完整版筆記
- 項(xiàng)目負(fù)責(zé)人考試題庫(kù)含答案
- GB/T 7251.5-2017低壓成套開(kāi)關(guān)設(shè)備和控制設(shè)備第5部分:公用電網(wǎng)電力配電成套設(shè)備
- 2023年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招(數(shù)學(xué))試題庫(kù)含答案解析
- 勇者斗惡龍9(DQ9)全任務(wù)攻略
- 經(jīng)顱磁刺激的基礎(chǔ)知識(shí)及臨床應(yīng)用參考教學(xué)課件
- 小學(xué)語(yǔ)文人教四年級(jí)上冊(cè)第四單元群文閱讀“神話故事之人物形象”P(pán)PT
評(píng)論
0/150
提交評(píng)論