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

下載本文檔

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

文檔簡介

廣州大學(xué)實驗報告學(xué)院商學(xué)院專業(yè)、班級11電子商務(wù)姓名、學(xué)號任雨桐1113800001課程名稱C程序設(shè)計項目名稱循環(huán)結(jié)構(gòu)設(shè)計實驗時間:2012年4月10日實驗2循環(huán)結(jié)構(gòu)程序設(shè)計實驗報告2012-4-10學(xué)院商學(xué)院年級、專業(yè)、班11電子商務(wù)姓名任雨桐成績課程名稱C程序設(shè)計實驗項目名稱循環(huán)結(jié)構(gòu)設(shè)計指導(dǎo)教師簽名一、實驗?zāi)康膶W(xué)習(xí)循環(huán)語句for、while和do-while語句的使用方法。學(xué)習(xí)用循環(huán)語句實現(xiàn)各種算法,例如窮舉法、迭代法等。進(jìn)一步熟悉C語言集成環(huán)境的使用方法二、實驗原理(算法分析(包括流程圖))1、for為當(dāng)型循環(huán)語句,它很好地體現(xiàn)了正確表達(dá)循環(huán)結(jié)構(gòu)應(yīng)注意的三個問題:(1)控制變量的初始化。(2)循環(huán)的條件。(3)循環(huán)控制變量的更新。2、while語句格式為:while(表達(dá)式)語句;/*循環(huán)體*/這里的表達(dá)式是循環(huán)能否繼續(xù)下去的條件,而語句是循環(huán)體。只要表達(dá)式為真,則執(zhí)行循環(huán)體內(nèi)語句。否則終止循環(huán),執(zhí)行循環(huán)體外語句。3、dowhile語句格式為:do語句;/*循環(huán)體*/While(表達(dá)式);程序進(jìn)入dowhile循環(huán)后,先執(zhí)行循環(huán)體內(nèi)語句,然后判斷表達(dá)式的真假,若為真則進(jìn)行下一次循環(huán),否則為假則終止循環(huán)。該循環(huán)語句的特點是,表達(dá)式為假時也執(zhí)行一次循環(huán)體內(nèi)語句。三、實驗過程原始記錄1、用while循環(huán)實現(xiàn)數(shù)據(jù)統(tǒng)計問題。:從鍵盤輸入一批任意數(shù)量的整數(shù),統(tǒng)計其中不大于100的非負(fù)數(shù)數(shù)值的個數(shù)。解:編程分析:由于輸入數(shù)據(jù)個數(shù)是不確定的,因此每次執(zhí)行程序時,循環(huán)次數(shù)都是不確定的。在進(jìn)行程序設(shè)計時,確定循環(huán)控制的方法是本實驗的一個關(guān)鍵問題。循環(huán)控制條件可以有多種確定方法:(1)使用一個負(fù)數(shù)作為數(shù)據(jù)輸入結(jié)束標(biāo)志。(2)輸入一個數(shù)據(jù)后通過進(jìn)行詢問的方式?jīng)Q定是否繼續(xù)輸入下一個數(shù)據(jù)。(1).使用一個負(fù)數(shù)作為數(shù)據(jù)輸入結(jié)束標(biāo)志程序代碼如下:#include"stdio.h"voidmain(){intm,counter=0;while(1){printf("請輸入一個整數(shù):");scanf("%d",&m);if(m<0) break;if(m<=100) counter++;printf("\n"); } printf("符合要求的整數(shù)個數(shù)為:%d\n",counter);}(2).輸入一個數(shù)據(jù)后通過詢問的方式?jīng)Q定是否輸入下一個數(shù)據(jù)的程序代碼如下:#include<stdio.h>intmain(){intm,counter=0;charask;while(1){printf("請輸入一個整數(shù):");scanf("%d",&m);getchar();if(m>=0&&m<=100) counter++;printf("繼續(xù)輸入下一個數(shù)據(jù)?(Y/N)");ask=getchar();getchar();if(ask!='y'&&ask!='Y') break;printf("\n");}printf("符合要求的整數(shù)個數(shù)為:%d\n",counter);}2、編寫并調(diào)試程序,使用do-while循環(huán)控制語句實現(xiàn)數(shù)據(jù)統(tǒng)計問題。使用負(fù)數(shù)作為數(shù)據(jù)輸入結(jié)束標(biāo)志的程序如下:#include<stdio.h>intmain(){ intm,counter=0;do{printf("請輸入一個整數(shù):");scanf("%d",&m);if(m<0) break;if(m<=100) counter++;printf("\n");}while(1);printf("符合要求的整數(shù)個數(shù)為:%d\n",counter);return0;}3、編寫并調(diào)試程序,使用for循環(huán)控制語句實現(xiàn)上面的數(shù)據(jù)統(tǒng)計問題。用for循環(huán)控制語句實現(xiàn)的數(shù)據(jù)統(tǒng)計問題程序:#include<stdio.h>intmain(){intm,counter;for(counter=0;1;){printf("請輸入一個整數(shù):");scanf("%d",&m);if(m<0) break;if(m<=100) counter++;printf("\n");}printf("符合要求的整數(shù)個數(shù)為:%d\n",counter);return0;}調(diào)試程序:(1)輸入的一組數(shù)據(jù)之間全部以空格分隔,只有最后一個數(shù)為負(fù)數(shù),以回車鍵結(jié)束。如:16357-10(2)輸入的一組數(shù)據(jù)之間全部以空格分隔,在負(fù)數(shù)之后又有正數(shù)數(shù)據(jù),最后一個數(shù)不為負(fù)數(shù),以回車鍵結(jié)束。如:16357-109617(3)輸入的一組數(shù)據(jù)之間全部以空格分隔,輸入數(shù)據(jù)中有多個負(fù)數(shù),以回車鍵結(jié)束。如:16357-109617-877(4)輸入的數(shù)據(jù)中有大于100的整數(shù)。如:16357-1096117-8726766(5)數(shù)據(jù)之間既用空格分隔,也用回車鍵分隔。如:76353762271796679617–8771966982-1631(6)每輸入一個數(shù)據(jù)后均按回車鍵。(7)輸入的第一個數(shù)據(jù)即為負(fù)數(shù)。(8)在輸入的數(shù)據(jù)中使用數(shù)值很大的整數(shù)。如:17667789876517899-109874、累乘累加問題編程分析:本實驗內(nèi)容是求解階乘問題。求n!用一個循環(huán)即可實現(xiàn)。求1+2!+3!+…+n!的值,需要在求n!程序之外增加一個外重循環(huán)。程序設(shè)計:#include<stdio.h>intmain(){longints=1,t;inti,j,n;printf("n=");scanf("%d",&n);for(i=2;i<=n;i++){for(t=1,j=1;j<=i;j++)t*=j;s+=t;}printf("s=%ld\n",s);return0;}程序調(diào)試(1)輸入一個不大的正整數(shù),分析程序執(zhí)行結(jié)果。(2)輸入一個零或者負(fù)數(shù),分析程序執(zhí)行結(jié)果。(3)輸入一個很大的正整數(shù),分析程序執(zhí)行結(jié)果。(4)當(dāng)程序結(jié)果不符合要求時,修改程序,直到對任何輸入數(shù)據(jù)都能輸出正確的執(zhí)行結(jié)果,或者給出一個明確的提示信息。例如,當(dāng)輸入數(shù)據(jù)非法時,給出一個恰當(dāng)?shù)奶崾拘畔ⅰK?、實驗結(jié)果與分析1、對程序一(使用一個負(fù)數(shù)作為數(shù)據(jù)輸入結(jié)束標(biāo)志程序)進(jìn)行調(diào)試,結(jié)果如下:1)2)3)4)5)6)7)8)分析:在一行里輸入了幾個數(shù),就會有相應(yīng)的“請輸入一個整數(shù)”對應(yīng)。又因為該程序是以一個負(fù)數(shù)作為數(shù)據(jù)輸出結(jié)束標(biāo)志的程序,所以當(dāng)輸入的數(shù)中出現(xiàn)負(fù)數(shù)的時候,程序就會自動結(jié)束并輸出符合要求的數(shù)據(jù)。如調(diào)試(7),第一個數(shù)就是負(fù)數(shù)時,符合要求的整數(shù)個數(shù)即為0。2.用do-while語句編寫程序后,對程序調(diào)試的結(jié)果如下:1)2)3)4)5)6)7)8)分析:在do-while的程序設(shè)計代碼里,“do”中的代碼必須執(zhí)行。3、對用for循環(huán)控制語句實現(xiàn)的數(shù)據(jù)統(tǒng)計問題程序調(diào)試結(jié)果如下:1)2)3)4)5)6)7)8)4、累乘累加程序調(diào)試結(jié)果如下:1)2)3)n=12345時,結(jié)果便出錯。n等于一個很大的數(shù)時,結(jié)果就出不來了。這個屬于溢出現(xiàn)象,longint的范圍和int一樣,都是10位數(shù)左右,因此會出現(xiàn)錯誤。修改程序如下:#include<stdio.h>intmain(){__int64s=1,t;inti,j,n;printf("n=");scanf("%d",&n);for(i=2;i<=n;i++){for(t=1,j=1;j<=i;j++)

溫馨提示

  • 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

提交評論