版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社 C語言程序設(shè)計(jì)(第3版)張磊編著, 2012年10月清華大學(xué)出版社出版。 該教材面向程序設(shè)計(jì)初學(xué)者編寫, 適合將C語言作為第一門程序設(shè)計(jì)語言的高校學(xué)生。 該教材理論教學(xué)和實(shí)驗(yàn)教學(xué)合二為一, 在每章之后均設(shè)有實(shí)驗(yàn)指導(dǎo)。實(shí)驗(yàn)指導(dǎo)分為基礎(chǔ)實(shí)驗(yàn)和綜合實(shí)驗(yàn)兩部分。 基礎(chǔ)實(shí)驗(yàn)緊密結(jié)合教材中的例題程序設(shè)置,以“理解驗(yàn)證完善擴(kuò)充提高”為實(shí)驗(yàn)教學(xué)線索,重在鞏固課堂教學(xué)知識(shí),提高調(diào)試程序及完善程序的能力; 綜合實(shí)驗(yàn)以算法設(shè)計(jì)和程序?qū)崿F(xiàn)為重點(diǎn),訓(xùn)練運(yùn)用所學(xué)知識(shí)解決實(shí)際問題的能力。 該教材同時(shí)配有程序資源和試題庫(kù)。 Email:C語言程序設(shè)計(jì)(第3版)課件C語言程序設(shè)
2、計(jì)(第3版)張磊編著 清華大學(xué)出版社C語言程序設(shè)計(jì)第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) C語言程序設(shè)計(jì)(第3版) 張 磊 編著 21世紀(jì)高等學(xué)校規(guī)劃教材 清華大學(xué)出版社C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)4.1 while循環(huán)結(jié)構(gòu)程序 4.2 do-while循環(huán)結(jié)構(gòu)程序 4.3 for循環(huán)結(jié)構(gòu)程序 4.4 循環(huán)體中的控制命令 4.5 多重循環(huán)程序 4.6 循環(huán)結(jié)構(gòu)應(yīng)用舉例C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.1 while循環(huán)結(jié)構(gòu)程序4.1.1 while循環(huán)程序示例 4.1.2 while語句4.1.3 自增、自減運(yùn)算 C語言程序設(shè)計(jì)(第3版)張磊編著
3、 清華大學(xué)出版社4.1.1 while循環(huán)程序示例 例4-1計(jì)算1到n的自然數(shù)的累加和。#includevoid main()int n,i=1,s=0;printf(n=);scanf(%d,&n);while(i=n)s=s+i;i=i+1;printf(Sum=%dn,s); 程序解析本例題程序與第1章的計(jì)算1到100的自然數(shù)累加和程序相似,不同之處是,本程序的自然數(shù)的累計(jì)范圍是可變的,取決于每次運(yùn)行程序時(shí)輸入的變量n值。該程序的循環(huán)控制結(jié)構(gòu)由while語句實(shí)現(xiàn),while的循環(huán)控制條件是i=n,每次循環(huán)執(zhí)行的語句是while之后花括號(hào)“”和“”的之間的語句,這一組語句稱為while語句
4、的循環(huán)體。C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.1.2 while語句while語句的一般形式 while(表達(dá)式) 語句組 其中:“表達(dá)式”是循環(huán)條件,“語句組”是循環(huán)體。while語句執(zhí)行過程 計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí),執(zhí)行循環(huán)體語句; 重復(fù)過程,直到表達(dá)式的值為0時(shí)結(jié)束while語句。C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.1.2 while語句例4-2 輸入一批自然數(shù),求它們的累加和,當(dāng)輸入數(shù)值為-1時(shí),結(jié)束求和過程。#includevoid main()int n,sum=0;printf(Data: );scanf(%d,&n);while(n!
5、=-1) /* 當(dāng)n不是-1時(shí),執(zhí)行循環(huán)體 */sum=sum+n; /* 將n累加到sum中 */ scanf(%d,&n);printf(Sum=%dn,sum);C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.1.2 while語句例4-3 計(jì)算10!。 /* program e4-3.c */#includevoid main()int i,t=1;i=1;while(i=10)t=t*i;i+;printf(Result: %dn,t); C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.1.3 自增、自減運(yùn)算 自增運(yùn)算和自減運(yùn)算的運(yùn)算符分別是+和-,該類運(yùn)算只適用于整型變量,
6、其功能是對(duì)參加運(yùn)算的變量進(jìn)行加1或減1操作。自增、自減運(yùn)算的用法及功能用法功能+變量名變量先自增,然后再使用-變量名變量先自減,然后再使用變量名+變量先使用,然后再自增變量名-變量先使用,然后再自減 自增、自減運(yùn)算實(shí)例用法功能表達(dá)式表達(dá)式的值表達(dá)式求值后x的值+xx先增1,然后再使用+x+5116-xx先減1,然后再使用-x+594x+先使用x,然后x增15+x+106x-先使用x,然后x減15+x-104C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.2 do-while循環(huán)結(jié)構(gòu)程序4.2.1 do-while循環(huán)程序示例4.2.2 do-while 語句C語言程序設(shè)計(jì)(第3版)張磊編著
7、 清華大學(xué)出版社4.2.1 do-while循環(huán)程序示例程序#includevoid main() int n=0,sum=0; do sum=sum+n; printf(Data: ); scanf(%d,&n); while(n!=-1); printf(Sum=%dn,sum); 程序解析該程序使用do-while結(jié)構(gòu)進(jìn)行循環(huán)控制,do后面的“”和“”之間的語句是其循環(huán)體,while后面的“n!=-1”是循環(huán)控制條件。執(zhí)行do-while語句時(shí),先執(zhí)行一次循環(huán)體語句,然后再判斷循環(huán)條件n!=-1是否成立,若該條件成立,則繼續(xù)執(zhí)行循環(huán)體;否則,結(jié)束do-while語句,執(zhí)行其下的print
8、f語句,輸出累加結(jié)果。 例4-5 用do-while結(jié)構(gòu)設(shè)計(jì)程序,處理不定數(shù)目的自然數(shù)累加問題。C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.2.2 do-while語句一般形式do 循環(huán)體語句組 while(表達(dá)式);執(zhí)行過程先執(zhí)行循環(huán)體,然后再判斷表達(dá)式是否為真(非0), 如果為真則繼續(xù)循環(huán);否則終止循環(huán)。do-while循環(huán)至少要執(zhí)行一次循環(huán)體語句。C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.2.2 do-while語句#includevoid main() int n=0,sum=0; do sum=sum+n; printf(Data: ); scanf(%d,&n);
9、 while(n!=-1); printf(Sum=%dn,sum);補(bǔ)充:用do-while結(jié)構(gòu)設(shè)計(jì)程序,處理不定數(shù)目的自然數(shù)累加問題。C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.3 for循環(huán)結(jié)構(gòu)程序4.3.1 for循環(huán)程序示例4.3.2 for語句4.3.3 逗號(hào)表達(dá)式 C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社5.2.1 for循環(huán)程序示例例4-6 計(jì)算n!的程序。 /* program e6-6.c */#includevoid main()int t=1,i,n; printf(n=);scanf(%d,&n);for(i=1;i=n;i+)t=t*i;printf
10、(%d!=%dn,n,t);C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.3.2 for語句 一般形式for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語句組for語句執(zhí)行過程 求解“表達(dá)式1”; 求解“表達(dá)式2”,若其值非0, 則執(zhí)行; 否則,結(jié)束循環(huán); 執(zhí)行“循環(huán)體語句組”; 求解“表達(dá)式3”; 轉(zhuǎn)繼續(xù)執(zhí)行;for循環(huán)語句的循環(huán)控制過程與下列結(jié)構(gòu)等價(jià)。表達(dá)式1;while(表達(dá)式2) 循環(huán)體語句組 表達(dá)式3;C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.3.2 for語句 下面的程序與程序完全等價(jià),注意比較二者之間的區(qū)別。/* program e4-6-1.c */#include
11、void main()int t,i,n; printf(請(qǐng)輸入一個(gè)整數(shù):);scanf(%d,&n);for(t=1,i=1;i=n;i+)t=t*i;printf(%d!=%dn,n,t);C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.3.3 逗號(hào)表達(dá)式 C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.4 循環(huán)體中的控制命令4.4.1 break語句4.4.2 continue語句C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.4.1 break語句只有兩種情況可以使用break命令在switch結(jié)構(gòu)中,用break命令終止正在執(zhí)行的switch流程;在while、do-wh
12、ile和for語句的循環(huán)體中使用break命令,強(qiáng)制終止當(dāng)前循環(huán)。 C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.4.1 break語句例4-7 不定數(shù)目的自然數(shù)累加。/* program e4-7.c */#includevoid main()int n,sum=0;while(1)printf(Data: );scanf(%d,&n);if(n=-1)break;sum=sum+n;printf(Sum=%dn,sum);C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.4.2 continue命令continue語句只用在for、while、do-while等循環(huán)體中,常與if條
13、件語句一起使用 。 continue語句的作用是跳過循環(huán)體中剩余的語句而強(qiáng)行執(zhí)行下一次循環(huán)。C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.4.2 continue命令例4-8 把100200范圍內(nèi)不能被3整除的數(shù)輸出。/* program e4-8.c */#includevoid main()int n;for(n=100;n=200;n+)if(n%3=0)continue; printf(%5d,n);C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.5 多重循環(huán)4.5.1 多重循環(huán)程序示例4.5.2 多重循環(huán)的一般結(jié)構(gòu)C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.5.1
14、多重循環(huán)程序示例在循環(huán)結(jié)構(gòu)中,如果在一個(gè)循環(huán)體內(nèi)又包含了另一個(gè)完整的循環(huán)結(jié)構(gòu),就構(gòu)成了多重循環(huán),也稱為循環(huán)的嵌套。嵌在循環(huán)體內(nèi)的循環(huán)稱為內(nèi)循環(huán),嵌有內(nèi)循環(huán)的循環(huán)稱為外循環(huán)。顯然,在多重循環(huán)中,內(nèi)循環(huán)和外循環(huán)的概念具有相對(duì)性,一個(gè)內(nèi)循環(huán)的循環(huán)體中,還可以嵌入其他的循環(huán)結(jié)構(gòu)。C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.5.1 多重循環(huán)程序示例例4-9 輸出如下&三角圖形,共10行,&數(shù)目逐行加1。&/* program e4-9-1.c */#includevoid main() int row,col; for(row=1;row=10;row+) for(col=1;col=a&ch=
15、z2.程序?qū)崿F(xiàn)#includevoid main()int count=0;char ch;printf(Input a string: );ch=getchar(); while(ch!=n)if(ch=a&ch=z)count+; ch=getchar(); printf(%d,count); C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.6.2 比賽評(píng)分例4-11 比賽評(píng)分問題。比賽有6位評(píng)委,每位評(píng)委按照百分制為選手打分,去掉一個(gè)最高分和一個(gè)最低分后,計(jì)算出的平均分為比賽選手得分。1問題分析與算法設(shè)計(jì) 輸入數(shù)據(jù),即輸入評(píng)委對(duì)選手的打分; 找出一個(gè)最高分,找出一個(gè)最低分; 計(jì)算平均
16、分。2. 程序?qū)崿F(xiàn)/* program e4-11.c */#include#define N 6 void main() int i,max=0,min=100; int score,sum=0; for(i=1;i=N;i+) printf(Input score %d: ,i); scanf(%d,&score); if(maxscore) min=score; sum+=score; printf(Average score:%dn,(sum-max-min)/(N-2);C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.6.3 學(xué)生成績(jī)分等統(tǒng)計(jì)例4-12 一個(gè)班級(jí)有N名學(xué)生,每個(gè)學(xué)
17、生有兩門課程,實(shí)行百分制考核,要求分等級(jí)統(tǒng)計(jì)各個(gè)等級(jí)的人數(shù)。成績(jī)分等的標(biāo)準(zhǔn)如下:優(yōu)秀(excellence) 平均成績(jī)90良好(all right) 80平均成績(jī)90中等(middling) 70平均成績(jī)80及格(pass) 60平均成績(jī)70不及格(fail) 平均成績(jī)601問題分析與算法設(shè)計(jì) 輸入一個(gè)學(xué)生的兩門課成績(jī); 計(jì)算該學(xué)生的平均成績(jī); 按平均成績(jī)分等統(tǒng)計(jì); 重復(fù)以上三個(gè)步驟,直到這個(gè)班級(jí)的學(xué)生數(shù)據(jù)處理完為止; 輸出統(tǒng)計(jì)結(jié)果。C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.6.3 學(xué)生成績(jī)分等統(tǒng)計(jì)算法的粗略流程圖 “一個(gè)學(xué)生數(shù)據(jù)的輸入和統(tǒng)計(jì)”框的流程圖 2實(shí)現(xiàn)程序 C語言程序設(shè)計(jì)(
18、第3版)張磊編著 清華大學(xué)出版社4.6.3 學(xué)生成績(jī)分等統(tǒng)計(jì)#include#define N 5 /* 班級(jí)人數(shù)為5 */void main()int a,b,ave,i;int s1,s2,s3,s4,s5; /* 定義各等級(jí)的統(tǒng)計(jì)變量 */s1=s2=s3=s4=s5=0; /* 為統(tǒng)計(jì)變量賦初值 */for(i=1;i=N;i+)printf(Input data(a,b): );scanf(%d,%d,&a,&b); /* 輸入一個(gè)學(xué)生的兩門課成績(jī) */ave=(a+b)/2; switch(ave/10) case 10:case 9: s1+; break; case 8: s2
19、+; break;case 7: s3+; break;case 6: s4+; break;default: s5+;printf(excellence: %dn,s1);printf(all right: %dn,s2);printf(middling: %dn,s3);printf(pass: %dn,s4);printf(fail: %dn,s5);C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.6.4 最大公約數(shù) 例4-13 求兩個(gè)整數(shù)的最大公約數(shù)。問題分析與算法設(shè)計(jì)兩個(gè)數(shù)相除,若余數(shù)為0,則除數(shù)就是這兩個(gè)數(shù)的最大公約數(shù);若余數(shù)不為0,則以除數(shù)作為新的被除數(shù),以余數(shù)作為新的除數(shù),
20、繼續(xù)相除,直到余數(shù)為0時(shí),除數(shù)即為兩數(shù)的最大公約數(shù)。/* program e4-13.c */#includevoid main()int a,b,t;printf(Input a,b: );scanf (%d,%d,&a,&b);if(a2遞推的算法如下: 初始項(xiàng):f1=1,f2=1; 求一個(gè)新項(xiàng): f1+f2f; 為求下一個(gè)新項(xiàng)作準(zhǔn)備:f2f1,ff2; 重復(fù)、步驟,直到求出要求的項(xiàng)數(shù)為止。/* program e4-14.c */#include#define N 20void main ( )long int f,f1,f2;int i;f1=f2=1;printf(%10ld%10l
21、d,f1,f2); for(i=3;i=N;i+)f=f1+f2; f1=f2; f2=f;printf(%10ld,f); if(i%5=0) printf(n);C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.6.6 乘法表 例4-15 編寫一個(gè)程序,輸出如下所示的乘法表。1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=16 1*9=9 2*9=18 3*9=27 4*9=36 9*9=81問題分析與算法設(shè)計(jì)乘法表具有如下特點(diǎn): 共有9行; 每行的式子個(gè)數(shù)很有規(guī)律,即:屬于第幾行,就有幾個(gè)式子; 對(duì)于每一個(gè)式子,既與所在的
22、行數(shù)有關(guān),又與所在行上的具體位置有關(guān)。/* program e4-15.c */#includevoid main()int i,j;for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%-3d ,j,i,i*j);printf(n); C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.6.7 搬磚問題例4-16 有36塊磚,一次需要36人同時(shí)搬運(yùn),男青年每人搬4塊,女青年每人搬3塊,兒童兩人搬1塊。要求編寫程序,把可能的搬運(yùn)方案都找出來。/* program e4-16.c */#includevoid main() int x,y,z; for(x=
23、0;x=8;x+) for(y=0;y=11;y+) for(z=0;z=36;z=z+2) if(4*x+3*y+z/2=36)&(x+y+z=36) printf(men: %dn,x); printf(women: %dn,y); printf(children: %dn,z); C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.6.8 找素?cái)?shù)例4-17 設(shè)計(jì)一個(gè)程序,將100200之間的所有素?cái)?shù)都找出來。問題分析與算法設(shè)計(jì) 一個(gè)自然數(shù),若除了1和它本身外不能被其它整數(shù)整除,則該數(shù)為素?cái)?shù)。對(duì)于自然數(shù)k,只要依次測(cè)試能否被2,3,k-1整除即可,在測(cè)試中,若遇到能夠整除的情況,則k不是素?cái)?shù),測(cè)試過程即可停止,否則k是素?cái)?shù)。/* program e4-17.c */#include#includevoid main()int i,k,sk,flag;for(k=100;k=200;k+)flag=1;sk=sqrt(k);for(i=2;i=sk;i+)if(k%i=0)flag=0;break;if(flag=1)printf(%5d,k);printf(n); C語言程序設(shè)計(jì)(第3版)張磊編著 清華大學(xué)出版社4.6.9 哥德巴赫猜想 #include#includevoid main()int i,j,k,n,p1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 羽絨服飾行業(yè)美工設(shè)計(jì)心得
- 軟件開發(fā)行業(yè)安全生產(chǎn)工作總結(jié)
- 廣東省揭陽市榕城區(qū)2023-2024年六年級(jí)上學(xué)期英語期末試卷
- 2023-2024學(xué)年山東省濰坊市高二(下)期中地理試卷
- 2024年廣東省云浮市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2022年黑龍江省牡丹江市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年吉林省長(zhǎng)春市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年河南省安陽市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年透閃石項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2024年硬質(zhì)合金噴焊粉項(xiàng)目資金籌措計(jì)劃書
- 智能充電樁的管理與優(yōu)化調(diào)度
- 急診科副主任個(gè)人工作述職報(bào)告
- 硬件工程師年終總結(jié)報(bào)告
- 音樂盛典策劃方案
- 學(xué)校新媒體管理制度規(guī)章
- 狐貍的生物學(xué)
- 全球氣候變化和應(yīng)對(duì)措施
- 小麥冬季管理技術(shù)意見
- GB/T 16462.2-2023數(shù)控車床和車削中心檢驗(yàn)條件第2部分:立式機(jī)床幾何精度檢驗(yàn)
- DB4201T569.1-2018武漢市反恐怖防范系統(tǒng)管理規(guī)范 第1部分:通則
- 紙箱紙板材料安全數(shù)據(jù)說明書(MSDS)
評(píng)論
0/150
提交評(píng)論