版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Chap 2 用C語言編寫程序,2.1 在屏幕上顯示 Hello World!2.2 求華氏溫度 100°F 對應(yīng)的攝氏溫度2.3 計算分段函數(shù)2.4 輸出華氏—攝氏溫度轉(zhuǎn)換表2.5 生成乘方表與階乘表,1,2.1 在屏幕上顯示Hello World!,例2-1 在屏幕上顯示一個短句:Hello World!,2,2.1 在屏幕上顯示Hello World!,/* 顯示 Hello World! *
2、/# include int main(void){ printf(“Hello World! \n”); return 0;},1.任何程序都有主函數(shù)2.程序由若干語句組成3.語句由;結(jié)束,3,2.1 在屏幕上顯示一些信息,例2-2 在屏幕上顯示:Programming is fun!And Programming in C is even more fun!,4,#
3、include int main(void){ printf("Programming is fun! \n"); printf("And Programming in C is even more fun! \n"); return 0;},注意 return 語句攜帶執(zhí)行結(jié)果提前結(jié)束任務(wù),2.2 求華氏溫度 100°F 對應(yīng)的攝氏溫度,攝氏溫度 C
4、=(5/9)(F-32),5,2.2.1 程序解析: C=(5/9)(F-32),#include int main(void){ int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf("fahr = %d, celsius = %d\n", fahr, cel
5、sius); return 0;},,6,數(shù)據(jù)類型常量:5 和 9是整型常量(整數(shù))變量:在定義時指定,數(shù)據(jù)常量:在程序運行過程中, 其值不能改變 變量:在程序運行過程中 其值可以改變,變量的定義,變量定義的一般形式:類型名 變量名表;例如:int celsius, fahr; 定義整型變量float x; 定義單精度浮
6、點型變量double area, length; 定義雙精度浮點型變量double型數(shù)據(jù)比float精度高,取值范圍大,7,變量名字要合適,變量的定義,定義變量時要指定變量名和數(shù)據(jù)類型類型名 變量名表;int celsius, fahr; float x;double area, length;變量名代表內(nèi)存中的一個存儲單元存放該變量的值該存儲
7、單元的大小由變量的數(shù)據(jù)類型決定,8,變量的定義與使用,#include int main(void){ int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf("fahr = %d, celsius = %d\n&
8、quot;, fahr, celsius); return 0;},一個變量名只能定義一次變量一般都定義在函數(shù)的開始,應(yīng)該先賦值,后引用,9,變量必須先定義,后使用。,2.2.3 算術(shù)運算和賦值運算,fahr = 100; celsius = 5 * (fahr - 32) / 9; 1、算術(shù)運算雙目算術(shù)運算符:+ - * / %算術(shù)
9、表達式:用算術(shù)運算符將運算對象連接起來的符合C語言語法規(guī)則的式子 數(shù)學(xué)式:(5/9)(F-32) C表達式:5 * (fahr - 32) / 9 數(shù)學(xué)式:s(s-a)(s-b)(s-c) C表達式:s*(s-a)*(s-b)*(s-c),10,算術(shù)運算,注意/ 整數(shù)除整數(shù),得整數(shù)如:1/2 = 0,9/4 = 2 ?5 * (fahr - 32) / 9 和 5 / 9 * (fahr - 32
10、) 等價嗎% 針對整型數(shù)據(jù)如: 5%6=5,9%4=1,100%4=0雙目運算符兩側(cè)操作數(shù)的類型要相同,11,賦值運算,賦值運算符 =賦值表達式:用 = 將一個變量和一個表達式連接起來的式子 變量 = 表達式例如:fahr = 100; celsius = 5 * (fahr - 32) / 9; 計算賦值運算符右側(cè)表達式的值將賦值運算符右側(cè)表達式的值賦給左側(cè)的變量,=的左邊必須是一個變量,12,2.2.4 格式
11、化輸出函數(shù)printf,數(shù)據(jù)輸出:格式化輸出函數(shù) printf #include printf("Hello World! \n");printf("fahr = %d, celsius = %d\n", fahr, celsius);printf(格式控制字符串, 輸出參數(shù)1, … , 輸出參數(shù)n);,用雙引號括起來,表示輸出的格式,,要輸出的數(shù)據(jù),,13,printf-格式控制字符串
12、,printf("Hello World! \n"); printf("fahr = %d, celsius = %d\n", fahr, celsius);printf("Hi\n", fahr);格式控制字符串:普通字符:原樣輸出格式控制說明:按指定的格式輸出數(shù)據(jù),%…與數(shù)據(jù)類型有關(guān)int型 :%dfloat double型:%fprintf("
13、fahr = %d, celsius = %d\n", fahr, celsius);,輸出:fahr =100, celsius = 37,14,2.3 計算分段函數(shù),2.3.1 程序解析2.3.2 關(guān)系運算2.3.3 if-else語句2.3.4 格式化輸入函數(shù)scanf2.3.5 常用數(shù)學(xué)庫函數(shù),15,2.3.1 程序解析,例2-4 分段計算水費要解決的問題:輸入計算分段函數(shù)輸出,并保
14、留2位小數(shù) 求ex,,16,2.3.1 程序解析-求分段函數(shù),#include int main(void){ double x, y; printf("Enter x (x>=0):\n"); /* 輸入提示 */ scanf("%lf", &x); /* 調(diào)用scanf函數(shù)輸入數(shù)據(jù) */ if(x &
15、lt;= 15) /* if – else語句 */ y = 4 * x / 3; else y = 2.5 * x - 10.5; printf("y = f(%f) = %.2f\n", x, y); return 0;},Enter x (x>=0):9
16、.5f(9.500000)=12.67,Enter x (x>=0):15f(15.000000)=20.00,Enter x (x>=0):21.3f(21.300000)=42.75,17,2.3.2 關(guān)系運算,x y x >= y x != y關(guān)系表達式:用關(guān)系運算符將2個表達式連接起來的式子。如:x <= 1,區(qū)分= 和==,18,運用關(guān)系表達式,表示比較的數(shù)學(xué)式
17、 C關(guān)系表達式 x≤10 x=10 x≠10 x!=10 x =10 x==10,用關(guān)系表達式描述條件判斷 x 是否為負數(shù) x < 0判斷 x 是否不為零 x != 0,19,2.3.3 if
18、- else語句,if (表達式) 語句1else 語句2,if(x <= 15) y = 4 * x / 3; else y = 2.5 * x - 10.5;,20,計算二分段函數(shù),if (表達式) 語句1else 語句2,if(x != 0) y = 1/x;else y = 0;,,,21,源程序,#include int m
19、ain(void){ double x, y; printf("Enter x:\n"); scanf("%lf", &x); if(x != 0) y = 1/x; else y = 0; printf("f(%.2f) = %.1f\n", x, y); return
20、0;},22,input x:2.5f(2.50)=0.4,input x:0f(0.00)=0.0,,軟件測試的基本思想,軟件測試精心設(shè)計一批測試用例 [輸入數(shù)據(jù),預(yù)期輸出結(jié)果] ,然后分別用這些測試用例運行程序,看程序的實際運行結(jié)果與預(yù)期輸出結(jié)果是否一致。,input x:2.5f(2.50)=0.4,input x:0f(0.00)=0.0,if(x != 0) y = 1/x;else
21、 y = 0;,if(x <= 15) y = 4 * x / 3;else y = 2.5 * x - 10.5;,Enter x (x>=0):9.5f(9.500000)=12.67,Enter x (x>=0):15f(15.000000)=20.00,Enter x (x>=0):21.3f(21.300000)=42.75,23,2.3.4 格式化輸入函數(shù)s
22、canf,數(shù)據(jù)輸入:格式化輸入函數(shù) scanf #include scanf("%lf", &x);scanf(格式控制字符串, 輸入?yún)?shù)1, … , 輸入?yún)?shù)n);,用雙引號括起來,表示輸入的格式,,變量地址,,24,scanf-格式控制字符串,格式控制字符串:格式控制說明: 按指定的格式輸入數(shù)據(jù), %…與數(shù)據(jù)類型有關(guān)int型 :%dfloat型:%fdouble型:%lf普通字符:原
23、樣輸入例如:scanf("%lf", &x);,輸入: 9.5,scanf("x=%lf", &x);,輸入: x=9.5,盡量不要出現(xiàn)普通字符,25,2.3.5 常用數(shù)學(xué)庫函數(shù),庫函數(shù)C語言處理系統(tǒng)提供事先編好的函數(shù),供用戶在編程時調(diào)用。scanf(), printf(), exp()在相應(yīng)的系統(tǒng)文件(頭文件)中定義一些必需的信息。#include命令用戶調(diào)用庫函數(shù)
24、時,將相應(yīng)的頭文件包含到源程序中。例如調(diào)用scanf, printf,需要 #include 調(diào)用sqrt,需要 #include ,26,常用數(shù)學(xué)庫函數(shù),平方根函數(shù) sqrt(x) 絕對值函數(shù) fabs(x)fabs(-3.56) 的值為3.56冪函數(shù) pow(x, n) :xnpow(1.1, 2) 的值為1.21(即1.12)指數(shù)函數(shù) exp(x):exexp(2.3) 的值為e2.3以e為底的對數(shù)函數(shù) log
25、(x):ln xlog(123.45) 的值為4.815836以10為底的對數(shù)函數(shù) log10(x):log10xlog10(123.45) 的值為2.091491。,27,例2-5 計算存款的本息,輸入存款金額 money、存期 year 和年利率 rate,根據(jù)公式計算存款到期時的本息合計sum(稅前),輸出時保留2位小數(shù)。sum = money ( 1 + rate)year,sum = money * pow((1
26、+ rate), year),28,例2-5 程序,# include # include int main(void){ int money, year; double rate, sum; printf(“Enter money:"); scanf("%d", &money); printf(“Enter year: ");
27、 scanf("%d", &year); printf(“Enter rate:"); scanf("%lf", &rate); sum = money * pow((1 + rate), year); printf("sum = %.2f", sum); return 0;},Enter money:
28、 1000Enter year: 3Enter rate: 0.025sum = 1076.89,29,調(diào)用scanf函數(shù)輸入多個數(shù)據(jù),scanf("%d%d%lf", &money, &year, &rate); 輸入:1000 3 0.025scanf需要多個輸入?yún)?shù)和多個格式控制說明輸入?yún)?shù)的類型、個數(shù)和位置要與格式控制說明一一對應(yīng) ? scanf("%
29、d%lf%d ", &money, &year, &rate);程序運行時,輸入的多個數(shù)據(jù)之間必須有間隔。,輸入?yún)?shù)、格式控制說明、輸入數(shù)據(jù),30,2.4 輸出華氏-攝氏溫度轉(zhuǎn)換表,2.4.1 程序解析2.4.2 for語句2.4.3 指定次數(shù)的循環(huán)程序設(shè)計,31,2.4.1 程序解析,例2-6輸入2個整數(shù)lower和 upper,輸出一張華氏-攝氏溫度轉(zhuǎn)換表,華氏溫度的取值范圍是[lowe
30、r, upper],每次增加1°F。 fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7,32,2.4.1 程序解析-溫度轉(zhuǎn)換表,教材第28頁源程序for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.
31、0 / 9.0) * (fahr - 32); printf("%d %6.1f\n", fahr, celsius); },Enter lower: 30Enter upper: 35fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7,33,for (
32、fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32); printf("%d %6.1f\n", fahr, celsius); },34,for(表達式1;表達式2;表達式3) 循環(huán)體語句實現(xiàn)C語句的重復(fù)執(zhí)行,2.4.2 for語句-循環(huán)語句,3個表達
33、式、循環(huán)體語句!書寫順序和執(zhí)行順序不同!表達式1只執(zhí)行一次,35,for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); },表達式1:給循環(huán)變量賦初值,指定循環(huán)的起點。fahr = lower
34、 初始化表達式2:給出循環(huán)的條件,決定循環(huán)的繼續(xù)或結(jié)束。fahr <= upper 條件判斷表達式3:設(shè)置循環(huán)的步長,改變循環(huán)變量的值,從而可改變表達式2的真假性。fahr++ 控制改變語句:被反復(fù)執(zhí)行的語句,一條語句。 主要任務(wù),for語句的說明,36,求 1+2+……+100抽取具有共性的算式:sum = sum + i sum
35、初值為0,該算式重復(fù)100次,i從1變到100設(shè)i為循環(huán)變量,則:指定循環(huán)起點的表達式1:i = 1給出循環(huán)條件的表達式2:i <= 100設(shè)置循環(huán)步長的表達式3:i++循環(huán)體語句:sum = sum + i;for(i=1; i<=100; i++)sum =sum+i;,2.4.3 指定次數(shù)的循環(huán)程序設(shè)計,37,/* 計算1 + 2 + 3 + …… + 100 */#include int m
36、ain(void){ int i, sum; sum = 0; /* 置累加和sum的初值為0 */ for ( i = 1; i <= 100; i++ ) /* 循環(huán)重復(fù)100次 */ sum = sum + i; /* 反復(fù)累加 */ printf(
37、 “sum = %d\n”, sum); /* 輸出累加和 */ return 0;},源程序-求 1+2+……+100,38,,一般包含四個部分:初始化:指定循環(huán)起點給循環(huán)變量賦初值,如i = 1;進入循環(huán)之前,設(shè)置相關(guān)變量的初值,如sum = 0。條件控制:只要i 100,循環(huán)結(jié)束。,指定次數(shù)的循環(huán)程序設(shè)計,39,#include int main(void){ int i, sum;
38、 printf(“Enter n: "); scanf("%d", &n); sum = 0; for ( i = 1; i <= n; i++ ) sum = sum + i; printf( “sum = %d\n”, sum); return 0;},例2-7 求 1+2+3+……+n,4
39、0,,sum = 0 ; for ( i = 1; i <= n; i++ ) { item = 1.0 / (2 * i - 1); /* 計算第i項的值 */ sum = sum + item ; /* 累加第i項的值 */ },求前n項之和: 1+1/3+1/5+…,41,,double item, sum;,例2-8 求 1-1/3+1/5-… 的前n項和,42,sum =
40、0 ;flag = 1; for ( i = 1; i <= n; i++ ) { item = 1.0 / (2 * i - 1); /* 計算第i項的值 */ sum = sum + flag* item ; /* 累加第i項的值 */ flag = - flag; /* 改變符號 */ },,int i, pr
41、oduct;product = 1;for (i = 1; i <= n ; i++) product = product * i;,例2-9 求n! = 1*2*…*n,43,#include int main(void){ int i, n; double product; printf("input n: \n"); scanf ("%
42、d", &n) ; product=1; /* 置階乘product的初值為1 */ for ( i = 1; i <= n; i++ ) /* 循環(huán)重復(fù)n次,計算n! */ product = product * i ; printf ( "product = %.0f\n", product ); return 0
43、;},例2-9 源程序,44,#include int main(void){ int i, n; double x, power ; printf(“Enter x, n: \n"); scanf ("%lf%d", &x, &n) ; power = 1; /* 置power的初值為1 */ fo
44、r ( i = 1; i <= n; i++ ) /* 循環(huán)重復(fù)n次,計算x的n次冪 */ power = power * x; printf( "%0.f\n", power);},求 xn,45,2.5 生成乘方表和階乘表,2.5.1 程序解析2.5.2 結(jié)構(gòu)化程序設(shè)計思想,46,2.5.1 程序解析,例2-10(1)輸入一個正整數(shù)n,生成一張2的乘方表,輸出20到2
45、n的值,可以調(diào)用冪函數(shù)計算2的乘方。,for (i = 0; i <= n ; i++) { power = pow(2, i); /*調(diào)用冪函數(shù)pow(2,i)計算2的i次方*/ 輸出power的值;},47,源程序-生成乘方表,#include #include int main(void){ int i, n; double power; printf("
46、Enter n:"); scanf("%d", &n); for (i = 0; i <= n ; i++){ power = pow(2, i); /* 調(diào)用冪函數(shù)pow(2,i)計算2的i次方 */ printf("pow(2,%d)= %.0f\n", i, power); } return 0;
47、},Enter n: 4pow(2,0)= 1pow(2,1)= 2pow(2,2)= 4pow(2,3)= 8pow(2,4)= 16,48,例2-10(2)生成階乘表,輸入一個正整數(shù)n,生成一張階乘表,輸出0!到n!的值。要求定義和調(diào)用函數(shù)fact(n)計算n!,函數(shù)類型是double。,for (i = 0; i <= n ; i++){ product = fact(i); /* 調(diào)用自定義函
48、數(shù)fact(i)計算i! */ 輸出product的值;},49,double fact(int n) /* 函數(shù)首部 */{ int i; double product; product = 1; for (i = 1; i <= n; i++) product = product * i; return
49、 product; /* 將結(jié)果回送主函數(shù) */},2.5.2 結(jié)構(gòu)化程序設(shè)計思想,結(jié)構(gòu)化程序設(shè)計(Structured Programming)程序設(shè)計技術(shù)C語言是結(jié)構(gòu)化程序設(shè)計語言強調(diào)程序設(shè)計的風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu),其基本思路是將一個復(fù)雜問題的求解過程劃分為若干階段,每個階段要處理的問題都容易被理解和處理。按自頂向下的方法對問題進行分析、模塊化設(shè)計和結(jié)構(gòu)化編碼等3個步驟。,50,自頂向下的分析方法,
50、把大的復(fù)雜的問題分解成小問題后再解決面對一個復(fù)雜的問題,首先進行上層(整體)的分析,按組織或功能將問題分解成子問題,如果子問題仍然十分復(fù)雜,再做進一步分解,直到處理對象相對簡單,容易處理為止。當(dāng)所有的子問題都得到了解決,整個問題也就解決了。每一次分解都是對上一層的問題進行細化和逐步求精,最終形成一種類似樹形的層次結(jié)構(gòu),來描述分析的結(jié)果。,51,,學(xué)生成績統(tǒng)計程序,學(xué)生成績統(tǒng)計程序的層次結(jié)構(gòu)圖,52,模塊化設(shè)計,將模塊組織成良好的層
51、次系統(tǒng),頂層模塊調(diào)用其下層模塊以實現(xiàn)程序的完整功能,每個下層模塊再調(diào)用更下層的模塊,從而完成程序的一個子功能,最下層的模塊完成最具體的功能。遵循模塊獨立性的原則,即模塊之間的聯(lián)系應(yīng)盡量簡單。一個模塊只完成一個指定的功能。模塊之間只通過參數(shù)進行調(diào)用。一個模塊只有一個入口和一個出口。模塊內(nèi)慎用全局變量。,53,結(jié)構(gòu)化編碼,選用順序、選擇和循環(huán)三種控制結(jié)構(gòu),使程序具有良好的風(fēng)格。對變量、函數(shù)、常量等命名時,要見名知意,有助于對變量
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- chap2_用c語言編寫程序1-3 - 浙江大學(xué)計算機輔助設(shè)計與
- chap2_用c語言編寫程序1-3
- c語言程序設(shè)計(第3版)何欽銘-顏-暉-第2章--c語言編寫程序
- 大學(xué)計算機c語言程序設(shè)計(程序改錯)
- 大學(xué)計算機c語言程序設(shè)計(程序填空)
- chap-1--計算機數(shù)學(xué)語言概述
- 浙江大學(xué)計算機離線作業(yè)
- 大學(xué)計算機基礎(chǔ)(浙江大學(xué))題庫
- 大學(xué)計算機c語言程序設(shè)計(程序設(shè)計)
- 大學(xué)計算機基礎(chǔ)浙江大學(xué)題庫
- 大學(xué)計算機基礎(chǔ)(浙江大學(xué))題庫
- 浙江大學(xué)計算機科學(xué)基礎(chǔ)題庫
- 浙江大學(xué)計算機硬件課程改革
- 浙江大學(xué)大學(xué)計算機基礎(chǔ)課程題庫
- imagebasedrendering-浙江大學(xué)計算機輔助設(shè)計與圖形學(xué)
- c語言題解(1-3)
- 非線性曲線編寫程序.txt
- 2020計算機考研-浙江大學(xué)計算機科學(xué)與技術(shù)學(xué)院介紹
- image based rendering - 浙江大學(xué)計算機輔助設(shè)計與圖形學(xué)
- 2020計算機考研-浙江大學(xué)計算機科學(xué)與技術(shù)學(xué)院介紹
評論
0/150
提交評論