SQL循環(huán)結(jié)構(gòu)程序深刻復(fù)習(xí)_第1頁
SQL循環(huán)結(jié)構(gòu)程序深刻復(fù)習(xí)_第2頁
SQL循環(huán)結(jié)構(gòu)程序深刻復(fù)習(xí)_第3頁
SQL循環(huán)結(jié)構(gòu)程序深刻復(fù)習(xí)_第4頁
SQL循環(huán)結(jié)構(gòu)程序深刻復(fù)習(xí)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、循環(huán)結(jié)構(gòu)程序1.利用隨機(jī)函數(shù) RAND和函數(shù)floor,產(chǎn)生30個(gè)1到20之間的隨機(jī)整數(shù),使用WHILE 語句顯示這30個(gè)隨機(jī)數(shù)。declare i in t,x int select i=1 while i<=30beg inset x=FLOOR(RAND()*(20-1+1)+1) set i=i+1 print xend2. 設(shè)紙的厚度為0.5毫米,將紙對(duì)折,再對(duì)折,求至少對(duì)折多少次,紙張的厚度能達(dá)到珠 穆朗瑪峰的高度8848米。方法一:Declare h decimal(10,1), n int-運(yùn)算部分select h=0.5, n=0 while h<8844000b

2、eg inset h=h*2 set n= n+1end-輸出部分-運(yùn)算部分select '對(duì)折',n,'次后可以超過珠峰的高度方法二:Declare h decimal(10,1), n int select h=0.5, n=0 while h<8844000begi nset n= n+1 set h=0.5* power(2, n)end-select '對(duì)折',n,'次后可以超過珠峰的高度print '對(duì)折'+ltrim(str(n)+'次后可以超過珠峰的高度3. 求自然數(shù)1100之間奇數(shù)之和declare

3、 i in t,s big int select i=1,s=0 while i<=100begi nset s=s+i set i=i+2endselect 's=',s4. 編寫程序,輸出由 1、2、3、4、5、6這六個(gè)數(shù)字組成的所有可能的兩位數(shù),并統(tǒng)計(jì)它們的個(gè)數(shù)。declare x in t in t,j in t, n int set x=123456 set i=1 set n=0 while i<=6beg inset j=1 while j<=6begi nprint str(i,1)+str(j,1) set n= n+1 set j=j+1e

4、ndset i=i+1end print 'n='+str( n,3)5. 編寫程序,輸入一個(gè)數(shù),判定該數(shù)是否為素?cái)?shù),如果是素?cái)?shù),則輸出“該數(shù)是素?cái)?shù)”的信息,否則輸出“該數(shù)不是素?cái)?shù)”的信息。(輸出50 100之間所有素?cái)?shù))方法一:用循環(huán)變量等于要判斷的數(shù)減一的方法來確定。declare x in t,i intset i=2 set x=6 while i<=x-1beg inif x%i=Obreakelseset i=i+1endif i=xprint str(x)+'是素?cái)?shù)'elseprint str(x)+'不是素?cái)?shù)'方法二:使用做

5、記號(hào)的方法。declare x in t,i in t,jh bitset jh=0-使用變量做記號(hào) set i=2 set x=5 while i<=x-1beg inif x%i=0beg inset jh=1 breakendelseset i=i+1endif jh=0print str(x)+'是素?cái)?shù)'elseprint str(x)+'不是素?cái)?shù)'6. 編程計(jì)算從1到30之間的所有7的倍數(shù)之和declare i in t,s big int select i=1,s=0 while i<=30begi nif i%7=0set s=s+is

6、et i=i+1endselect 's=',s7. 在國(guó)際象棋棋盤的 64個(gè)格上依次放入小麥 1粒、2粒、4粒、8粒,求按此規(guī)律放滿 64個(gè)格需要多少粒小麥。分析: 后一個(gè)數(shù)是前一個(gè)數(shù)的 2倍,得出通式為:X=2*Xdeclare x float,S float, n bigi nt select x=1,s=0, n=1 while *=64beginset s=s+x set x=2*x set n= n+1 print xendprin t 's='+cast(s as varchar(40)8. 求自然數(shù)1100之間偶數(shù)之和declare i in t

7、,s bigi nt select i=0,s=0 while <=100beginset s=s+i set i=i+2endselect 's=',s當(dāng)?shù)趇項(xiàng)的值小于0.0004時(shí)9. 計(jì)算 s=1+1/2+1/4+1/7+1/11+1/16+1/22+1/29+ 結(jié)束。提示:找出規(guī)律,第 i項(xiàng)的分母是前一項(xiàng)的分母加 i減1。declare i in t,s float,fm float -i是項(xiàng)數(shù),fm是分母,s是所求的和值 set i=1 set s=0 set fm=1 while 1/fm>0.0004beg inset s=s+1/fm set i=i

8、+1set fm=fm+i-1-第i項(xiàng)的分母是前一項(xiàng)的分母加i減1endprin t 's='+str(s,7,4)prin t ='+str(i,7,4)-查看一下第多少項(xiàng)時(shí)1/fm為0.0004prin t 'fm='+str(fm,7,4)-查看一下1/fm為0.0004時(shí)的fm是多少注意:分母(fm )必須定義為float類型,不能定義為int,因兩個(gè)整數(shù)相除 商為整數(shù)而得不到小數(shù)。10. 編寫程序,在100999三位整數(shù)范圍內(nèi),找出這樣的數(shù)(水仙花數(shù)):該數(shù)等于其各位數(shù)字的立方和。如:371=33+73+13,即371就是水仙花數(shù)。注意:3人3

9、表示3的3set c=x-a*100-b*10-取出個(gè)位上的數(shù)字3種。次方,7人3表示7的3次方,"3表示1的3次方。(找出所有的水仙花數(shù)) 分析:首先要會(huì)將數(shù)進(jìn)行分解,分解的方法我們講過至少 第一種,一般的分解方法:Declare x in t,a in t ,b in t,c in t,s intset x=456Set a=floor(x/100)-取出百位上的數(shù)字Set b=floor(x-a*100)/10)-取出十位上的數(shù)字set c=x-a*100-b*10-取出個(gè)位上的數(shù)字使用以上分解數(shù)的方法所編代碼為:Declare x in t,a in t ,b in t,c

10、intprin t '100-999之間的所有水仙花是:set x=100 while x<=999begi nSet a=floor(x/100)-取出百位上的數(shù)字-取出十位上的數(shù)字Set b=floor(x-a*100)/10) if po wer(a,3)+po wer(b,3)+power(c,3)=xprint xendset x=x+1第二種,找通式方法:假設(shè) x=1234個(gè)位=(Floor(x/1)%10十位=(Floor(x/10)%10百位=(Floor(x/100)%10千位=(Floor(x/1000)%10通式:X( i)=FLOOR(X/10 (i-1)

11、%10i從個(gè)位數(shù)起。使用以上分解數(shù)的方法所編代碼為:Declare x in t,a in t ,b in t,c intprin t '100-999之間的所有水仙花是:set x=100while x<=999begi nSet a=(Floor(x/100)%10-取出百位上的數(shù)字Set b=(Floor(x/10)%10-取出十位上的數(shù)字set c=(Floor(x/1)%10-取出個(gè)位上的數(shù)字if po wer(a,3)+po wer(b,3)+power(c,3)=xprint xendset x=x+1第三種,取子串的方法Declare x in t,a in t

12、,b in t,c intprin t '100-999之間的所有水仙花是:set x=100 while x<=999begi nSet a=str(substring(cast(x as char(3) ,1,1),1)-取出百位上的數(shù)字Set b=str(substring(cast(x as char(3) ,2,1),1)-取出十位上的數(shù)字set c=str(substri ng(cast(x as char(3) ,3,1),1)-取出個(gè)位上的數(shù)字if po wer(a,3)+po wer(b,3)+power(c,3)=xprint xset x=x+1end提示:

13、代碼中的cast(x as char(3)是將數(shù)值型的X轉(zhuǎn)換為字符型數(shù)據(jù),之后用substring函數(shù)取子串,然后再將字符型數(shù)據(jù)用str函數(shù)轉(zhuǎn)換為數(shù)值型數(shù)據(jù)。11. 計(jì)算 1 ! +2 ! + +20 !方法一:使用雙循環(huán)即循環(huán)嵌套來實(shí)現(xiàn)。declare s1 float,S2 float,i in t,j int set i=1 set s1=0 while i<=4beg inset j=1 set s2=1 while j<=ibeg inset s2=s2*j set j=j+1endprint str(j-1,2)+'!='+ltrim(str(s2) s

14、et s1=s1+s2 set i=i+1endprin t '1!+2!+3!+. 的和 s1-+cast(s1 as varchar(40)方法二:使用單循環(huán)也可實(shí)現(xiàn)。declare s1 float,S2 float,i in t,j intwhile i<=4beg inset s2=s2*i set s1=s1+s2 set i=i+1endprin t '1!+2!+3!+. 的和 s1-+cast(s1 as varchar(40).+(1+2+#+n),模仿上例自類似的題目還有:s=1+(1+2)+(1+2+3)+(1+2+3+4)+ 己編程實(shí)現(xiàn)。12.

15、利用循環(huán)結(jié)構(gòu)求 s 的值,S=1*2*3+2*3*4+i*(i+1)*(i+2)+15*16*17 的值。declare s1 float,S2 float,i in t,j intset i=1set s1=0-用來存放和值set s2=1-用來存放乘積set i=i+1while i<=3beg inset s2=i*(i+1)*(i+2) set s1=s1+s2endprint '1*2*3+2*3*4+i*(i+1)*(i+2)+15*16*17s1-+cast(s1 as varchar(40)13. 有一個(gè)分?jǐn)?shù)序列, 求出這個(gè)序列的前 20項(xiàng)之和。2/1,3/2,

16、5/3, 8/5, 13/8, 21/13, 提示:后一項(xiàng)是前一項(xiàng)的倒數(shù)加declare s float,x float intset i=1set s=0-用來存放和值set i=1set x=2/1 while i<=20beg inset s=s+xset i=i+1endset x=1/x+1-后一項(xiàng)是前一項(xiàng)的倒數(shù)加 1prin t '2/1,3/2, 5/3, 8/5, 13/8, 21/13的前 20 項(xiàng)的和 s='+cast(s asvarchar(40)14. 計(jì)算1人3+2人3+3人3+ 1003.注意:1人3 表示1的3次方,2人3 表示2的3 次方,

17、100人3 表示100的3次方。declare s big in t,i intset s=0-用來存放和值while <=100beg inset s=s+po wer(i,3) set i=i+1prin t'1八3+2八3+3八3+end+1003 的和 s='+cast(s as varchar(40)15. 編寫程序,用 Print語句顯示150之間的奇數(shù)declare i int print'顯示150之間的奇數(shù)' set i=1 while i<=50beg inprint i set i=i+2end16. 求s=a+aa+aaa+

18、+aaaaaa(n個(gè)a),其中a和n的值由用戶使用 Set或Select語句自己輸入。例如,當(dāng)a=3 ,n=4 時(shí),S=3+33+333+3333。方法一:用重復(fù)產(chǎn)生字符函數(shù)REPLICATE編程:declare a char(1),t varchar (50),s int ,n intset a = 3set s=0set n = 1while n <= 5beg inset t= REPLICATE(a,n)print tset s=s+tset n = n + 1endprint s declare i in t,a varchar(10),s big int print'

19、 求 a+aa+aaa+ -+aaa -aaa( n 個(gè) a)的和' set s=0 set i=1 set a-5' while i<=4beg inset a='5' print aset a=re plicate(a)set s=s+cast(a as int)set i=i+1end print' 求 a+aa+aaa+ -+aaa -aaa( n 個(gè) a)的和 s='+ltrim(str(s,15)法二下面方法更簡(jiǎn)單Declare a in t,n in t,s in t,t intSet a=3-某一項(xiàng)中的數(shù)字Set n=1-項(xiàng)

20、數(shù)set t=3-某一項(xiàng)變量Set s=0-累加變量While *=4BeginSet s=s+t set t=t*10+aSet n= n+1EndPrint s 其他方法:Declare a in t,n in t,s intSet a=3Set n=1Set s=0While *=4Begi nSet s=s+a* (p ower(10, n)-1)/9Set n=n+1EndPrint s 其他方法:按位權(quán)展開法如X=123按位權(quán)展開法得到結(jié)果為:X=1*10 2+2*10 1+3*10 0,可得通式為X=X+Floor( (a/10八(i-1) )%10)* 10八(i-1)set x=x+a* po wer(10,i-1)說明:公式中的Floor(a/10八

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論