SQL循环结构程序复习.doc

上传人:scccc 文档编号:13797100 上传时间:2022-01-24 格式:DOC 页数:9 大小:73.50KB
返回 下载 相关 举报
SQL循环结构程序复习.doc_第1页
第1页 / 共9页
SQL循环结构程序复习.doc_第2页
第2页 / 共9页
SQL循环结构程序复习.doc_第3页
第3页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《SQL循环结构程序复习.doc》由会员分享,可在线阅读,更多相关《SQL循环结构程序复习.doc(9页珍藏版)》请在三一文库上搜索。

1、循环结构程序1.利用随机函数 RAND 和函数 floor ,产生 30个 1到 20之间的随机整数,使用 WHILE 语 句显示这 30 个随机数。declare i int,x intselect i=1while i=30beginset x=FLOOR(RAND()*(20-1+1)+1)set i=i+1 print xend2设纸的厚度为0.5毫米,将纸对折,再对折,求至少对折多少次,纸的厚度能达到珠穆 朗玛峰的高度 8848米。方法一:Declare h decimal(10,1),n intselect h=0.5,n=0while h8844000-运算部分beginset

2、h=h*2set n=n+1endselect 对折,n,次后可以超过珠峰的高度-输出部分方法二:Declare h decimal(10,1),n intselect h=0.5,n=0while h8844000-运算部分beginset n=n+1set h=0.5*power(2,n)end-select 对折,n,次后可以超过珠峰的高度print对折+ltrim(str(n)+次后可以超过珠峰的高度3求自然数1100之间奇数之和declare i int,s bigintselect i=1,s=0while i=100begin set s=s+i set i=i+2endsele

3、ct s=,s4. 编写程序,输出由 1、2、3、4、5、6 这六个数字组成的所有可能的两位数,并统计它们 的个数。declare x int,i int,j int,n int set x=123456 set i=1 set n=0 while i=6begin set j=1 while j=6 beginprint str(i,1)+str(j,1) set n=n+1 set j=j+1endset i=i+1end print n=+str(n,3)5. 编写程序,输入一个数,判定该数是否为素数,如果是素数,则输出“该数是素数”的信 息,否则输出“该数不是素数”的信息。(输出 50

4、 100 之间所有素数 )方法一:用循环变量等于要判断的数减一的方法来确定。declare x int,i int set i=2 set x=6 while i=x-1 begin if x%i=0 break else set i=i+1 endif i=xprint str(x)+ 是素数 elseprint str(x)+ 不是素数 方法二: 使用做记号的方法。 declare x int,i int,jh bit set jh=0 -使用变量做记号 set i=2 set x=5 while i=x-1 beginif x%i=0beginset jh=1 break end els

5、eset i=i+1endif jh=0print str(x)+ 是素数 elseprint str(x)+ 不是素数 6. 编程计算从 1到 30之间的所有 7 的倍数之和 declare i int,s bigint select i=1,s=0 while i=30begin if i%7=0 set s=s+i set i=i+1 endselect s=,s647. 在国际象棋棋盘的 64个格上依次放入小麦1粒、2粒、4粒、8粒,求按此规律放满 个格需要多少粒小麦。分析:后一个数是前一个数的 2 倍,得出通式为: X=2*X declare x float,S float,n bi

6、gint select x=1,s=0,n=1 while n=64beginset s=s+xset x=2*xset n=n+1 print x endprint s=+cast(s as varchar(40)8. 求自然数1100之间偶数之和declare i int,s bigint select i=0,s=0 while i0.0004beginset s=s+1/fmset i=i+1set fm=fm+i-1 -第 i 项的分母是前一项的分母加 i 减 1 endprint s=+str(s,7,4)print i=+str(i,7,4)-查看一下第多少项时 1/fm 为 0

7、.0004print fm=+str(fm,7,4)- 查看一下 1/fm 为 0.0004 时的 fm 是多少注意:分母( fm )必须定义为 float 类型,不能定义为 int ,因两个整数相除商为 整数而得不到小数。10.编写程序,在100999三位整数围,找出这样的数(水仙花数):该数等于其各位数字的立 方和。如:37仁3人3+7人3+1人3,即371就是水仙花数。注意:3A3表示3的3次方,7A3表示7的3次方,1A3表示1的3次方。(找出所有的水仙花数)分析:首先要会将数进行分解,分解的方法我们讲过至少 3 种。第一种,一般的分解方法:Declare x int,a int ,b

8、 int,c int,s intset x=456Set a=floor(x/100)-取出百位上的数字Set b=floor(x-a*100)/10)-取出十位上的数字set c=x-a*100-b*10-取出个位上的数字使用以上分解数的方法所编代码为:Declare x int,a int ,b int,c intprint 100-999 之间的所有水仙花是: set x=100while x=999beginSet a=floor(x/100)Set b=floor(x-a*100)/10) set c=x-a*100-b*10-取出百位上的数字-取出十位上的数字-取出个位上的数字if

9、 power(a,3)+power(b,3)+power(c,3)=xprint x set x=x+1endi 从个位数起-取出百位上的数字-取出十位上的数字-取出个位上的数字第二种,找通式方法: 假设 x=1234 个位=(Floor(x/1)%10 十位 =(Floor(x/10)%10 百位=(Floor(x/100)%10 千位=(Floor(x/1000)%10 通式: X(i)= FLOOR(X/1 0 (i-1) % 1 0 使用以上分解数的方法所编代码为:Declare x int,a int ,b int,c int print 100-999 之间的所有水仙花是: set

10、 x=100while x=999beginSet a=(Floor(x/100)%10 Set b=(Floor(x/10)%10 set c=(Floor(x/1)%10if power(a,3)+power(b,3)+power(c,3)=x print xset x=x+1end 第三种,取子串的方法 Declare x int,a int ,b int,c int print 100-999 之间的所有水仙花是: set x=100 while x=999beginSet a=str(substring( cast(x as char(3),1,1),1) -取出百位上的数字 Set

11、 b=str(substring( cast(x as char(3),2,1),1) -取出十位上的数字 set c=str(substring( cast(x as char(3),3,1),1) -取出个位上的数字 if power(a,3)+power(b,3)+power(c,3)=xprint xset x=x+1end提示:代码中的 cast(x as char(3) 是将数值型的 X 转换为字符型数据,之后用 substring 函数取子串,然后再将字符型数据用 str 函数转换为数值型数据。11计算 1 ! +2! + +20 !方法一:使用双循环即循环嵌套来实现。 decl

12、are s1 float,S2 float,i int,j int set i=1set s1=0while i=4beginset j=1set s2=1while j=ibeginset s2=s2*jset j=j+1endprint str(j-1,2)+!=+ltrim(str(s2)set s1=s1+s2set i=i+1endprint 1!+2!+3!+. 的和 s1=+cast(s1 as varchar(40) 方法二:使用单循环也可实现。declare s1 float,S2 float,i int,j intset i=1set s1=0-用来存放和值set s2=1

13、-用来存放阶乘值while i=4beginset s2=s2*iset s1=s1+s2set i=i+1endprint 1!+2!+3!+. 的和 s1=+cast(s1 as varchar(40)类似的题目还有:s=1+(1+2)+(1+2+3)+(1+2+3+4)+ .+(1+2+#+n),模仿上例自己编程实现。12.利用循环结构求 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

14、 i=3beginset s2=i*(i+1)*(i+2)set s1=s1+s2set i=i+1 endasprint 1*2*3+2*3*4+ +i*(i+1)*(i+2)+ +15*16*17 的 和 s1=+cast(s1 varchar(40)13有一个分数序列,求出这个序列的前20项之和。2/1,3/2, 5/3, 8/5, 13/8, 21/13,.提示:后一项是前一项的倒数加 1。declare s float,x float,i intset i=1set s=0-用来存放和值set x=2/1while i=20beginset s=s+xset i=i+1set x=1

15、/x+1-后一项是前一项的倒数加 1endprint 2/1, 3/2, 5/3, 8/5, 13/8, 21/13 的前 20项的和 s=+cast(s as varchar(40)14.计算1A3+2A3+3A3+100A3.注意:1A3表示1的3次方,2A3表示2的3次方,, 100A3表示100的3次方。declare s bigint,i intset i=1set s=0-用来存放和值while i=100beginset s=s+power(i,3)set i=i+1endprint1八3+2八3+3八3+ +100A3 的和 s=+cast(s as varchar(40)15

16、编写程序,用 Print语句显示150之间的奇数declare i intprint 显示 1 50之间的奇数 set i=1while i=50beginprint iset i=i+2end16. 求s=a+aa+aaa+aaaaaa(n个a),其中a和n的值由用户使用 Set或Select语句自己 输入。例如,当 a=3,n=4 时, S=3+33+333+3333。方法一:用重复产生字符函数 REPLICATE 编程:declare a char ( 1), t varchar (50), s int , n intseta=3sets=0setn=1whilen=5beginsett

17、 =REPLICATE ( a, n)printtsets=s+tsetn=n+1endprint s或declare i int,a varchar(10),s bigintprint求 a+aa+aaa+aaaaaa(n个 a)的和set s=0set i=1set a=5while i=4beginset a=5set a=replicate(a,i)print aset s=s+cast(a as int)set i=i+1endprint求 a+aa+aaa+aaaaaa(n个 a)的和 s=+ltrim(str(s,15)法二 下面方法更简单Declare a int,n int,

18、s int,t intSet a=3- 某一项中的数字Set n=1 - 项数set t=3 -某一项变量Set s=0- 累加变量While n=4BeginSet s=s+tset t=t*10+aSet n=n+1EndPrint s其他方法: Declare a int,n int,s intSet a=3Set n=1Set s=0While n=4BeginSet s=s+a*(power(10,n)-1)/9Set n=n+1EndPrint s 其他方法:按位权展开法如 X=123 按位权展开法得到结果为: X=1*10 2+2*10 1+3*10 0,可得通式为X二X+Flo

19、or(a/10(i-1)%10)* 10八(i-1)说明:公式中的Floor(a/10A (i-1)%10),是把每一个数分离出来的通式。由于该题每一个数位都相同,因此通式可写为X=X+a*10 (i-1)declare i int,x bigint,a int,s bigintprint 求 s=a+aa+aaa+aaaaaa(n 个 a)的和set s=0set i=1set a=5set x=0while i=4beginset x=x+a*power(10,i-1)print xset s=s+xset i=i+1endprint求 a+aa+aaa+aaaaaa(n个 a)的和 s=+ltrim(str(s,15)17. 统计未来 100 年中闰年的年份个数Declare y int,n intset y=2013set n=0while y9999 的最小 nDeclare s int,n intset s=0set n=0 while s9999 的最小 n=+str(n,3)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1