![第四章循環(huán)結(jié)構(gòu)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/13/c3f33cbe-72fa-4ddc-a961-4b41d1217b26/c3f33cbe-72fa-4ddc-a961-4b41d1217b261.gif)
![第四章循環(huán)結(jié)構(gòu)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/13/c3f33cbe-72fa-4ddc-a961-4b41d1217b26/c3f33cbe-72fa-4ddc-a961-4b41d1217b262.gif)
![第四章循環(huán)結(jié)構(gòu)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/13/c3f33cbe-72fa-4ddc-a961-4b41d1217b26/c3f33cbe-72fa-4ddc-a961-4b41d1217b263.gif)
![第四章循環(huán)結(jié)構(gòu)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/13/c3f33cbe-72fa-4ddc-a961-4b41d1217b26/c3f33cbe-72fa-4ddc-a961-4b41d1217b264.gif)
![第四章循環(huán)結(jié)構(gòu)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/13/c3f33cbe-72fa-4ddc-a961-4b41d1217b26/c3f33cbe-72fa-4ddc-a961-4b41d1217b265.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計第第4章章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán):對同一個程序段重復(fù)執(zhí)行若干次。計算機最擅長的工作之一就是重復(fù)。 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計本章內(nèi)容for語句語句 1數(shù)列求和數(shù)列求和2輸出階乘表輸出階乘表3素數(shù)判定素數(shù)判定4while語句和語句和do語句語句 54 5打印素數(shù)表打印素數(shù)表54 6 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計求和問題1、求3個數(shù)的和。輸入3個整數(shù),輸出其和。2、求10個數(shù)的和。輸入10個整數(shù),輸出其和。3、求100個數(shù)的和。輸入100個整數(shù),輸出其和。4、求n個數(shù)的和。首先輸入一個整數(shù)n,然后輸入n個整數(shù),輸出
2、他們的和 /求三個數(shù)的和#includeint main() int n1, n2, n3; scanf(%d%d%d, &n1, &n2, &n3); printf(“%dn”, n1 + n2 + n3); return 0;/*求10個數(shù)的和*/#includeint main() int n1, n2, n3, n4, n5, n6, n7, n8, n9, n10; int sum=0; scanf(%d%d%d%d%d, &n1,&n2,&n3,&n4,&n5); scanf(%d%d%d%d%d, &n6,&
3、amp;n7,&n8,&n9,&n10); sum=sum+n1+n2+n3+n4+n5; sum=sum+n6+n7+n8+n9+n10; printf(%dn,sum); return 0;求100個數(shù)的和呢?n個數(shù)的和呢?n的值在程序運行中才確定 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計求和問題10個數(shù)求和可以理解為:以下動作重復(fù)執(zhí)行10次 (1)讀入一個數(shù)存入number; (2) 將number累加到sum上 C語言提供了循環(huán)語句來實現(xiàn)重復(fù)。/*用for語句實現(xiàn)10個數(shù)的求和*/#includeint main() int number, i, sum; su
4、m=0; for(i=1; i=10; i=i+1) /重復(fù)10次 scanf(%d, &number); sum=sum+number; printf(%dn,sum); return 0;到VC中單步執(zhí)行一下,監(jiān)視i、number和sum的變化 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.1 求n個數(shù)的和解決問題:解決問題:求n個數(shù)的和。首先輸入一個整數(shù)n,然后輸入n個整數(shù),求他們的和 .分析:(1) 聲明變量i, n, number, sum;(2)sum置為0;(3)讀入n(4)以下重復(fù)n次 讀入一個數(shù)存入number,把number累加到sum(5)輸出sum ; int i
5、, n, number, sum;sum=0;for(i=1; i=n; i=i+1) scanf(%d,&number); sum=sum+number;scanf(%d,&n); C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計/求n個數(shù)的和#includeint main() int number, sum; int i, n; /n為數(shù)的個數(shù),i為循環(huán)變量 sum=0; /sum存儲累加和,要初始化為0 scanf(%d,&n); for(i=1; i=n; i+) /用for語句控制循環(huán)n次 scanf(%d,&number); sum=sum+number;
6、 printf(%dn,sum); return 0;/循環(huán)體,即重復(fù)的內(nèi)容/輸出累加和for(i=1; i=n; i+)循環(huán)控制語句:i將從1變到n,i每次增1,故循環(huán)n次 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計真真4.1.1 for語句for ( i = 1; i = n; i+) scanf(%d,&number); sum=sum+number;假假假for(expr1 ; expr2 ; expr3) 循環(huán)體語句;for語句v一般形式: C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計for (i = 1; i = n; i+) scanf(%d,&number); sum
7、=sum+number;表達式1:給循環(huán)變量賦初值,指定循環(huán)的起點。i = 1;表達式2:給出循環(huán)的條件,決定循環(huán)的繼續(xù)或結(jié)束。i = n;表達式3:設(shè)置循環(huán)的步長,改變循環(huán)變量的值,從而可改變表達式2的真假性。i+;語句:被反復(fù)執(zhí)行的語句,一條語句。for語句的說明 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)(控制)變量:for語句中,通過改變或判斷某個變量的值來控制循環(huán)的執(zhí)行 for (i = 1; i = n; i+) scanf(%d,&number); sum=sum+number;for語句中的循環(huán)變量賦初值賦初值判斷其值判斷其值 改變其值改變其值 C語言程序設(shè)計 第4章
8、 循環(huán)結(jié)構(gòu)程序設(shè)計/對上例的對上例的for循環(huán)做如下改循環(huán)做如下改寫,看看運行結(jié)果寫,看看運行結(jié)果for (i = 1; i = n; i+) scanf(%d,&number); sum=sum+number;注意復(fù)合語句 和空語句 ;for (i = 1; i = n; i+) ; scanf(%d,&number); sum=sum+number;運行結(jié)果運行結(jié)果:輸入輸入n之后,只能讀入一之后,只能讀入一個數(shù),輸出結(jié)果等于第一個數(shù)。個數(shù),輸出結(jié)果等于第一個數(shù)。sum的值等于輸入的最后一個數(shù)的值等于輸入的最后一個數(shù)因為重復(fù)執(zhí)行的語句只有因為重復(fù)執(zhí)行的語句只有scanf語句
9、,語句,sum=sum+number;不再是循環(huán)的內(nèi)容不再是循環(huán)的內(nèi)容因為循環(huán)體只有一個空語句,因為循環(huán)體只有一個空語句,scanf(“%d”,&number); sum=sum+number; 都不在循環(huán)體內(nèi)。都不在循環(huán)體內(nèi)。注意:注意:循環(huán)體多于循環(huán)體多于1個語句,要用復(fù)合語句個語句,要用復(fù)合語句 注意:注意:for語句的()后沒有分號語句的()后沒有分號不要在不要在for語句中隨意加分號語句中隨意加分號/左側(cè)的程序段等價于左側(cè)的程序段等價于for (i = 1; i = n; i+) scanf(%d,&number); sum=sum+number;/左側(cè)的程序段等價于
10、左側(cè)的程序段等價于for (i = 1; i = n; i+) ; scanf(%d,&number); sum=sum+number; C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計for語句中的自增自減運算符以下幾種寫法等價for (i = 1; i = n; i+ ) for (i = 1; i = n; +i ) for (i = 1; i = n; i=i+1 )for (i = 1; i = n; i+=1 )但以下寫法是錯誤的, 可能造成死循環(huán)for (i = 1; i = n; i+1) /i的值沒有得到改變 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計將5讀入,存入n4.1.2
11、 求n個數(shù)的最大值擂臺賽的思想: 第1個人先站在擂臺上,后面的n-1個人依次上臺與臺上的人較量,若勝之,則取代之站在擂臺上接受挑戰(zhàn),最后仍站在臺上的就是擂主。 用第一個數(shù)作為臨時最大值max(將第一個數(shù)存入max), 依次讀入其余n-1個數(shù),若當前數(shù)大于max,則其值存入max,循環(huán)結(jié)束時 max中就是最大值。 max56 4 7 9 3number 6將第一個數(shù)讀入,直接存入max循環(huán)4次,將第二個以后的數(shù),依次存入number, 然后跟max比較,若大于max,則存入max輸入: 4 7 7 9 9 3最后max中就是最大值解決問題:解決問題:輸入n和n個整數(shù),輸出其最大值。 C語言程序設(shè)
12、計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.1.2 求n個數(shù)的最大值實現(xiàn)過程:(1) 聲明變量i, number, n, max;(2) 讀入n(3) 讀入第一個數(shù),作為臨時最大值(4)以下重復(fù)n-1次 讀入一個數(shù)存入number; 如果number大于臨時最大值max 則將number的值賦給max(5)輸出max ; scanf(%d,&n);scanf(%d,&max);for(i=1; imax) max=number; C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計/求n個數(shù)的最大值#includeint main() int number, max; int i, n; /n為數(shù)的個
13、數(shù),i為循環(huán)變量 scanf(%d, &n); scanf(%d, &number); max=number; /max存儲最大值,要用第一個數(shù)作為臨時最大值 for(i=1; i max) max = number; printf(%dn,max); return 0;/其余n-1個數(shù)依次讀入,并與max比較,若大于max,則存入max C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計練習(xí) 輸入n和n個學(xué)生成績(實數(shù)),輸出不及格率,結(jié)果保留兩位小數(shù)。 輸入樣例:898 45 86 79 56 75 90 70 輸出樣例:0.25 分析:(1) 聲明變量i, n, failNum,
14、score;(2) 讀入n;failNum=0;(3)以下重復(fù)n次 讀入一個數(shù)存入score; 如果score60 failNum增1(4)輸出1.0*failNum/n ; C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計練習(xí) 輸入n和n個整數(shù),輸出其中負數(shù)、0、和正數(shù)的個數(shù)。 輸入樣例:62 3 0 -1 6 -8 輸出樣例:2 1 3即2個負數(shù)、1個0、3個正數(shù) C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計求下列數(shù)列的和1、求 1+2+n2、求 的前n項和,保留3位小數(shù)3、求 的前n項和。4、求 的前n項和。5、求 的前n項和。6、求 的前n項和。4.2 數(shù)列求和.917151311.9574533
15、21917151311.514131211 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計求 1+2+n#includeint main() int sum=0, n; scanf(%dn, &n); sum=1+2+3+.+n; printf(%dn,sum);編譯器不認識抽取具有共性的算式:sum=sum+i;循環(huán)n次,i從1變到n,循環(huán)內(nèi)容為: sum=sum+i;當i從1變到n,正好將1、2n都累加到sum中#includeint main() int i, n, sum; scanf(%dn, &n); sum=0; for(i=1; i=n; i
16、+) sum = sum + i; printf(%dn, sum);到VC中單步執(zhí)行一下,監(jiān)視i和sum的變化 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計 初始化:指定循環(huán)起點 給循環(huán)變量賦初值,如i = 1; 進入循環(huán)前,設(shè)置相關(guān)變量的初值,如sum = 0。 條件控制: 只要i 100,循環(huán)結(jié)束。for循環(huán)的四個部分 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計求 /求求 1+2+n#includeint main() int i, sum, n; scanf(%d, &n); sum=0; for(i=1; i=n; i+) sum = sum + i; printf(%dn, su
17、m);改寫如下1+2+.+n的程序,求 的前n項和,結(jié)果保留3位小數(shù)。/求求 1+1/2+1/n#includeint main() int i, n; double sum; scanf(%d, &n); sum=0; for(i=1; i=n; i+) sum = sum + 1.0/i; printf(%.3fn, sum);.514131211結(jié)果sum定義為double注意寫成1.0/i,因為整數(shù)相除結(jié)果是整數(shù).514131211 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計改寫如下程序,求以上序列的前n項和,結(jié)果保留3位小數(shù)。求 /求求 1+1/2+1/n#includeint
18、 main() int i, n; double sum; scanf(%dn, n); sum=0; for(i=1; i=n; i+) sum = sum + 1.0/i; printf(%.3fn, sum);方法1:第i項的分母是2*i-1第n項的分母是2*n-1故分母的變化是:1、3、5、2*n-1, 每次增2for(i=1; i=2*n-1; i=i+2) sum = sum + 1.0/i;i=2*n-1; i=i+2)/求求 1+1/3+1/5+前前n項和項和.917151311 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計求 /求求 1+1/3+1/5+1/7+#includei
19、nt main() int i, n; double sum; scanf(%dn, &n); sum=0; for(i=1; i=n; i+) sum = sum + 1.0/(2*i-1); printf(%.3fn, sum);方法2:循環(huán)變量i只控制項數(shù),每次增1: for(i=1; i=n; i+)觀察分母與循環(huán)變量i的關(guān)系:第i項的分母為2*i-1.917151311 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計求 int main() int i, n, deno; double sum; scanf(%dn, &n); sum=0; deno=1; for(i=1;
20、 i=n; i+) sum = sum + 1.0/deno; deno=deno+2; /為下次循環(huán)做準備 printf(%.3fn, sum);方法3:循環(huán)變量i只控制項數(shù),每次增1: for(i=1; i=n; i+)觀察分母的變化規(guī)律:每次增加2增加一個變量deno,初始化為1,每次使用完,增加2, 為下一項做準備。.917151311 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計求 前n項和 flag是在+1.0和-1.0之間變換,為避免整數(shù)除法運算,把flag定義為實數(shù)。/求求 1+1/3+1/5+1/7+int main() int i, n, deno; double sum, f
21、lag; scanf(%dn, &n); sum=0; deno=1; flag=1.0; for(i=1; i=n; i+) sum = sum + flag/deno; deno=deno+2; /為下次循環(huán)做準備 flag=-flag; printf(%.3fn, sum);思路分析:有了剛才遞推的思想,符號的變化可以用一個變量flag來控制,使其在+1和-1之間變換,每次循環(huán)使flag符號取反切記循環(huán)開始之前,相關(guān)變量的初始化,如sum清0,分母為1,符號為正.917151311 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計練習(xí).16113110171411求如下數(shù)列的前n項和,結(jié)
22、果保留3位小數(shù)。1、2、.116957453321符號每次取反;分母每次增加3符號每次取反;分母每次增加2;分子就用循環(huán)變量i;切記相關(guān)變量的初始化 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.3 階乘表階乘的結(jié)果要存儲為什么類型?n是一個不大于20的整數(shù),估算一下20!是一個多少位的十進制整數(shù)?32位整型顯然表達不了要用double類型或64位整型解決問題: 輸入一個整數(shù)n(n=20),輸出1-n的階乘表:1 12 23 64 24. C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計實現(xiàn)思路fact=1;for (i = 1; i = n ; i+) 計算i的階乘;(前一項結(jié)果*i) 輸出結(jié)果 fa
23、ct = fact * i; printf(“%d %dn”, i, fact);#include int main() int i, n; double fact; scanf (%d, &n) ; for (fact=1, i = 1; i = n; i+ ) fact = fact * i ; /遞推計算i的階乘 printf ( %d %.0f n, i, fact ); return 0; C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.3.1逗號運算符及其表達式逗號運算符,又稱為順序求值運算符;用逗號運算符連接起來的式子,稱為逗號表達式1、一般形式 表達式1,表達式2,.,表達
24、式n 例如:3+5, 6*9 x=2, y=x+4, z=x*y2、求解過程:從左至右,依次計算,最后一個表達式的值就是整個表達式的值。 逗號表達式3+5, 4*9的值為36 a= (3+5, 4*9); /則a的值為36 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計逗號表達式的求解逗號運算符的優(yōu)先級低于賦值運算符。a= (3+5, 4*9); /則a的值為36;a= 3+5, 4*9 ; /則a的值為8,雖然整個逗號表達式的值是36b = (a= 3+5, 4*9) ; /則b的值為36,a的值為8x=2, y=x+4, z= x*y; / 則z的值為12, 逗號表達式的值是12z = ( x=
25、2, y=x+4, x*y); / 則z的值為12計算過程如下: (1)執(zhí)行賦值表達式x=2, 把2賦給x; (2) 執(zhí)行賦值表達式y(tǒng)=x+4, 把6賦給y; (3) 計算x*y的值12, 并將12作為整個逗號表達式的值 (4)把12賦給z; C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計逗號表達式的應(yīng)用(1)1、順序求值,如x=2, y=x+4, z=x*y;2、有時可用逗號表達式代替大括號的作用大括號的作用是把多個語句當做一個復(fù)合語句,有時候用逗號也可以起到同樣的效果,并使語句更簡化緊湊,特別是多個具有承接而又相對獨立的語句。 舉例:三個整數(shù)排序/三個數(shù)的排序#includeint main()
26、 int a,b,t; scanf(%d%d%d, &a,&b,&c); if(ab) /用復(fù)合語句 t=a; a=b; b=t; if(ac) /用復(fù)合語句 t=a; a=c; c=t; if(bc) /用復(fù)合語句 t=b; b=c; c=t; printf(%d %d, a,b); return 0;/三個數(shù)的排序#includeint main() int a,b,t; scanf(%d%d%d, &a,&b,&c); if(ab) / 用逗號表達式t=a, a=b, b=t; if(ac) / 用逗號表達式t=a, a=c, c=t; i
27、f(bc) / 用逗號表達式t=b, b=c, c=t; printf(%d %d, a,b); return 0; C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計逗號表達式的應(yīng)用(2)3、在只能用一個表達式的語法限制下,進行多項操作,可用逗號表達式。如:for (fact=1, i=1; i0) 先讀入n,然后判斷n0是否成立,將該結(jié)果作為逗號表達式的結(jié)果 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計練習(xí)1、求1! + 2! + . + n!,其中n不大于20.思路分析:(1)定義變量i, n, fact, sum,fact存階乘值,sum存累加和;fact和sum要聲明為什么類型?(2) fact初
28、始化為1,sum初始化為0;(3) for(i=1; i=n; i+) 計算i的階乘fact; 將fact累加到sum中; (4) 輸出sum; C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計練習(xí)計算 的前20項和。357sin( ).3!5!7!xxxxx解題思路:(1)定義相關(guān)變量i, num(分子)、demo(分母),flag(符號),sum(累加和)(2)讀入x(3)初始化: flag=1; num=x; demo=1; sum=0;(4)計算前20項for(i=1;i=20;i+) sum=sum+flag*num/demo; /計算當前項并累加 /為下一項做準備 flag=-flag;
29、/符號取反 num=num*x*x; /計算下一項的分子 demo=demo*(2*i)*(2*i+1) ; /計算下一項分母(5)輸出結(jié)果 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.3.2 計算a+aa+aaa+解決問題:輸入n和a,求a+aa+aaa+aaa(n個a),0=a,n=9,如當n=3, a=2時,2+22+222的結(jié)果為246思路分析:(1)定義變量i, n, a, item,sum,item存當前項,sum存累加和;(2) item初始化為0,sum初始化為0;(3) for(i=1; i=n; i+) 計算當前項item(i個a); 將item累加到sum中; (4) 輸
30、出sum; C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計如何遞推計算當前項有同學(xué)這樣遞推第i項:item = a * pow(10, i) + item;從理論上是對的,但程序的運行結(jié)果不一定正確。原因是pow函數(shù)的返回值是實數(shù),比如pow(10, 2)可能存儲為99.999999,轉(zhuǎn)換為整數(shù)時截斷取整是99,而不是100,造成結(jié)果錯誤。為避免截斷取整帶來的錯誤,可以加上一個很小的數(shù),如做如下處理,則可得到正確結(jié)果item = a * (pow(10,i) + 0.00001) + item;如何由第i-1得到第i項?找規(guī)律:后一項與前一項相比:第i-1項乘以10,加上aitem = item *
31、 10 + a;建議:整數(shù)運算要避免實型函數(shù) C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計/求a+aa+aaa+.#includeint main() int i, n, a, item, sum; scanf(%d%d, &n, &a); item = 0; /item初始化為0 sum = 0; for(i=1; i=n; i+) /先計算第i項,再累加 item = item * 10 + a; sum = sum + item; printf(%dn, sum); return 0;/求a+aa+aaa+.#includeint main() int i, n, a, it
32、em, sum; scanf(%d%d, &n, &a); item = a; /item初始化為a sum = 0; for(i=1; i=n; i+) /先累加,再為下一項做準備 sum = sum + item; item = item * 10 + a; printf(%dn, sum); return 0;有同學(xué)將sum初始化為a,然后循環(huán)n-1次,這樣做的問題是:當n為0時,結(jié)果是錯誤的。 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計解決問題:解決問題:若m是素數(shù),則輸出“yes”,否則輸出“no”。素數(shù)的定義:除了1和m,不能被其它數(shù)整除。注意,1不是素數(shù)。4.4 素
33、數(shù)判定定義:除了1和m,不能被其它數(shù)整除。數(shù)學(xué)理論:若m是合數(shù),必有一個因數(shù)屬于區(qū)間2, ,即若m不能被 2, 的任何整數(shù)整除,m必為素數(shù)。mm C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計以判斷13769是否是素數(shù)為例,討論如何判斷。嘗試用2、3、4、5、117去除m有兩種可能情況:(1)嘗試完所有數(shù),均不能整除m,則m是素數(shù)(2)嘗試到某一個數(shù)i,能整除m,可得出結(jié)論m不是素數(shù),提前結(jié)束嘗試實現(xiàn)思路(1)flag=0; /m被整除的標志,0表示沒有整除,1表示整除 k=sqrt(m); (2)嘗試i=2.k if(m是i的倍數(shù)) 則m不是素數(shù),flag=1; break; 否則,做下一次循環(huán),
34、嘗試下一個整數(shù) (3)若flag=0,則m是素數(shù),否則,m不是素數(shù)只要有一個i能整除m,就可以得到m不是素數(shù)的結(jié)論,提前結(jié)束循環(huán)最后判斷一下flag,若為1就說明m能被某個i整除,m不是素數(shù)。反之,flag是0說明在循環(huán)過程中flag沒有被賦值賦到1,也就是m沒有被整除!flag是m能否被整除的標志,故稱為標志變量 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計主要代碼k=sqrt(m);flag=0; /0代表m沒有被整除,1代表m被某個數(shù)整除for(i = 2; i = k; i+) if(m % i = 0) flag=1; break; if(flag=0) printf(yesn)else
35、 printf(non”);break語句用于提前結(jié)束循環(huán) C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計本程序的bug 上述程序沒有考慮m為1的情況。在問題描述中,輸入的m是一個“正整數(shù)”,那么對于所有合法輸入,上述程序都應(yīng)該能得到正確結(jié)果,可是當輸入為1時,上述程序的輸出是錯誤的,因為1不是素數(shù)。k=sqrt(m);flag=0; /0代表m沒有被整除,1代表m被某個數(shù)整除for(i = 2; i = k; i+) if(m % i = 0) flag=1; break; if(m=1) flag=1;if(flag=0) printf(yesn)else printf(non”);處理m為1的
36、情況 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.4.1 循環(huán)中的break 利用break語句能夠強制結(jié)束循環(huán),轉(zhuǎn)到后續(xù)語句執(zhí)行。for(i = 2; i k時結(jié)束,一個是當m是某個i的倍數(shù),if (m % i = 0)條件成立時,通過break結(jié)束其實,即使沒有flag變量,循環(huán)結(jié)束后,通過判斷循環(huán)使因為哪種原因結(jié)束的,也可以知道m(xù)是否是素數(shù)。如果循環(huán)是因為m是某個i的倍數(shù),if條件成立,由break結(jié)束循環(huán),則i的值必不大于kif(i=k),則m不是素數(shù)否則,m是素數(shù) C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.4.2 循環(huán)中的continue#includeint main() int
37、 i; for(i=1; i=100; i+) if(i%7=0)continue; printf(%d ,i); 輸出結(jié)果: 1 2 3 4 5 6 8 9 10 11 12 13 15 16 17 18 .利用continue語句能中斷循環(huán)體的本次執(zhí)行(即跳過循環(huán)體中尚未執(zhí)行的語句),立即開始執(zhí)行下一次循環(huán)。例子:輸出1-100,遇到7的倍數(shù)則跳過遇到7的倍數(shù),立即執(zhí)行下一次循環(huán) C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計break與continue/分析如下程序的輸出結(jié)果#includeint main() int i; for(i=1;i=100;i+) if(i%7=0) break;
38、 printf(%d ,i); 輸出結(jié)果:1 2 3 4 5 6 遇到第一個7,就中斷了循環(huán)continue語句中斷循環(huán)的本次執(zhí)行,立即開始執(zhí)行下一次循環(huán);break是立即結(jié)束循環(huán)把上例中的continue改為break,看看結(jié)果如何 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計明7暗7過(敲7) #includeint main() int i; for(i=1;i=100;i+) if(i%7!=0 & i%10!=7 & i/10!=7) printf(%d ,i); printf(n);#includeint main() int i; for(i=1;i=100;i+)
39、if(i%7=0)continue; if(i%10=7)continue; if(i/10=7)continue; printf(%d ,i); printf(n);如果i不是7的倍數(shù),且不含有數(shù)字7,則輸出如果i是7的倍數(shù)則跳過如果i個位是7則跳過如果i十位是7則跳過規(guī)則: 按順序從1開始數(shù)數(shù),逢7的倍數(shù)或是帶有7的數(shù)字,必須以敲桌子代替。請用明7暗7過的規(guī)則,輸出100以內(nèi)的整數(shù)。 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.4.3 缺省表達式的for語句for(表達式表達式1; 表達式表達式2; 表達式表達式3) 循環(huán)體語句循環(huán)體語句 中的三個表達式都可缺省,但兩個分號不能缺省。以下4
40、個程序段等價for (i = 1; i = n; i+) sum = sum + i; i = 1;for ( ; i = n; i+) sum = sum + i; i = 1;for ( ; i n)break; 把初始化放在循環(huán)之前循環(huán)變量增值放在循環(huán)體中缺省表達式2可理解為表達式2為永真,循環(huán)的結(jié)束的控制由break實現(xiàn) C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.5 求若干學(xué)生的總成績 從鍵盤輸入一批學(xué)生的成績,計算總成績。輸入負數(shù)表示輸入結(jié)束。問題分析:問題分析:求累加和確定循環(huán)條件:不知道輸入數(shù)據(jù)的個數(shù),無法事先確定循環(huán)次數(shù)用一個特殊的數(shù)據(jù)(比如一個負數(shù))作為正常輸入數(shù)據(jù)的結(jié)束標
41、志。 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計思路分析: (1)定義變量score, sum; (2)讀入一個成績score; (3)while(score=0),做 把成績累加到sum上; 讀下一個學(xué)生成績score; (4)輸出總成績sum為什么要先讀入一個成績?因為進入while循環(huán)首先先進行score=0的判斷讀入下一個成績,為下一次循環(huán)做準備#include int main(void) double score, sum; sum=0; scanf(%lf, &score); while (score = 0) sum = sum + score; scanf (“%lf”
42、, &score);printf(“%.2fn, sum);return 0;/計算總成績,逗號表達式計算總成績,逗號表達式#include int main(void) double score, sum; sum=0; while ( scanf(“%lf”, &score), score = 0) sum = sum + score; printf(“%.2fn, sum);return 0;while中的表達式是一個逗號表達式,先執(zhí)行scanf,讀入一個實數(shù)存入score,然后判斷score=0,并將其值作為逗號表達式的值 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計5.5
43、.1 while語句真真假假while下一條語句下一條語句表達式表達式循環(huán)體語句循環(huán)體語句while( n != 0 ) /當n非0 n = n/10; /扔掉n的個位數(shù)字 digits+; /位數(shù)加1n != 0n = n/10;digits+;while(expression) 循環(huán)體語句;while語句v一般形式: C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計練習(xí):以下程序段的運行結(jié)果?(1)i=0;while(i5) printf(i=%dn,i);i+;i=0i=1i=2i=3i=4請用請用for循環(huán)改寫這個程序段:循環(huán)改寫這個程序段:for( i=0; i5; i+) printf(i
44、=%dn,i);(2)i=k=1;while(i5)k+=i;printf(i=%d,k=%dn,i,k);i5永真永真i=1,k=2i=1,k=3i=1,k=4i=1,k=5i=1,k=6死循環(huán)!死循環(huán)!(3)i=0;while(i=4) printf(*n); i+=2;無論無論i值在循環(huán)體中如何變化,賦值在循環(huán)體中如何變化,賦值表達式值表達式i=4 為永真,是死循環(huán)。為永真,是死循環(huán)。*死循環(huán)!死循環(huán)!(4)i=0;while(i=4) printf(i=%dni); i+=2;進入循環(huán)時首先測試進入循環(huán)時首先測試 i=4 的值為假,結(jié)的值為假,結(jié)束循環(huán)。循環(huán)體一次也不執(zhí)行,無輸出束循環(huán)
45、。循環(huán)體一次也不執(zhí)行,無輸出。無輸出無輸出 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計while 語句和for語句表達式表達式1 1;while (while (表達式表達式2 2) ) forfor的循環(huán)體語句的循環(huán)體語句; 表達式表達式3 3; 把把forfor語句改寫成語句改寫成whilewhile語句語句for(for(表達式表達式1 1; ; 表達式表達式2 2; ; 表達式表達式3 3) ) 循環(huán)體語句循環(huán)體語句for (i = 1; i = 10; i+) sum = sum + i; i = 1; /循環(huán)變量賦初值循環(huán)變量賦初值while (i = a & ch = A
46、& ch = 0 & ch = 9) digit +; else other +; printf(letter=%d, digit=%d, other=%dn, letter, digit, other); return 0; while中的表達式是一個逗號表達式,先讀入字符存入ch,然后判斷ch!=n,并將其值作為逗號表達式的值 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計5.5.3 整數(shù)的位數(shù) 解決問題:輸入一個整數(shù)n(int范圍內(nèi)),輸出n的位數(shù)。方法1:n 最多是一個10位數(shù),用10個分支的else if語句不推薦!沒有循環(huán)和結(jié)構(gòu)化變量的程序不值得編寫思路分析:思路分析:反
47、復(fù)除以10取整,看看多少次之后n變成0,n就有多少位。digits=0; /位數(shù)初始化為0當n非0,重復(fù)如下操作 n = n/10; /扔掉n的個位數(shù)字 digits+; /位數(shù)加1#includeint main() int n, digits; scanf(%d,&n); digits = 0; /位數(shù)初始化為0 while( n != 0 ) /當n非0,重復(fù)如下操作 n = n/10; /扔掉n的個位數(shù)字 digits+; /位數(shù)加1 printf(%dn,digits); return 0; if(n = 0 )digits = 1;while循環(huán):當n!=0為真時,重復(fù)執(zhí)行
48、循環(huán)體本程序有bug。考慮:如果輸入0,輸出什么? C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計練習(xí) 輸入一個正整數(shù)n,逆序輸出n的各位數(shù)字,用空格隔開。 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.5.4 do_while語句先執(zhí)行一次循環(huán)先執(zhí)行一次循環(huán)后判斷后判斷dowhile語句v一般形式:do 循環(huán)體語句; while(expression);v執(zhí)行流程:do循環(huán)體expr假(0)真(非0)while C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計 while 是先判別條件,再決定是否循環(huán); do-while 是先至少循環(huán)一次,然后再根據(jù)循環(huán)的結(jié)果決定是否繼續(xù)循環(huán)。while語句和do-whil
49、e語句的比較真真假假表達式表達式循環(huán)體語句循環(huán)體語句do-while的下一條語句的下一條語句真真假假while的下一條語句的下一條語句表達式表達式循環(huán)體語句循環(huán)體語句 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計用while語句實現(xiàn)求位數(shù)/ 求n的位數(shù)int main() int n, digits; scanf(%d,&n); if(n = 0 )digits = 1; digits = 0; /位數(shù)初始化為0 while( n != 0 ) /當n非0,重復(fù)如下操作 n = n/10; /扔掉n的個位數(shù)字 digits+; /位數(shù)加1 printf(%dn,digits); retur
50、n 0; 當n為0時,while循環(huán)一次也不執(zhí)行,所以digits為0;故必須加上語句 if(n = 0 )digits = 1;用do_while語句實現(xiàn)求位數(shù)#includeint main() int n, digits; scanf(%d,&n); digits = 0; /位數(shù)初始化為0 do n = n/10; /扔掉n的個位數(shù)字 digits+; /位數(shù)加1 while( n != 0 ) printf(%dn, digits); return 0; 即使n為0,也執(zhí)行了一次循環(huán),所以digits增為1,不必再對n為0的情況做特殊處理。 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程
51、序設(shè)計練習(xí) 從鍵盤輸入一批學(xué)生的成績,輸出最高分。輸入從鍵盤輸入一批學(xué)生的成績,輸出最高分。輸入負數(shù)表示輸入結(jié)束。負數(shù)表示輸入結(jié)束。 (注意變量的初始化注意變量的初始化) C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.6 打印素數(shù)表解決問題:輸出100以內(nèi)的所有素數(shù)。思路分析:對n=2、3、.100,做 判斷n是否是素數(shù),若是素數(shù)則輸出n的值 判斷n是否是素數(shù),也需要用循環(huán)實現(xiàn): k=sqrt(n); flag=0; for(i=2; i=k; i+) if(n%i=0) flag=1; break; if(falg = 0)輸出nfor(n=2; n=100; n+) k=sqrt(n); f
52、lag=0; for(i=2; i=k; i+) if(n%i=0) flag=1; break; if(flag=0) printf(%d , n);判斷n是否是素數(shù),若是則輸出n C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.6.1 多重循環(huán) 如果循環(huán)語句的循環(huán)體內(nèi)又包含了另一條循環(huán)語句,則稱為多重循環(huán),或循環(huán)的嵌套。for(i=0; i=m; i+) . for(j=0; j=n; j+) . .由i控制的外部循環(huán),每執(zhí)行一次循環(huán)體,都執(zhí)行由j控制的內(nèi)部循環(huán)(j由0變到n)。左側(cè)的二重循環(huán)最內(nèi)層的循環(huán)體會執(zhí)行m*n次其實循環(huán)可以嵌套任意多層。 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計變量初
53、始化的位置 初學(xué)多重循環(huán),最容易犯的錯誤時變量初始化的位置不對。flag=0;for(n=2; n=100; n+) k=sqrt(n); for(i=2; i=k; i+) if(n%i=0) flag=1; break; if(flag=0) printf(%d , n);將左側(cè)打印素數(shù)表的程序段改寫成程序后,運行結(jié)果是:2 3分析原因到VC中單步執(zhí)行,發(fā)現(xiàn)當n為4時,flag被置為1之后,其值始終是1,所以4以后的數(shù)都沒有被輸出。flag=1;變量初始化位置不對應(yīng)該放在每次內(nèi)循環(huán)開始前flag=0; C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.6.2 n元錢買n只雞 解決問題:n元錢買n
54、只雞。 經(jīng)典的百錢買百雞問題是:公雞五文錢一只,母雞三文錢一只,雞仔一文錢三只,用100文錢買100只雞,公雞、母雞、雞仔各買多少只? 本程序要求解的問題是:給定一個正整數(shù)n,用n文錢買n只雞,問公雞、母雞、雞仔各買多少只? 如果問題有解,輸出所有解,每個解占一行,每個整數(shù)用空格隔開;如果問題無解,則輸出” No answer”。問題分析:三個變量,兩個約束條件,如何求解?計算機解決這類問題用的方法是枚舉。枚舉是常用計算思維方法之一。思路分析(1)用flag作為有無解的狀態(tài)標志(2)枚舉公雞的個數(shù),i從0到n/5逐個嘗試 枚舉母雞的個數(shù),j從1到n/3逐個嘗試 雞仔個數(shù)為n-i-j; 若i個公
55、雞,j個母雞和,k個雞仔價格為n 則輸出一個解, 并置標志flag為1; 若flag=0,輸出“No answer”。 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計#includeint main() int i, j, k, n, flag; scanf(%d,&n); flag=0; /flag為有無解標志,有解為1,無解為0 for(i=0; i=n/5; i+) /窮舉公雞的可能個數(shù) for(j=0; j=n/3; j+) /窮舉母雞的可能個數(shù) k=n-i-j; /其余是雞仔 if( i*15+j*9+k = n*3) /若i, j和k滿足要求 printf(“%d %d %dn”
56、, i, j, k); /輸出一個解 flag=1; /有解標志置為1 if (flag=0) /若無解 printf(No answern); return 0;為什么寫為i*15+j*9+k = n*3,而不是是i*5+j*3+k/3=n到VC中試試,分析為何要避免整數(shù)除法或小數(shù)運算 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計4.6.3 goto 語句 繼續(xù)考慮4.14的n元錢買n只雞的問題,若問題的輸出要求變?yōu)椋喝粲薪?,只輸出一個解,即公雞數(shù)量最少的那個解;若無解,輸出” No answer”。問題分析:找到第一個解后如何讓求解過程結(jié)束?方法一:使用break語句,可以實現(xiàn),不過要注意br
57、eak語句只能停止本層循環(huán),不能停止外層循環(huán),結(jié)束多層循環(huán)需要較為復(fù)雜的邏輯。方法二:使用goto語句。 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計方法一:用break語句結(jié)束多層循環(huán)flag=0; for(i=0; i=n/5; i+) for(j=0; j=n/3; j+) k=n-i-j; if( i*15+j*9+k = n*3) /若找到一個解 printf(“%d %d %dn”, i, j, k); /輸出一個解 flag=1; /有解標志置為1 break; /結(jié)束循環(huán)內(nèi)循環(huán)(由j控制的循環(huán)) if(flag=1) break; /若已找到解,結(jié)束外循環(huán)(由i控制的循環(huán)) if
58、(flag=0) /若無解 printf(No answern);若找到解,用break結(jié)束內(nèi)層循環(huán),在外層循環(huán)中也要加上:若flag為1, 結(jié)束外層循環(huán) C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計方法二:使用goto語句跳出多重循環(huán)flag=0; for(i=0; i=n/5; i+) for(j=0; j=n/3; j+) k=n-i-j; if( i*15+j*9+k = n*3) /若找到一個解 printf(“%d %d %dn”, i, j, k); /輸出一個解 flag=1; /有解標志置為1 goto PRN; /使用goto語句直接跳轉(zhuǎn)到循環(huán)結(jié)構(gòu)之后的語句 PRN: if (
59、flag=0) /若無解 printf(No answern); PRN為語句標號,標示程序的特定位置Goto PRN; 直接跳轉(zhuǎn)到語句標號為PRN的位置 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計goto語句的使用 goto語句格式:格式: goto 語句標號語句標號; 語句標號:語句標號是一個標示符加一個冒號組成,它標示程序地一個特定位置,一般放在一段可執(zhí)行語句的左邊。功能:將程序轉(zhuǎn)到指定的位置功能:將程序轉(zhuǎn)到指定的位置繼續(xù)繼續(xù)執(zhí)行g(shù)oto語句是一個古老的語句,是循環(huán)語句的前身(在計算機發(fā)展的早期,程序就是由幾個語句+語句標號+跳轉(zhuǎn)語句組成的) goto語句如何實現(xiàn)循環(huán)?#includein
60、t main() int sum,i; sum=0; i=1;loop: sum=sum+i; i+; if(i=100) goto loop; printf(%dn,sum); return 0;如果i=100,跳轉(zhuǎn)到loop處,從而實現(xiàn)循環(huán)goto語句通常不用,主要因為它將使程序?qū)哟尾磺?且不易讀,且?guī)黼[患。但在多層嵌套退出時, 用goto語句則比較合理 C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計 題目的輸入數(shù)據(jù)和輸出數(shù)據(jù)有多組(不定),對每一組輸入都應(yīng)有相應(yīng)的輸出。也就是運行一次程序進行多次計算。通過循環(huán)來實現(xiàn)通過循環(huán)來實現(xiàn)4.7 多實例測試多實例測試先從先從a+b開始:開始: C語言程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計初學(xué)者很常見的一種寫法:初學(xué)者很常見的一種寫法:#includeint main() int a,b; scanf(“%d %d”,&a,
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 岸坡拋石工程施工方案
- 環(huán)保技術(shù)引領(lǐng)未來環(huán)境科學(xué)與城市發(fā)展
- 中小學(xué)生欺凌專項治理行動方案
- 現(xiàn)代通信技術(shù)在教育領(lǐng)域的應(yīng)用
- 2024年四年級英語上冊 Module 5 Unit 2 Can Sam play football說課稿 外研版(三起)001
- 2024八年級英語下冊 Unit 2 Plant a PlantLesson 7 Planting Trees說課稿(新版)冀教版
- 2024新教材高中政治 第二單元 經(jīng)濟發(fā)展與社會進步 第四課 我國的個人收入分配與社會保障 4.1《我國的個人收入分配》說課稿 部編版必修2
- Module4 Unit1 Mum bought a new T-shirt for me(說課稿)-2024-2025學(xué)年外研版(三起)英語五年級上冊
- 《6 蛋殼與薄殼結(jié)構(gòu)》(說課稿)-2023-2024學(xué)年五年級下冊科學(xué)蘇教版
- 2025北京市勞務(wù)分包合同范本問題范本
- 《住院患者身體約束的護理》團體標準解讀課件
- 中國心力衰竭診斷與治療指南解讀
- API520-安全閥計算PART1(中文版)
- 醫(yī)院信息科考核內(nèi)容標準細則
- 商務(wù)提成辦法
- 《統(tǒng)計學(xué)》完整袁衛(wèi)-賈俊平課件
- FZ/T 25001-1992工業(yè)用毛氈
- 電商部售后客服績效考核表
- 小提琴協(xié)奏曲《梁祝》譜
- 人教版高中化學(xué)必修一第一章《物質(zhì)及其變化》教學(xué)課件
- 復(fù)工復(fù)產(chǎn)工作方案范本【復(fù)產(chǎn)復(fù)工安全工作方案】
評論
0/150
提交評論