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

下載本文檔

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

文檔簡(jiǎn)介

1、-作者xxxx-日期xxxxSQL循環(huán)結(jié)構(gòu)程序復(fù)習(xí)【精品文檔】循環(huán)結(jié)構(gòu)程序1.利用隨機(jī)函數(shù)RAND和函數(shù)floor,產(chǎn)生30個(gè)1到20之間的隨機(jī)整數(shù),使用WHILE語(yǔ)句顯示這30個(gè)隨機(jī)數(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毫米,將紙對(duì)折,再對(duì)折,求至少對(duì)折多少次,紙張的厚度能達(dá)到珠穆朗瑪峰的高度8848米。方法一:Declare h decimal(10,1),n intselect h=0.5,n=0while

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

3、=100 begin set s=s+i set i=i+2 end select s=,s4.編寫(xiě)程序,輸出由1、2、3、4、5、6這六個(gè)數(shù)字組成的所有可能的兩位數(shù),并統(tǒng)計(jì)它們的個(gè)數(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.編寫(xiě)程序,輸入一個(gè)數(shù),判定該數(shù)是否為素?cái)?shù),如果是素?cái)?shù),則輸出

4、“該數(shù)是素?cái)?shù)”的信息,否則輸出“該數(shù)不是素?cái)?shù)”的信息。 (輸出50100之間所有素?cái)?shù))方法一:用循環(huán)變量等于要判斷的數(shù)減一的方法來(lái)確定。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)+是素?cái)?shù)else print str(x)+不是素?cái)?shù)方法二:使用做記號(hào)的方法。declare x int,i int,jh bitset jh=0 -使用變量做記號(hào)set i=2set x=5while i=x-1 begin if x%i=0 begin

5、set jh=1 break end else set i=i+1 endif jh=0print str(x)+是素?cái)?shù)else print str(x)+不是素?cái)?shù)6.編程計(jì)算從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.在國(guó)際象棋棋盤(pán)的64個(gè)格上依次放入小麥1粒、2粒、4粒、8粒,求按此規(guī)律放滿64個(gè)格需要多少粒小麥。分析: 后一個(gè)數(shù)是前一個(gè)數(shù)的2倍,得出通式為:X=2*Xdeclare x float,S f

6、loat,n bigintselect x=1,s=0,n=1while 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 i=100 begin set s=s+i set i=i+2 end select s=,s9.計(jì)算s=1+1/2+1/4+1/7+1/11+1/16+1/22+1/29+當(dāng)?shù)趇項(xiàng)的值小于0.0004時(shí)結(jié)束。提示:找出規(guī)律,第i項(xiàng)的分母是前

7、一項(xiàng)的分母加i減1。declare i int,s float,fm float-i是項(xiàng)數(shù),fm是分母,s是所求的和值set i=1set s=0set fm=1 begin set s=s+1/fm set i=i+1 set fm=fm+i-1 -第i項(xiàng)的分母是前一項(xiàng)的分母加i減1 endprint s=+str(s,7,4)print i=+str(i,7,4) -print fm=+str(fm,7,4) - 注意:分母(fm)必須定義為float類型,不能定義為int,因兩個(gè)整數(shù)相除商為整數(shù)而得不到小數(shù)。10.編寫(xiě)程序,在100999三位整數(shù)范圍內(nèi),找出這樣的數(shù)(水仙花數(shù)):該數(shù)等于

8、其各位數(shù)字的立方和。如:371=33+73+13,即371就是水仙花數(shù)。注意:33表示3的3次方,73表示7的3次方,13表示1的3次方。 (找出所有的水仙花數(shù))分析:首先要會(huì)將數(shù)進(jìn)行分解,分解的方法我們講過(guò)至少3種。第一種,一般的分解方法:Declare x int,a int ,b int,c int,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 int,a int ,b int

9、,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 -取出個(gè)位上的數(shù)字 if power(a,3)+power(b,3)+power(c,3)=x print x set x=x+1 end第二種,找通式方法:假設(shè)x=1234個(gè)位=(Floor(x/1)%10十位=(Floor(x/10)%10百位=(Floor(x/100)%10千位=(Floor(x/1000)%10

10、通式:X(i)=FLOOR(X/10(i-1))%10 i從個(gè)位數(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 -取出十位上的數(shù)字 set c=(Floor(x/1)%10 -取出個(gè)位上的數(shù)字 if power(a,3)+power(b,3)+power(c,3)=x print x set x=x+1 end第三種,取子串的方法D

11、eclare 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) -取出十位上的數(shù)字 set c=str(substring(cast(x as char(3),3,1),1) -取出個(gè)位上的數(shù)字 if power(a,3)+power(b,3)+power(c,3)=x print x set x

12、=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.計(jì)算1!+2!+20!方法一:使用雙循環(huán)即循環(huán)嵌套來(lái)實(shí)現(xiàn)。declare s1 float,S2 float,i int,j intset i=1set s1=0while 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

13、set i=i+1 end print 1!+2!+3!+.的和s1=+cast(s1 as varchar(40)方法二:使用單循環(huán)也可實(shí)現(xiàn)。declare s1 float,S2 float,i int,j intset i=1set s1=0 -用來(lái)存放和值set s2=1 -用來(lái)存放階乘值while i=4 begin set s2=s2*i set s1=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),模仿上例

14、自己編程實(shí)現(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 -用來(lái)存放和值set s2=1 -用來(lái)存放乘積while i=3 begin set s2=i*(i+1)*(i+2) set s1=s1+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.有一個(gè)分?jǐn)?shù)序列,求出這個(gè)序列的前20項(xiàng)之和。2/1,

15、3/2, 5/3, 8/5, 13/8, 21/13, . 提示:后一項(xiàng)是前一項(xiàng)的倒數(shù)加1。declare s float,x float,i intset i=1set s=0 -用來(lái)存放和值set x=2/1while i=20 begin set s=s+x set i=i+1 set x=1/x+1 -后一項(xiàng)是前一項(xiàng)的倒數(shù)加1 end print 2/1, 3/2, 5/3, 8/5, 13/8, 21/13的前20項(xiàng)的和s=+cast(s as varchar(40)14. 計(jì)算13+23+33+1003. 注意:13表示1的3次方,23表示2的3次方,1003表示100的3次方。d

16、eclare s bigint,i intset i=1set s=0 -用來(lái)存放和值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.編寫(xiě)程序,用Print語(yǔ)句顯示150之間的奇數(shù)declare i intprint 顯示150之間的奇數(shù)set i=1while i=50 begin print i set i=i+2 end16.求s=a+aa+aaa+aaaaaa(n個(gè)a),其中a和n的值由用戶使用Set或Select語(yǔ)句自己輸入。例如,當(dāng)a

17、=3,n=4時(shí),S=3+33+333+3333。方法一:用重復(fù)產(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 end print s或declare i int,a varchar(10),s bigintprint 求a+aa+aaa+aaaaaa(n個(gè)a)的和set s=0set i=1set a=5while i=4 begin set

18、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個(gè)a)的和s=+ltrim(str(s,15)法二 下面方法更簡(jiǎn)單Declare a int,n int,s int,t intSet a=3-某一項(xiàng)中的數(shù)字Set n=1 -項(xiàng)數(shù)set t=3 -某一項(xiàng)變量 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)展開(kāi)法如X=123按位權(quán)展開(kāi)法得到結(jié)果為:X=1*102+2*101+3*100,可得通式為X=X+Floor(a/10(i-1)%10)* 10(i-1)說(shuō)明:公式中的Floor(a/10(i-1)%10),是把每一個(gè)數(shù)分離出來(lái)的通式。由于該題每一個(gè)數(shù)位都相同,因此通式可寫(xiě)為X=X+a*10(i-1)declare i int,x bigint,a int,s bigintprint 求s=a+aa

溫馨提示

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