SQL循環(huán)結(jié)構(gòu)程序復習[學習相關(guān)]_第1頁
SQL循環(huán)結(jié)構(gòu)程序復習[學習相關(guān)]_第2頁
SQL循環(huán)結(jié)構(gòu)程序復習[學習相關(guān)]_第3頁
SQL循環(huán)結(jié)構(gòu)程序復習[學習相關(guān)]_第4頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、 set n=n+1 endselect 對折,n,次后可以超過珠峰的高度 -輸出部分方法二:Declare h decimal(10,1),n intselect h=0.5,n=0while h8844000 -運算部分 begin set n=n+1 set h=0.5*power(2,n) end-select 對折,n,次后可以超過珠峰的高度print 對折+ltrim(str(n)+次后可以超過珠峰的高度3.求自然數(shù)1100之間奇數(shù)之和declare i int,s bigintselect i=1,s=0while i=100 begin set s=s+i set i=i+2

3、end select s=,s4.編寫程序,輸出由1、2、3、4、5、6這六個數(shù)字組成的所有可能的兩位數(shù),并統(tǒng)計它們的個數(shù)。declare x int,i int,j int,n intset x=123456set i=1set n=0while i=6 begin set j=1 while j=6 begin print str(i,1)+str(j,1) set n=n+1 set j=j+1 end set i=i+1 endprint n=+str(n,3)5.編寫程序,輸入一個數(shù),判定該數(shù)是否為素數(shù),如果是素數(shù),則輸出“該數(shù)是素數(shù)”的信息,否則輸出“該數(shù)不是素數(shù)”的信息。 (輸出

4、50100之間所有素數(shù))方法一:用循環(huán)變量等于要判斷的數(shù)減一的方法來確定。declare x int,i intset i=2set x=6while i=x-1 begin if x%i=0 break else set i=i+1 endif i=x print str(x)+是素數(shù)else print str(x)+不是素數(shù)方法二:使用做記號的方法。declare x int,i int,jh bitset jh=0 -使用變量做記號set i=2set x=5while i=x-1 begin if x%i=0 begin set jh=1 break end else set i=i

5、+1 endif jh=0print str(x)+是素數(shù)else print str(x)+不是素數(shù)6.編程計算從1到30之間的所有7的倍數(shù)之和declare i int,s bigintselect i=1,s=0while i=30 begin if i%7=0 set s=s+i set i=i+1 end select s=,s7.在國際象棋棋盤的64個格上依次放入小麥1粒、2粒、4粒、8粒,求按此規(guī)律放滿64個格需要多少粒小麥。分析: 后一個數(shù)是前一個數(shù)的2倍,得出通式為:X=2*Xdeclare x float,S float,n bigintselect x=1,s=0,n=1

6、while n=64 begin set s=s+x set x=2*x set n=n+1 print x end print s=+cast(s as varchar(40)8.求自然數(shù)1100之間偶數(shù)之和 declare i int,s bigintselect i=0,s=0while i0.0004 begin set s=s+1/fm set i=i+1 set fm=fm+i-1 -第i項的分母是前一項的分母加i減1 endprint s=+str(s,7,4)print i=+str(i,7,4) -查看一下第多少項時1/fm為0.0004print fm=+str(fm,7,

7、4) - 查看一下1/fm為0.0004時的fm是多少注意:分母(fm)必須定義為float類型,不能定義為int,因兩個整數(shù)相除商為整數(shù)而得不到小數(shù)。10.編寫程序,在100999三位整數(shù)范圍內(nèi),找出這樣的數(shù)(水仙花數(shù)):該數(shù)等于其各位數(shù)字的立方和。如:371=33+73+13,即371就是水仙花數(shù)。注意:33表示3的3次方,73表示7的3次方,13表示1的3次方。 (找出所有的水仙花數(shù))分析:首先要會將數(shù)進行分解,分解的方法我們講過至少3種。第一種,一般的分解方法:Declare x int,a int ,b int,c int,s intset x=456Set a=floor(x/10

8、0) -取出百位上的數(shù)字Set b=floor(x-a*100)/10) -取出十位上的數(shù)字set c=x-a*100-b*10 -取出個位上的數(shù)字使用以上分解數(shù)的方法所編代碼為:Declare x int,a int ,b int,c intprint 100-999之間的所有水仙花是:set x=100while x=999 begin Set a=floor(x/100) -取出百位上的數(shù)字 Set b=floor(x-a*100)/10) -取出十位上的數(shù)字 set c=x-a*100-b*10 -取出個位上的數(shù)字 if power(a,3)+power(b,3)+power(c,3)

9、=x print x set x=x+1 end第二種,找通式方法:假設(shè)x=1234個位=(Floor(x/1)%10十位=(Floor(x/10)%10百位=(Floor(x/100)%10千位=(Floor(x/1000)%10通式:X(i)=FLOOR(X/10(i-1))%10 i從個位數(shù)起。 使用以上分解數(shù)的方法所編代碼為:Declare x int,a int ,b int,c intprint 100-999之間的所有水仙花是:set x=100while x=999 begin Set a=(Floor(x/100)%10 -取出百位上的數(shù)字 Set b=(Floor(x/10

10、)%10 -取出十位上的數(shù)字 set c=(Floor(x/1)%10 -取出個位上的數(shù)字 if power(a,3)+power(b,3)+power(c,3)=x print x set x=x+1 end第三種,取子串的方法Declare x int,a int ,b int,c intprint 100-999之間的所有水仙花是:set x=100while x=999 begin Set a=str(substring(cast(x as char(3),1,1),1) -取出百位上的數(shù)字 Set b=str(substring(cast(x as char(3),2,1),1) -

11、取出十位上的數(shù)字 set c=str(substring(cast(x as char(3),3,1),1) -取出個位上的數(shù)字 if power(a,3)+power(b,3)+power(c,3)=x print x set x=x+1 end 提示:代碼中的cast(x as char(3) 是將數(shù)值型的X轉(zhuǎn)換為字符型數(shù)據(jù),之后用substring 函數(shù)取子串,然后再將字符型數(shù)據(jù)用str函數(shù)轉(zhuǎn)換為數(shù)值型數(shù)據(jù)。 11.計算1!+2!+20!方法一:使用雙循環(huán)即循環(huán)嵌套來實現(xiàn)。declare s1 float,S2 float,i int,j intset i=1set s1=0while

12、i=4 begin set j=1 set s2=1 while j=i begin set s2=s2*j set j=j+1 end print str(j-1,2)+!=+ltrim(str(s2) set s1=s1+s2 set i=i+1 end print 1!+2!+3!+.的和s1=+cast(s1 as varchar(40)方法二:使用單循環(huán)也可實現(xiàn)。declare s1 float,S2 float,i int,j intset i=1set s1=0 -用來存放和值set s2=1 -用來存放階乘值while i=4 begin set s2=s2*i set s1=

13、s1+s2 set i=i+1 end print 1!+2!+3!+.的和s1=+cast(s1 as varchar(40)類似的題目還有:s=1+(1+2)+(1+2+3)+(1+2+3+4)+.+(1+2+#+n),模仿上例自己編程實現(xiàn)。12. 利用循環(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 int,j intset i=1set s1=0 -用來存放和值set s2=1 -用來存放乘積while i=3 begin set s2=i*(i+1)*(i+2) set s1=s1+

14、s2 set i=i+1 end print 1*2*3+2*3*4+i*(i+1)*(i+2)+15*16*17的和s1=+cast(s1 as varchar(40) 13.有一個分數(shù)序列,求出這個序列的前20項之和。2/1, 3/2, 5/3, 8/5, 13/8, 21/13, . 提示:后一項是前一項的倒數(shù)加1。declare s float,x float,i intset i=1set s=0 -用來存放和值set x=2/1while i=20 begin set s=s+x set i=i+1 set x=1/x+1 -后一項是前一項的倒數(shù)加1 end print 2/1,

15、3/2, 5/3, 8/5, 13/8, 21/13的前20項的和s=+cast(s as varchar(40)14. 計算13+23+33+1003. 注意:13表示1的3次方,23表示2的3次方,1003表示100的3次方。declare s bigint,i intset i=1set s=0 -用來存放和值while i=100 begin set s=s+power(i,3) set i=i+1 end print 13+23+33+1003的和s=+cast(s as varchar(40)15.編寫程序,用Print語句顯示150之間的奇數(shù)declare i intprint

16、顯示150之間的奇數(shù)set i=1while i=50 begin print i set i=i+2 end16.求s=a+aa+aaa+aaaaaa(n個a),其中a和n的值由用戶使用Set或Select語句自己輸入。例如,當a=3,n=4時,S=3+33+333+3333。方法一:用重復產(chǎn)生字符函數(shù)REPLICATE編程:declare a char(1),t varchar(50),s int,n int set a=3 set s=0 set n=1 while n=5 begin set t=REPLICATE(a,n) print t set s=s+t set n=n+1 en

17、d print s或declare i int,a varchar(10),s bigintprint 求a+aa+aaa+aaaaaa(n個a)的和set s=0set i=1set a=5while i=4 begin set a=5 set a=replicate(a,i) print a set s=s+cast(a as int) set i=i+1 endprint 求a+aa+aaa+aaaaaa(n個a)的和s=+ltrim(str(s,15)法二 下面方法更簡單Declare a int,n int,s int,t intSet a=3-某一項中的數(shù)字Set n=1 -項數(shù)s

18、et t=3 -某一項變量 Set s=0-累加變量While n=4Begin Set s=s+tset t=t*10+a Set n=n+1End Print s其他方法:Declare a int,n int,s intSet a=3Set n=1Set s=0While n=4Begin Set s=s+a*(power(10,n)-1)/9 Set n=n+1End Print s其他方法:按位權(quán)展開法如X=123按位權(quán)展開法得到結(jié)果為:X=1*102+2*101+3*100,可得通式為X=X+Floor(a/10(i-1)%10)* 10(i-1)說明:公式中的Floor(a/10(i-1)%10),是把每一個數(shù)分離出來的通式。由于該題每一個數(shù)位都相同,因此通式可寫為X=X+a*10(i-1)declare i int,x bigint,a int,s bigintprint 求s=a+aa+aaa+aaaaa

溫馨提示

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

評論

0/150

提交評論