實驗五 循環(huán)結(jié)構(gòu)程序設(shè)計_第1頁
實驗五 循環(huán)結(jié)構(gòu)程序設(shè)計_第2頁
實驗五 循環(huán)結(jié)構(gòu)程序設(shè)計_第3頁
實驗五 循環(huán)結(jié)構(gòu)程序設(shè)計_第4頁
實驗五 循環(huán)結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

實驗五循環(huán)結(jié)構(gòu)程序設(shè)計一?實驗?zāi)康氖煜ぱ瓑慕Y(jié)構(gòu)程序設(shè)計的三種控制語句while、do—while、for語句的使用方法,體會三種循壞語句的異同,能在不同情況下正確選用循環(huán)語句。掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)各種常用算法。掌握break語句和continue語句的作用與使用方法。掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套,能在程序設(shè)計中用循壞的方法實現(xiàn)各種常用算法。二、實驗內(nèi)容題目1閱讀程序、加注釋,并給出運行結(jié)果do-wlule語句的使用。存include<stdio.h>voidmain()imtsum,counter;sum=0:counter=l;do{sum=sum+counter;counter=countei+1;}while(counter<=100);pnntfpl+2+3+ +100=%d,ur\countei);}運行結(jié)果:1+2+3+ +100=101 switch語句的使用。存include<stdio.h>voidiint11X41Y;for(nY=0jiX=l:iiX<4;nX++)if(nY=2){switch(iiX)11X-=11Y;continue;}case1:pnntf(“x=%d:nX);contmue;case2:pnnt&“x+y=%d"jiX+nY);break;case3:prmtf(c<x*y=%d:nX*nY);contmue;case4:pnnt&“x?y=%d二nXmY);break;}pnntfC4y=%d,\++nY);運行結(jié)果x=l;x+y=2;y=l;x*y=3 for語句的使用lo^include<stdio.h>main(){iiitk=0411=0:intij;for(i=0;i<2;i-H-){for(j=0:j<3;j++)k卄;k亠J;}m=Hj;pnntf(,>k=%d>m=%d,\k.m);}A.k=0、m=3E?k=0,m=5C?k=Lm=3D?k=l,m=5以上程序的輸出結(jié)果是: E fo[循環(huán)的使用2。#include<stdio.h>voidniaiii(){iiitm.n;for(n=1:n<=9;n=n+1){for(m=1;m<=n;m=m+1)pnmfC%Nd役m);prmtf(n\nH);}運行結(jié)果:}1121231234123451234561234567123456781234567 8 9continue語句的使用。#mclude<stdio.h>maiii(){uit1=1j=l;foi(;j<10j++){if(j>5)break;if(j%2!=0){j+=3;continue;}j?T;}piintfC%d,%d\n”、iJ);}運行結(jié)果: 1,9 break語句的使用。#iiiclude<stdio.h>voidniainQintiiX=1,nY=0;do{wliile(iiX=0){pnntfCy=%dm二nY);11Y++;if(nY>3)break;}piiiitf(ux=%dm‘:nX);if(nY=4)continue;nX_;}wliile(!iiX);}運行結(jié)果:三重循環(huán)的使用。有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?1.程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、4o組成所有的排列后再去掉不滿足條件的排列。程序源代碼如下:器include"stdio.h"voidmainQ{intij,k;pnntf("『);fbr(i=l;i<5;i++)fbr(j=lJ<5J-H-)for(k=l;k<5;k++){if(i!=k&&i!=j&&j!=k)printf("%d,%d,%d}}運行結(jié)果: 循環(huán)嵌套例。一個整數(shù),它加上100后是一個完全平方數(shù),再加上268又是一個完全平方數(shù),請問該數(shù)是多少?程序分析:在10萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后的結(jié)果滿足如下條件,即是結(jié)果。程序源代碼如下:^include"math.h"器include"stdio.h"voidmainQ{longmti、x,y,z;for(i=l;i<100000;i++)x=sqrt(i+100);y=sqrt(i+268);if(x*x=i+100&&y*y==i+268)題目2程序填空(請?zhí)顚戇m當(dāng)?shù)姆柣蛘Z句,使程序?qū)崿F(xiàn)其功能)F列程序的功能為:用輾轉(zhuǎn)相除法求兩個正整數(shù)的最人公約數(shù)?!拜氜D(zhuǎn)相除法”求兩個正整數(shù)的最人公約數(shù)的算法提示如卞:將兩數(shù)中大的那個數(shù)放在m中,小的放在n中。求出m被a除后的余數(shù)。若余數(shù)為0則執(zhí)行步驟⑦;否則執(zhí)行步驟④。把除數(shù)作為新的被除數(shù):把余數(shù)作為新的除數(shù)。求出新的余數(shù)。重復(fù)步驟③到⑤。輸出m11即為最人公約數(shù)。#include<stdio.h>voidmain0{iiita.bjnjiJ;prmtf(Hpleasemputtwonumbers:\nH);scaiif(,,%d.%d,\&nL&n);if(m<n)〃交換兩個數(shù),使人數(shù)放在m上{ ? }a=m:b=n;while(b!=0) //利用輾除法,直到b為0為止{②jpriiitf(ngong\7ueshu:%d'ii'\a);}F列程序的功能為:計算1020個西瓜幾天后能賣完(第一天賣了一半多兩個,以后每天賣剩的一半多兩個)。#include<stdio.h>voidmain(){iiitday.xl,x2;day=O;xl=1020;wliile(① ){ x2= ② ;xl=x2;day++;}prmtf(nday=%d\ir\day);}⑶下列程序的功能為:輸入一個正整數(shù),求取該數(shù)的位數(shù)及倒序數(shù)(1234的倒序數(shù)為4321)o#include<stdio.h>voidmain()iiitnjn=O;pnmf(”輸入一個整數(shù)J;scaiif(,,%d,\&n);while(① ){m=m*② ;n/=10;});}⑷輸入一行字符(以回車作為結(jié)束),分別統(tǒng)計出其中英文字母、空格、數(shù)字和其他字符的個數(shù)。#include<stdio.h>voidmaiii(void){chaich;intchai_num=0,space_num=0,digit_num=0.othei_num=0;while((ch=getchai())!=,\nr)//回車鍵結(jié)束輸入,并且回車符不計入f改①){char_num++;}_elseif(ch==② ){space_num++;}elseifi③ ){disit_num++;}else{other_num++;}}printfC1字母=%d,空格=%d'ii,\chai_nunLspace^num);prmtf(H數(shù)字=%d,其它=%d\n,\digit_nunKothei_num);}F面程序的功能是:輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù)。^include<stdio.h>voidmain(){intij;for(i=0; i++){J=i*10+6;if( ② )continue;pnntf”%dS打);}}F面程序的功能是計算1-3+5-7+...-99+101的值,請?zhí)羁?。^include<stdio.h>voidniainQ{inti,t=l,s=O;for(i=1;i<=101;i+=2){—s=s+t;一②:}pnntf(“%dm:s);}F面程序的功能是統(tǒng)計用數(shù)字0'9可以組成多少個沒有重復(fù)的3位偶數(shù),請?zhí)羁?。存include<stdio.h>voidmain(){mtnjj,k;n=0;for(i=l;i<=9;i-H-)for(k=0;k<=8;①)if(k!=i)for(j=0J<=9J++)if(②){n++;printf(,,%d%d%dfl,ij,k);}printf(c<n=%d,,n,\n);}F列程序的功能為:用“奇數(shù)”構(gòu)成的三角形,行數(shù)n從鍵盤輸入。若n為5時,結(jié)呆如圖4-3所示,請?zhí)顚戇m當(dāng)?shù)姆柣蛘Z句,使程序?qū)崿F(xiàn)其功能。13579111315171921232527 29#mclude<stdio.h>mainQ{mtij衛(wèi)、k;scanfC%cT、&ii);fbi(k=-lj=1;i<=n;i++){? ;i++)printf(H%4cH;?);for(i=l;?;i++)pnntf(M%4d,\k=? );}}題目3改錯題1(請糾正程序中存在錯誤,使程序?qū)崿F(xiàn)其功能)下列程序的功能為:倒序打印26個英文字母。#mclude<stdio.h>voidmain(){ charx;x=N; 〃①while(x?=,a,)

{prmtf(H%3c”,x);〃②}}以卞程序功能為:有4個數(shù)要求按從人到小的順序輸出。#include<stdio.h>main(){mtabcdt;scanf(“%d,%d,%d,%d"、&乂&b,&c、&d);if(a<b)t=a;a=b;b=t;//?if(c<d)t=c;c=d;d=t;〃②if(a<c)t=a;a=c;c=t;〃③if(b<c)t=b;b=c;c=t;〃④if(b<d)t=b;b=d;d=t;〃⑤if(c<d)t=c;=d;d=t;//?printf(M%d%d%d%d\nH,a,b,c.d);}題目4改錯題2(請糾正程序中存在錯誤,使程序?qū)崿F(xiàn)其功能)⑴輸入某課程的成績(學(xué)生人數(shù)未知,以負(fù)數(shù)作為輸入結(jié)束,人于100視為無效成績),求課程成績的平均分。#iiiclude<stdio.h>voidmain(){ floatscore,sum=0.average;iiitpersons=0;while(l){ scanf(n%f\&scoie);if(score<0)continue; 〃①elseif(score>100)break; //②else{sum+=scoie;peisons++;j}aveiage=(float)(suni/peisons);piiiitf(nperson=%d.aveiagescore=%f\nH.persons,average);}⑵下列程序的功能為:輸出如下的圖形,要求頂端的*定位在第21字符位置。*************#include<stdio.h>voidmain(){mtij;for(i=0;i<4;i++){血(J=0;j<=20;j卄) 〃①〃②for(j=0j<2*i+lJ++)〃③pnntff*”);〃③}下列程序的功能為:從鍵盤上輸入123,輸出結(jié)果是54656。請糾正程序中存在錯誤,使程序?qū)崿F(xiàn)其功能。#iiiclude<stdio.h>main()TOC\o"1-5"\h\z{mtc; //?wliile(c=getchar()!=心) 〃②{switch(c-l){caseO:caseT:putchar(c+4);case2:putchar(c+3); 〃③case3*:putchar(c+2);case4:putchar(c+l);}}pimtfC'Xn");}題目5分別用while、do-wlule>for語句編程,求數(shù)列前20項之和:2/1,3/2,5/3,8/5,13/8 試畫出流程圖;編寫程序:運行結(jié)果截屏。算法提示:定義實變量sum、term、a、b、c,整變量i初始化:sum=0,分子a=2,分母b=l初始化:1(計數(shù)器)=1計算第i項term=3/1)累力0sum=sum+term計算c=a+b,更新b=a,更新a=c計數(shù)器加1,1卄重復(fù)4、5、6、7,直到i>20輸出2位精度的結(jié)果(例如:數(shù)列前20項和=**)題目6編程題求n!=l*2*3*???*n計算多項式的值:s=l汁2!+3汁4汁…+20!算法提示:該多項式迭代公式為:n=n*i,sum=sum+n注意:那些變量需要初始化?變量應(yīng)采用什么類型?試畫出流程圖;編寫程序;上機運行結(jié)果;把每一次迭代結(jié)果輸出,程序應(yīng)做怎樣的修改?如果程序中只需要修改一處就可以改變所求和的項數(shù),程序應(yīng)做怎樣的修改?打印輸出100-200之間的素數(shù)。編寫一個程序,輸出所有這樣的三位數(shù)(水仙花數(shù)):這個三位數(shù)本身恰好等于其每個數(shù)字的立方和(如153=P+53+33)。三、思考題1.分析各種循壞控制語句的區(qū)別?break、continue語句的區(qū)別?2?求20以內(nèi)的能被3或5整除的數(shù)的階乘的累加和(即求3!+5!+6!+9!+…+20!)求Sn

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論