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

下載本文檔

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

文檔簡介

實驗三循環(huán)結(jié)構(gòu)程序設(shè)計一、實驗學(xué)時4學(xué)時。二、實驗?zāi)康?.熟練掌握用while、do-while以及for2.理解循環(huán)條件和循環(huán)體的含義。理解循環(huán)結(jié)構(gòu)中語句的執(zhí)行過程。3.熟練掌握break和continue語句的功能及應(yīng)用。4.掌握應(yīng)用嵌套循環(huán)結(jié)構(gòu)進(jìn)行程序設(shè)計的方法。掌握應(yīng)用循環(huán)結(jié)構(gòu)及窮舉算法解決有關(guān)問題。三、實驗內(nèi)容程序調(diào)試1S=1!+2!+3!++n!的值,n10。輸入樣例:輸入樣例:請通過鍵盤輸入具體數(shù)據(jù)給變量n賦值:輸出樣例:1!+2!+3!++5!=153程序:#include<stdio.h>voidmain(){intn,i;longints,sum;printf("請通過鍵盤輸入具體數(shù)據(jù)給變量n賦值:");scanf("%d",&n);for(i=1;i<=n;i++){s=s*isum+=s;}printf("1!+2!+3!+...+%d!=%ld\n",n,sum);}按照前面章節(jié)實驗中介紹的步驟,保存源程序代碼。單擊編譯按Compil,出現(xiàn)第一條編譯錯誤信息是missing';'identifier'sum',改正后,重新編譯和連接,都正確。11行,光標(biāo)在第11單,程序運(yùn)行到光標(biāo)位置。在變量窗口中,第一次循環(huán)時i的值為1的值為5,正確;而s-858993460intlongints=1,sum;,改正后,重新編譯和連接,繼續(xù)進(jìn)行上述操作,這時s正確。鼠標(biāo)單擊第1212運(yùn)行到光標(biāo)位置。在變量窗口中,第一次循環(huán)時i1,s1,正確;而sumints,sum;改為longints=1,sum=0;,改正后,重新編譯和連接,繼續(xù)進(jìn)行上述操作,這時sum0把光標(biāo)定位到倒數(shù)第3行,單(RuntoCursor)按鈕,程序運(yùn)行到光標(biāo)1,sum1,顯示信息正確。單(StopDebugging)按鈕,程序調(diào)試結(jié)束。在程序調(diào)試的過程中,應(yīng)用了“運(yùn)行到光標(biāo)位置”的程序調(diào)試方法:即單擊 按鈕,的按鈕,斷點(diǎn)設(shè)置完畢。如果要取消已經(jīng)設(shè)置的斷點(diǎn),只需要將光標(biāo)移到要取消的斷點(diǎn)處,再次單擊按鈕 ,該斷點(diǎn)取消。(入變量名查看,這些變量的值是否與循環(huán)第一次運(yùn)行時一致。編程練習(xí)讀入一個正整數(shù)n,計算并輸出前n項之和s(6。S=1+1/4+1/7+1/10+1/13+1/16+?程序運(yùn)行結(jié)果輸入/輸出示例:輸入樣例:輸入樣例:請輸入n輸出樣例:S=1.392857參考程序如下:#include"stdio.h"voidmain(){inti,k,n;doublesum;printf("請輸入n的值:");scanf("%d",&n);sum=0;k=1;for(i=1;i<=n;++i){sum+=1/(double)k;k+=3;}printf("S=%lf\n",sum);}思考題1ns的值(保留6位小數(shù)絕對值小于n(6。S=1-1/4+1/7-1/10+1/13-1/16+?輸入樣例:輸入樣例:請輸入n輸出樣例:S=0.835699參考程序如下:#include"stdio.h"#include"math.h"voidmain(){inti,k,t;doublen;doublesum;printf("請輸入n的值:");scanf("%lf",&n);sum=0;t=1;k=1;while(fabs(t/(double)k)>n){sum+=t/(double)k;k+=3;t*=-1;}printf("S=%lf\n",sum);}輸入樣例:請輸入n輸出樣例:S=0.5512:讀入一個正整數(shù)n,計算并輸出前n項之和s(輸入樣例:請輸入n輸出樣例:S=0.551分析1:對于S,可以對n進(jìn)行分析,當(dāng)n為偶數(shù)時,正項個數(shù)與負(fù)項的個數(shù)相等;當(dāng)n為偶數(shù),正項個數(shù)比負(fù)項的個數(shù)多一項,可以將正項與負(fù)項分別進(jìn)行計算。參考程序:#include"stdio.h"voidmain(){inti,k,n;doublesum;printf("請輸入n的值:");scanf("%d",&n);sum=0;k=1;for(i1;i(n+1)/2;++i):1+3/7+5/13+?{sum+=(2*i-1)/(double)k;k+=6;}if(n%2==0) 區(qū)分n為偶數(shù)負(fù)數(shù)項的個數(shù)為n的一半{k=2;for(i=1;i<=n/2;++i){sum-=i/(double)k;k+=3;}}else 區(qū)分nn-1{k=2;for(i=1;i<=(n-1)/2;++i){sum-=i/(double)k;k+=3;}}printf("S=%.3lf\n",sum);}分析2:1 3 2 5 3 1 2 3 4 5 62 S1 L L5 13 8 1 4 7 10 13 162 即對S中負(fù)數(shù)項的分子與分母分別乘以2+3=后項的分母。參考程序:#include<stdio.h>voidmain(){ intn,i,k,sign;floats=0;sign=1;k=1;scanf("%d",&n);for(i=1;i<=n;i++){s=s+sign*(float)i/k;k=k+3;sign=sign*(-1);}printf("S=%.3f\n",s);}輸入一個正整數(shù)data①求它的位數(shù);②求各位數(shù)字之和;③從高位開始逐位分割并輸出它的各位數(shù)字。輸入樣例:輸入樣例:輸出樣例:12345是一個5位整數(shù),各位數(shù)字之和為15各位數(shù)字分別為2 3 4 5參考程序如下:#include<stdio.h>#include<math.h>voidmain(){intcount,in,sum,temp,t;printf("請輸入一個正整數(shù):");scanf("%d",&in);temp=in;count=sum=0;while(temp!=0)//求正整數(shù)的位數(shù),及各位數(shù)之和{sum=sum+temp%10;count++;temp=temp/10;}printf("%d%d%d\n",in,count,temp=in;printf("各位數(shù)字分別為:");while(temp!=0){t=temp/pow(10,count-1);printf("%d",t);temp=temp-t*pow(10,count-1);count--;}}輸入2個正整數(shù)m和(≥n500,輸出m和n之間的所有素數(shù),每行輸出6個。輸入樣例:輸入樣例:輸出樣例:235711131719232931參考程序如下:#include<stdio.h>#include<math.h>voidmain(){inti,j,p,m,n,count;count=0;printf(scanf("m=%d,n=%d",&m,&n);for(i=m;i<=n;i++){for(j=2;j<=(int)sqrt(i);j++)if(i%j==0)break;if(j>(int)sqrt(i)&&{printf("%d",i);count++;}if(count%6==0)printf("\n");}}程序改錯輸入2個正整數(shù)m和n,求這兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù)。輸入樣例(改正后程序的運(yùn)行結(jié)果輸入樣例(改正后程序的運(yùn)行結(jié)果輸出樣例:6,9的最大公約數(shù)是:36,9的最小公倍數(shù)是:18程序(有錯誤的程序,紅色的部分即為改正的部分:#include<stdio.h>#include<math.h>voidmain(){intm,n,max,min,data1,data2,r;printf("請輸入兩個正整數(shù):");scanf("m=%d,n=%d",&m,&n);data1=m;data2=n;if(m<n){r=m;m=n;n=r;}r=m%n;while(r!=0)//輾轉(zhuǎn)相除法,求最大公約數(shù){m=n;n=r;r=m%n;}max=n; nmin=data1*data2/max;printf("%d,%d:%d\n",data1,data2,max);printf("%d,%d的最小公倍數(shù):%d\n",data1,data2,min);}思考題3:forbreak參考程序如下:#include<stdio.h>#include<math.h>voidmain(){intm,n,max,min,i;printf("

溫馨提示

  • 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

提交評論