第3章C程序的流程設計_第1頁
第3章C程序的流程設計_第2頁
第3章C程序的流程設計_第3頁
第3章C程序的流程設計_第4頁
第3章C程序的流程設計_第5頁
已閱讀5頁,還剩139頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、圖圖3.1 Niklaus Wirth 圖圖3.2 常用的流程圖標準化符號常用的流程圖標準化符號 用流程圖描述的三種流程基本結構用流程圖描述的三種流程基本結構 (a)一個三數(shù)中取大的算法)一個三數(shù)中取大的算法 圖圖3.5 無限制地使用流線形成無限制地使用流線形成BS流程結構流程結構 (c)當型重復結構)當型重復結構(a)順序結構)順序結構 (b)選擇結構)選擇結構圖圖3.6 用用N-S圖描述三種基本流程結構圖描述三種基本流程結構 (a)采用選擇結構)采用選擇結構 (b)采用當型重復結構)采用當型重復結構 輸入輸入a,b,c;if(a=b)max=a;else max=b;if(max=c) 輸

2、出輸出max;else 輸出輸出c;初始化:初始化:max=0,i=1;當(當(i=max) max=n;)輸出輸出max;初始化:初始化:max=0,i=1; ( 輸入輸入n; i+; if(n=max) max=n;) 直到(直到(i3)輸出輸出max;s1: 輸入三數(shù)輸入三數(shù)a,b,c;s2: 從從a,b,c中找出大數(shù)賦給中找出大數(shù)賦給max;s3: 輸出輸出max。s1: 調用調用scanf()函數(shù);函數(shù);s2: 設計一個函數(shù)設計一個函數(shù)max3 (a,b,c);s3: 調用調用printf()函數(shù)。函數(shù)。s2.1: if(xy) m=x; else m=y;s2.2: if(mz)

3、m=m; else m=z;s2.3: return (m); if (a & b) c=1;else c=0;if (a | b) c=1;else c=0;if (!a) c=1;else c=0;Enter real number a please: -98.7654 abstr (-98.765400)=98.765400double abstr (double x)if (x0.0)x=-x;return (x);If- else if結構的結構的N-S圖描述圖描述程程序序如如下下switch(表達式表達式)case 常量表達式常量表達式1:語句序列語句序列1case 常量表

4、達式常量表達式2:語句序列語句序列2case 常量表達式常量表達式n:語句序列語句序列ndefault:語句序列語句序列n+1switch(表達式表達式)case 常量表達式常量表達式1:語句序列語句序列1break;case 常量表達式常量表達式2:語句序列語句序列2break;case 常量表達式常量表達式n:語句序列語句序列nbreak;default:語句序列語句序列n+1break;/* ex030801.c */* 測試字符類型測試字符類型 */int test_char (int c)switch (c)case 0:case 1:case 2:case 3:case 4:cas

5、e 5:case 6:case 7:case 8:case 9:printf (its a digit n);break;case :case n:case t:printf (it s a whiten);break;default:printf (it s a charn);break; case 3+4:但不允許寫為:但不允許寫為: Int x=3,y=4; switch (z) case x+y: /* 文件名:文件名:ex030901.c */* 聯(lián)想猜詞游戲聯(lián)想猜詞游戲 */include stdio.hint main(void)int c;c=getchar(); getcha

6、r(); /* 為接收一個字符,再接收為接收一個字符,再接收一個分隔符一個分隔符換行或空格換行或空格*/switch (c)case a:case A:printf (Ada, Algol?n);c=getchar(); getchar();switch (c)case d:case D:printf (Ada n);break;case l:case L:printf (Algol n);break;default:printf (input errorn);break;break;case b:case B:printf (Basic, BCDL?n);c=getchar(); getch

7、ar();switch (c)case a:case A:printf (Basicn);break;case c:case C:printf (BCDLn);break;default:printf (I am sorry!n);break;break;case c:case C:printf (C,Cobol,C+,C#? n);c=getchar(); getchar();switch (c)case c:case C:printf (Cn);break;case o:case O:printf (Coboln);break;case +:printf (C+n);break;case

8、#:printf (C#n);break;default:printf (I am sorry!n);break;break;default:printf (I am sorry!n);break;return 0;/* 兩數(shù)中取大兩數(shù)中取大 */* 文件名:文件名:ex031101.c */#include int main(void)float a,b, max;printf (input 2 reals please:);scanf (%f%f,&a,&b);max=ab?a b;printf (The max is %fn, max);return 0;/* 兩數(shù)中取大

9、兩數(shù)中取大 */* 文件名:文件名:ex031101.c */#include int main(void)float a,b, max;printf (input 2 reals please:);scanf (%f%f,&a,&b);max=ab?a b;printf (The max is %fn, max);return 0;#include int main(void)float a,b;printf (input 2 relas please:);scanf (%f%f,&a,&b);printf (The max is %fn,ab?a:b);re

10、turn 0;fib=fib1+fib2;fib1=fib2; /* 為下一次迭代作準備為下一次迭代作準備*/fib2= fib;iixx lim*圖圖3.20 用二分法求一元方程的根用二分法求一元方程的根圖圖3.24 采用計數(shù)器的采用計數(shù)器的10數(shù)中取大算法數(shù)中取大算法 cocks: 019中的整數(shù)中的整數(shù)(因為每只雞翁因為每只雞翁5錢錢)hens: 033中的整數(shù)中的整數(shù)(因為每只雞母因為每只雞母3錢錢)chicks: 0100中的整數(shù)中的整數(shù)(因為三只因為三只1錢錢)s1: cocks=0; /*賦初值賦初值*/s2: 當當(cocks=19)s2.1: 找滿足題意的找滿足題意的hens

11、, chicks;s2.2: cocks+;S3: 輸出一組輸出一組cocks, hens 和和 chickswhile是一種是一種循環(huán)結構循環(huán)結構,其形式如下:,其形式如下: while (表達式表達式) 循環(huán)體語句循環(huán)體語句/* 文件名:文件名:ex031702.c */* 計算人口增長計算人口增長 */#include int main(void)double m=13;int i=1;while(i=10) m=m*(1+0.002); printf(“Population after %d years is:%fn”,i,m); i+;return 0;/* 文件名:文件名:ex03

12、1801.c * 計算計算Fibonacci數(shù)數(shù) */#include int main(void) int fib1=1,fib2=1,fib,i=3; while(i=12) fib=fib1+fib2; fib1=fib2; fib2=fib; i+; printf(“The Fibonacci number after 1 year is:%dn”,fib); return 0;例例3.19 用牛頓迭代法計算一個正實數(shù)用牛頓迭代法計算一個正實數(shù)a的平方根,的平方根,精確到精確到E0=10-5。例例3.19 用牛頓迭代法計算一個正實數(shù)用牛頓迭代法計算一個正實數(shù)a的平方根,的平方根,精確到

13、精確到E0=10-5。/* 文件名:文件名:ex031901.c */* 計算平方根計算平方根 */#include #define E0 0.00005double sq_root (double a)/* 計算計算a的平方根的平方根 */double x;x=a;x=(x+a/x)*0.5;while (fabs (x*x-a)=E0) x=(x+a/x)*0.5; return (x);#include int main(void)double f=2.0; printf( The root of %f is %fn,f,sq_root(f); return 0; 用下面的主函數(shù)進行測試

14、用下面的主函數(shù)進行測試:測試結果如下:測試結果如下:The root of 2.000000 is 1.414216/* 文件名:文件名:ex032001.c * 多數(shù)中取大多數(shù)中取大 */#include #define FLAG -32768int main(void) int max,n; printf(“Input a number:”); scanf(“%d”,&n); max=n; while(n!=FLAG) printf(“Input next number:”); scanf(“%d”,&n); if(nmax) max=n;printf(“The max i

15、s:%dn”,max);return 0;/* 文件名:文件名:ex032002.c * 多數(shù)中取大多數(shù)中取大 */#include #define FLAG -32768int main(void) int max,n; do printf(“Input a number:”); scanf(“%d”,&n); if(nmax) max=n; while(n!=FLAG);printf(“The max is:%dn”,max);return 0;/* 文件名:文件名:ex031902.c */* 計算平方根計算平方根 */#include #define E0 0.00005dou

16、ble sqroot(double a)/* 計算計算a的平方根的平方根 */ double x; x=a;do x=(x+a/x)*0.5;while (fabs (x*x-a)=E0);return (x);也可寫為:也可寫為: #include #define E0 0.00005double sq_root (double a)/* 計算計算a的平方根的平方根 */ double x; for (x=a, x=(x+a/x)*0.5;fabs (x*x-a)=E0;x=(x+a/x)*0.5); return (x);/* 文件名:文件名:ex032202.c * 百錢買百雞問題百錢買

17、百雞問題 */#include int main(void) int cocks; printf(%8s%8s%8sn,cocks,hens,chicks); for(cocks=0;cocks=19; cocks+) int hens; for(hens=0; hens=33; hens+) int chicks; chicks=100-cocks-hens; if(5*cocks+3*hens+chicks/3.0=100)printf(%8d%8d%8dn, cocks,hens,chicks); return 0; for(i=1; i=9;i+)printf (%4d,i);for(

18、i=1; i=36; i+)printf (%c, -);for(i=101; i=136; i+)printf (%c, -);for (i=36; i=1; i-)printf (%c, -);for (i=10; i=360; i+=10)printf (%c, -);for(i=1; i=9;i+)打印第打印第i行行for(j=1, j=9; j+)打印第打印第j個數(shù)個數(shù)printf (%4d, i*j);printf (n);/* 文件名:文件名:ex032301.c * 打印九九乘法表打印九九乘法表 */#include int main(void) int i,j; for (i

19、=1; i=9; i+) printf(%4d,i); printf (n); for (i=1; i=36;i+) printf (%c,-); printf (n); for (i=1;i=9; i+) for (j=1; j=9;j+) printf (%4d,i*j); printf (n); return 0;printf (j=9)?%4dn:%4d, i*j);baI=( ) ( )f x d xba( ) ( )( )( )f x d xF bF a圖圖3.29 用梯形法求定積分用梯形法求定積分11)()()(2)() 1() 1()2()()()(2niihafhbfafhb

20、fhnafhnafhafhafhafafhs) 1()(20hiafihafhSni) 1()(2hiafihafhSi/* 文件名:文件名:ex032401.c * 用梯形法求積分用梯形法求積分 */#include double f(double x);int main(void) /*求定積分求定積分*/ float a,b; double s,h; int n,i; printf (input integral area a & b:); /* 輸入一個區(qū)間輸入一個區(qū)間 */ scanf (%f, %f,&a,&b); printf (input n:); /*

21、 輸入迭代次數(shù)輸入迭代次數(shù) */ scanf (%d,&n); h=(b-a)/n; s=0.5*h*(f(a)+f(b); for(i=1;i=n-1; i+) s=s+f(a+i*h)*h; printf (nthe value is:%1fn, s); return 0;#include double f(double x) /*被積函數(shù)被積函數(shù)*/return (sqrt (4.0-x*x);input integral area a & b:0, 2 input n: 1000 the value is: 3.141555input integral area a & b: 0, 2 input n: 10000 the valu

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論