




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作學習目標學習目標:3 1學會使用結構化程序設計方法編寫程序學會使用結構化程序設計方法編寫程序2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3函數(shù)調用函數(shù)調用2函數(shù)編寫原則函數(shù)編寫原則1、將比較復雜的問題分解成小問題(函、將比較復雜的問題分解成小問題(函數(shù)),以簡化程序設計數(shù)),以簡化程序設計2、將經常用的、公共的功能定義成函數(shù),、將經常用的、公共的功能定義成函數(shù),以在程序中重用以在程序中重用2022-3-7電氣與信
2、息工程學院計算機系制作電氣與信息工程學院計算機系制作3函數(shù)調用函數(shù)調用2練習練習1:從鍵盤輸入一個數(shù)從鍵盤輸入一個數(shù)n,輸出他的所有質因子,例輸出他的所有質因子,例如輸入如輸入30 輸出輸出 2 3 5 要求:要求:1、定義一個函數(shù)、定義一個函數(shù)isPrime(int x)。函數(shù)的功能:。函數(shù)的功能:如果如果x是質數(shù),返回是質數(shù),返回1,否則返回,否則返回02、在主函數(shù)中,從、在主函數(shù)中,從2循環(huán)到循環(huán)到n/2,將是,將是n的因的因子,并且是質數(shù)的輸出子,并且是質數(shù)的輸出2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3函數(shù)應用函數(shù)應用3 例3:輸出乘法口訣表。20
3、22-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3函數(shù)應用函數(shù)應用3 例例3 3:輸出乘法口訣表。:輸出乘法口訣表。l分析分析: : 它是一個它是一個9行行9列的二維表格,加上一個列的二維表格,加上一個行標題和一個列標題,顯示出來應該是行標題和一個列標題,顯示出來應該是10行行10列。列。2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3函數(shù)應用函數(shù)應用3 問題分析l行與行之間采用若干個“=”或“-”字符表示表格之間的線段,為此,可以定義一個函數(shù),專門用來連續(xù)地顯示若干個字符,以避免在每次需要顯示線段的時候,都重復地書寫相應的語句序列。( (
4、重用重用) ) 2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作#include void drawLine(int n,char ch); /* 連續(xù)顯示連續(xù)顯示n個個ch字符字符 */int main() int i,j; printf(n 9.9 tablen); /* 顯示表名顯示表名 */ drawLine(30, =); /* 顯示每列的標題顯示每列的標題 */ printf(n 1 2 3 4 5 6 7 8 9); drawLine(30, =); for (i=1; i=9; i+) /* 顯示每行的內容顯示每行的內容 */ printf(n%3d
5、, i); for (j=1; j=9; j+) printf(%3d, i*j); if (i9) drawLine(30, -); else drawLine(30, =); return 0;lesson13_03.c2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作void drawLine(int n, char ch) /*連續(xù)顯示連續(xù)顯示n個個ch字符字符*/ int i; putchar(n); /*換行換行*/ for (i=1; iy?x:y; return(z); int max(int x,int y);int main() int a,b,c
6、; scanf(%d,%d,&a,&b); c=max(a,b); printf(Max is %d,c); return 0;int max(int x, int y) int z; z=xy?x:y; return(z);形參形參實參實參例例1:函數(shù)執(zhí)行過程:函數(shù)執(zhí)行過程lesson13_01.c2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3函數(shù)調用函數(shù)調用2例例2:2:參數(shù)傳遞參數(shù)傳遞, ,分析程序結果分析程序結果#include int main() int x=7,y=11; printf(x=%d,y=%dn,x,y); printf
7、(swapped:n); swap(x,y); printf(x=%d,y=%dn,x,y);swap(int a,int b) int temp; temp=a; a=b; b=temp;711x:y:調用前:調用前:調用結束:調用結束:7 71111x:x:y:y:調用:調用:711a:b:711x:y:swap:711x:y:117a:b:temp實參和形參是單向值傳遞!實參和形參是單向值傳遞!一般地在函數(shù)體中修改形參的一般地在函數(shù)體中修改形參的值是不會影響實參的!值是不會影響實參的!lesson13_02.c2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作分
8、析如下程序的執(zhí)行結果分析如下程序的執(zhí)行結果#include int fun(int n,int s);int main() int sum=0; fun(5,sum); printf(sum=%d,sum);int fun(int n,int s) int i=0; for(i=1,s=0;i=n;i+) s+=i; return s;2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3函數(shù)應用函數(shù)應用3例例4:計算:計算要求精確度達到要求精確度達到10-6。 .! nx.! 3x! 2xx1en32x2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計
9、算機系制作3函數(shù)應用函數(shù)應用3 問題分析問題分析l在這個公式中,第在這個公式中,第i項的分子是項的分子是xi;分母是;分母是i!。!。為了便于計算每一項的數(shù)值,設計了兩個函數(shù)為了便于計算每一項的數(shù)值,設計了兩個函數(shù)power( )和和factorial( ) 分別用來完成計算分別用來完成計算xi和和i!的的任務。另外,為了更好地體現(xiàn)模塊化的設計思任務。另外,為了更好地體現(xiàn)模塊化的設計思路,再設計一個函數(shù)路,再設計一個函數(shù)e( ) 用于計算用于計算ex。 2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作 算法描述 開開始始 結結束束 1result 1i result
10、+tmpresult i+1i return result xi/i!tmp 精精度度不不夠夠 Y N 2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作#include long power(int x, int y);long factorial(int n);double e(int x);int main( ) int x; printf(nEnter x:); scanf(%d, &x); printf(ne%d=%f, x, e(x); return 0;long power(int x, int y) /* 計算計算xy */ long p =
11、1; int i; for (i=1; i=y; i+) p = p*x; return p;2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作long factorial(int n) /* 計算計算n! */ int i; long f = 1; for (i=2; i= 1E-6 ); /* 精度的檢查精度的檢查 */ return result;2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3課堂練習課堂練習4!nm * *!(n-m)2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3函數(shù)應用函數(shù)應用3
12、2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3函數(shù)應用函數(shù)應用3 問題分析問題分析l從問題的求解要求可知,沒有必要保存輸入的所有文從問題的求解要求可知,沒有必要保存輸入的所有文本行。只需保存已經輸入各行中的最長行,以及剛輸本行。只需保存已經輸入各行中的最長行,以及剛輸入的當前行。入的當前行。l設計一個專門用于計算最長文本行的函數(shù)設計一個專門用于計算最長文本行的函數(shù)void void readline(char maxline )readline(char maxline )。l其實現(xiàn)過程為:一邊輸入文本行保存于數(shù)組其實現(xiàn)過程為:一邊輸入文本行保存于數(shù)組linel
13、ine、一、一邊與當前最長的文本行長度進行比較。如果新輸入的邊與當前最長的文本行長度進行比較。如果新輸入的文本行更長,則更新記錄最長文本行的信息,最后得文本行更長,則更新記錄最長文本行的信息,最后得到的最長文本行將通過參數(shù)帶出去。到的最長文本行將通過參數(shù)帶出去。2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作 算法描述 開開 始始 結結 束束 0 maxlength 0 line0 非非 空空行行 Y N 新新 長長度度 maxlength 保保 存存新新 的的最最長長行行 輸輸 入入文文 本本行行l(wèi)ine 更更長長 Y N 2022-3-7電氣與信息工程學院計算機
14、系制作電氣與信息工程學院計算機系制作#include #include void readline(char maxline );int main() char maxline80=; readline(maxline);/* 輸入并計算最長行輸入并計算最長行 */ printf(nThe longest line is:n); puts(maxline);/* 輸出最長行輸出最長行 */ return 0;lesson13_05.c2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作void readline(char maxline ) /* 輸入并計算最長文本行輸
15、入并計算最長文本行 */ char line80; int maxlength,n; maxlength=0; /*初始化初始化*/ line0=0; printf(nEnter text lines:n); do gets(line); /*輸入文本行輸入文本行*/ n = strlen(line); if (nstrlen(maxline) /*與記錄的最長文本行進行比較與記錄的最長文本行進行比較*/ maxlength = n; /*更新記錄最長文本行的信息更新記錄最長文本行的信息*/ strcpy(maxline, line); while (n0); return ;2022-3-7
16、電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3課堂練習課堂練習52022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3遞歸算法與遞歸函數(shù)遞歸算法與遞歸函數(shù)6語言允許函數(shù)語言允許函數(shù)1 1、嵌套調用,即在函數(shù)中可以調用、嵌套調用,即在函數(shù)中可以調用其它的函數(shù)。其它的函數(shù)。2 2、遞歸調用,即在、遞歸調用,即在。2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3遞歸算法與遞歸函數(shù)遞歸算法與遞歸函數(shù)6f( )調調f調調f2調調f1f1( )f2( )int f(int x) int y,z; z=f(y); . return(2*z
17、);int f1(int x) int y,z; z=f2(y); . return(2*z);int f2(int t) int a,c; c=f1(a); . return(3+c);2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3遞歸算法與遞歸函數(shù)遞歸算法與遞歸函數(shù)6的函數(shù)的函數(shù) n!=n * (n-1) * (n-2) * * 2*1 n!=n * (n-1) * (n-2) * * 2 * 1 n!=n * (n-1)!算算,必須算出,必須算出 計算出計算出 必須必須計算出計算出由此類推,直到推到由此類推,直到推到,返回后即可依次計算出返回后即可依次計算
18、出 2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3遞歸算法與遞歸函數(shù)遞歸算法與遞歸函數(shù)6當求解一個問題時,如果求解過程又用到自當求解一個問題時,如果求解過程又用到自己則可以使用遞歸求解己則可以使用遞歸求解)1()!1()1 ,0(1!nnnnnfloat fac(int n) float f; return f; if(n=0|n=1) f=1; else f=fac(n-1)*n; int main( ) float y; int n; printf(“輸入輸入:); scanf(%d,&n); y=fac(n); printf(%d! =%.0f,
19、n, y); return 0;lesson13_06.c2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3遞歸算法與遞歸函數(shù)遞歸算法與遞歸函數(shù)6main函數(shù)函數(shù)輸入輸入m 3y=fac(m)輸出輸出y 6調用調用facmn 3 因因 3!=1或或0 f=3*fac(3-1)返回返回f=6調用調用facmn 2返回返回f=2返回返回f=1 因因 2!=1或或0 f=2*fac(2-1)調用調用facmn 1因因1=1 f=1結束結束遞歸調用過程演示:遞歸調用過程演示:2022-3-7電氣與信息工程學院計算機系制作電氣與信息工程學院計算機系制作3課堂練習課堂練習7輸出下列數(shù)列輸出下列數(shù)列1 1 2 3 5 8 13的前的前20項項要求:要求:1、定義函數(shù)、定義函數(shù)fib(int n),函數(shù)的功能是返回該函數(shù)的功能是返回該數(shù)列中的第數(shù)列中的第n項項2、在主函數(shù)中循環(huán)逐次求每一項、在主函數(shù)中循環(huán)逐次求每一項3、提示:、提示:fib(n)=fib(n-1)+fib(n-2)2022-3-7電氣與信息工程學院計算
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貨車股份轉讓協(xié)議合同模板
- 2025年老年照護師職業(yè)考試試卷及答案
- 2025年歷史文化遺產保護考試題及答案
- 商場接手轉讓協(xié)議書范本
- 模板廠整體出售合同協(xié)議
- 向父母借巨款協(xié)議書范本
- 員工短視頻出鏡合同協(xié)議
- 售賣電子設備合同協(xié)議
- 品牌運營費合同協(xié)議
- 2025職員借用合同
- 2025年4月新高考語文全國Ⅰ卷各地模考試題匯編之語用
- 山東省聊城市2025年高考模擬試題(二)數(shù)學+答案
- 小學數(shù)學西師大版(2024)三年級下冊旋轉與平移現(xiàn)象教學設計
- 田園綜合體可行性研究報告
- 2025年中考語文二輪復習:散文閱讀 專題練習題(含答案)
- 2019年上海市嘉定區(qū)高考英語一模試卷
- GB/T 3608-2008高處作業(yè)分級
- 2022年保德縣城污水處理有限公司招聘筆試試題及答案解析
- 薩提亞模式家庭治療課件
- 社會語言學 語言的性別、年齡變異課件
- 肺動脈高壓診斷流程及治療策略課件
評論
0/150
提交評論