程序改錯示例_第1頁
程序改錯示例_第2頁
程序改錯示例_第3頁
程序改錯示例_第4頁
程序改錯示例_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、程序改錯: 在修改程序時,不允許修改程序的總體框架和算法,不允許增加或減少語句數(shù)目。練習1:下列程序是將“China”編成密碼,規(guī)律是:如是大寫字母,用原字母后面第4個字母代替原字母,例字母“A”后面第4個字母是“E”,用“E”代替“A”;小寫字母用原字母后面第2個字母代替原字母,例如字母“a”后面第2個字母是“c”,用“c”代替“a”。因此,“China”密碼為“Gjkpc”。SET COLLATE TO MACHINELOCAL mSting,cString,chmString=SPACE(0)cString=ChinaFOR i=1 TO VAL(cString)*FOR i=1 TO

2、Len(cString)ch=SUBSTR(cString, 1, i)*ch=SUBSTR(cString, i,1)IF BETWEEN(ch,a,z)mString=mString+CHR(ASC(ch)+2)ELSEmString=mString+CHR(ASC(ch)+4)ENDIFENDFORWAIT WINDOW cString+密碼為+mString練習2:下列程序中的過程(過程名為ren)用來產(chǎn)生n個ab之間的隨機整數(shù),然后將它們以從大到小的順序存儲在數(shù)組X中,并分別輸出n=10、a=5、b=25和n=20、a=50、b=80時數(shù)組X的值。=ren(10,5,25)=ren(

3、20,50,80)PROC renPARA a,b,n *PARA n,a,bDIME x(n)x = 0FOR i = 1 TO nx(i) = INT(b-a)*RAND() + a)ENDFORFOR j = 1 TO n-1FOR k = j+1 TO n IF x(k) x(j)t = x(j) x(k) = x(j) *x(j) = x(k) x(k) = tENDIFENDFOR ENDFORFOR i = 1 TO n?x(i)ENDFOR ENDPROC練習3:下列程序用來產(chǎn)生10個3050之間的隨機整數(shù),并將它以從大到小的順序存儲在數(shù)組X中。DIMENSION X(10)x

4、 = 0FOR i = 1 TO 10x(i) = INT(50-30)*RAND()+20) *x(i) = INT(50-30)*RAND()+30)ENDFORFOR j = 1 TO 9FOR k = j+1 TO 10 IF x(k) x(j)t = x(j) x(j) = x(k) x(k) = tENDIFENDFOR ENDIF *ENDFORCLEARFOR i = 1 TO 10?x(i)ENDFOR練習4:數(shù)組A中存放著n個互不相同的整數(shù),且按從小到大的順序排列,要求在A數(shù)組中插入一個給定整數(shù)x(x不等于n個數(shù)中任何一個),插入以后A數(shù)組仍然是有序的。假定這n個整數(shù)分別為

5、10、20、30、40、50、60、70、80、90和100,X=55。n=10DIMENSION a(n+1)x = 55FOR i = 1 TO n a( i ) = i*nENDFORFOR j=1 TO n-1IF a(j)xFOR k = n+1 TO j+1 STEP -1a(k) = a(j+1) *a(k) = a(k-1)ENDFOR a(j) = x LOOP *EXITENDIFa(n+1)=IIF(j=n-1,x,a(n+1)ENDFORDISPLAY MEMORY LIKE A*練習5:數(shù)組A中存放著n個互不相同的數(shù)據(jù),且按從小到大的順序排列,要求從A數(shù)組中刪除與給定

6、數(shù)x相同的那個數(shù),后面數(shù)依次前移一個位置。假定這n個數(shù)為10、20、30、40、50、60、70、80、90和100,x=60。要求:n=10DIMENSION A(n)x = 60FOR i = 1 TO n A(i) = i*nENDFORm = INT(n+1)/2)IF A(m) xt1 = 1t2 = mENDIF *ELSEt1 = mt2 = nENDIFFOR j = t1 TO t2IF A(j) = xFOR k = j TO n-1A(k) = A(j+1) * A(k) = A(K+1)ENDFORA(n) = .F.EXITENDIFENDFORDISPLAY MEM

7、ORY LIKE A*練習6:找出12000之內(nèi)所有的阿姆斯特朗數(shù)(Armstrong number)。一個數(shù)如果等于其每一位數(shù)字立方之和,則此數(shù)稱為阿姆斯特朗數(shù)。例如407就是一個阿姆斯特朗數(shù),因為:407 = 43 + 03 + 73。要求:? 12000之內(nèi)的阿姆斯特朗數(shù)為:nCount=0FOR i = 1 TO 2000n = LEN(ALLT(STR(i)m = 0FOR j = 1 TO n m = m + VAL(RIGHT(ALLT(STR(i), j, 1)3 * m = m + VAL(substr(ALLT(STR(i), j, 1)3 ENDFORIF i = n*I

8、F i=mnCount= nCount+1? iENDIFENDFOR? ”共計”+ALLT(STR(nCount)+”個”練習7:下列程序用來找出1000以內(nèi)同時滿足以下條件的數(shù):1)個位數(shù)字與十位數(shù)字之和除以10所得的余數(shù)是百位數(shù);2)該數(shù)是素數(shù)(僅能被1和本身整除的數(shù)稱為“素數(shù)”)。例如211、239、367等。CLEARFOR i = 1 TO 1000yn = .T.FOR j = 3 TO i-1IF MOD(i,j) = 0yn = .F.EXITENDIFENDFORIF yns = ALLT(STR(i)s1 = RIGHT(s,1)s2 = LEFT(RIGHT(s,2),

9、1)s3 = LEFT(RIGHT(s,3),1)IF MOD(s1+ s2,10) = s3 * IF MOD(VAL(s1)+ VAL(s2),10) = VAL(s3)? iENDIFENDIFENDIF *ENDFOR練習8:下列程序用來計算1!+(1!+3!)+(1!+3!+5?。?(1!+3!+5!+11!)。CLEARm = 0FOR i = 1 TO 6FOR j = i TO 2*i -1 STEP 2 m = m + jc(j)ENDFORENDFOR? 1!+(1!+3?。?(1!+3!+5!)+(1!+3!+5!+11!)的值為:+STR(m)FUNCTION jcPA

10、RAMETERS ns =1 FOR k = 1 TO ns = s*kNEXT *ENDFORRETURN *RETURN S練習9:下列程序的功能是找出1000之內(nèi)所有的完數(shù),并統(tǒng)計它們的個數(shù)(完數(shù)是指這樣一個數(shù),該數(shù)的各因子之和正好等于該數(shù)本身。例如,6的因子是1,2,3,而1+2+3=6,所以6是完數(shù))。要求:CLEARnCount=0FOR n1 = 1 TO 1000m=0FOR n2 = 1 TO n1-1IF n1/n2 = MOD(n1,n2) * IF n1/n2 = INT(n1,n2)m = m + n2ENDIFENDIF *ENFFORIF n1 = m?n1 nC

11、ount = nCount + 1ENDIFENDFORWAIT WINDOWS 完數(shù)的個數(shù)為 + STR(nCount) 練習10:下列程序的功能是找出1000之內(nèi)所有完數(shù)的個數(shù)(完數(shù)是指這樣一個數(shù),該數(shù)的各因子之和正好等于該數(shù)本身。例如,6的因子是1,2,3,而1+2+3=6,所以6是完數(shù))。要求: CLEARn1 = 1nCount = 0DO WHILE n1=1000m=0FOR n2 = INT(n1/n2) TO 1 STEP -1 * n2=int(n1/2)IF n1/n2 = INT(n1/n2) m = m + n2ENDIFENDFOR IF n1 = m nCount

12、 = nCount + 1?n1ENDDO *ENDIFn1 = n1 + 1ENDDO WAIT WINDOWS 完數(shù)的個數(shù)為 + STR(nCount) 練習11:下列程序的功能是找出兩個正整數(shù)的最大公約數(shù)??梢杂幂氜D(zhuǎn)相除法來求最大公約數(shù)。例如27和6,先用27除以6,余數(shù)為3,由于余數(shù)不為0,再將6作為被除數(shù),3作為除數(shù),得到余數(shù)為0,則3就是27和6的最大公約數(shù)。要求:CLEARm = 27n = 6IF mnt = mm = nn = tENDIFr = MOD(m,n)DO WHILE r0 m = nn = t *n=rr = MOD(m,n)ENDDOWAIT WINDOWS

13、最大公約數(shù)為+ STR(r) * STR(n)練習12:下列程序的功能是找出1992至2010年中的閏年。判斷閏年的條件是:(1)能被4整除,但不能被100整除的年份;(2)能被100整除,又能被400整除的年份。如1989,1900年不是閏年,1992,2000是閏年。要求:n=1992y = 1DO WHILE n=2010IF INT(n/4) = n/4IF INT(n/100) n/100y = 1ELSEIF INT(n/400) = n/400y = 1 ELSEy = 0ENDIF ENDIFENDIF *ELSEy = 0ENDIFWAIT WINDOWS STR(n) +

14、是 + IIF(y = 1,閏年,非閏年) *y=1n = n + 1ENDDO練習13:下列程序的功能是求函數(shù)f(x)的值,同時分別給出x= -2,x=2,x=6時函數(shù)的值。函數(shù)表達式為:CLEAR?f(-2)?f(2)?f(6)FUNCTION fPARAMETERS x IF x x(j)t = x(j) x(j) = x(k) x(k) = tENDIFENDDO * ENDFORENDFORCLEARFOR i = 1 TO 20?x(i)ENDFOR練習15:下列程序用來判斷一個大于或等于3的正整數(shù)是不是素數(shù)。所謂素數(shù)是指除1和該數(shù)本身之外,不能被其它任何整數(shù)整除。要求:FOR n = 3 TO 100i = 2y = .T.DO WHILE i= n * DO WHILE i= n 1IF n/i = INT(n/i)y = .F.i = i+1EXIT ENDIFi = i + 1ENDDO?IIF( y, n,)ENDIF *ENDFOR練習16:找出由1,2,3,4這四個數(shù)字組成的所有可能的四位數(shù),并統(tǒng)計它們的個數(shù)(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論