SQL循环结构程序复习_第1页
SQL循环结构程序复习_第2页
SQL循环结构程序复习_第3页
SQL循环结构程序复习_第4页
SQL循环结构程序复习_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、循环结构程序1.利用随机函数RAND和函数floor,产生30个1到20之间的随机整数,使用WHILE语句显示这30个随机数。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.设纸的厚度为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.求自然数1100之间奇数之和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这六个数字组成的所有可能的两位数,并统计它们的个数。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.编写程序,输入一个数,判定该数是否为素数,如果是素数,则输出“该数是素数”的信息,否则输出“该数不是素数”的信息。 (输出

4、50100之间所有素数)方法一:用循环变量等于要判断的数减一的方法来确定。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)+是素数else print str(x)+不是素数方法二:使用做记号的方法。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)+是素数else print str(x)+不是素数6.编程计算从1到30之间的所有7的倍数之和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粒,求按此规律放满64个格需要多少粒小麦。分析: 后一个数是前一个数的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.求自然数1100之间偶数之和 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,因两个整数相除商为整数而得不到小数。10.编写程序,在100999三位整数范围内,找出这样的数(水仙花数):该数等于其各位数字的立方和。如:371=33+73+13,即371就是水仙花数。注意:33表示3的3次方,73表示7的3次方,13表示1的3次方。 (找出所有的水仙花数)分析:首先要会将数进行分解,分解的方法我们讲过至少3种。第一种,一般的分解方法:Declare x int,a int ,b int,c int,s intset x=456Set a=floor(x/10

8、0) -取出百位上的数字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=999 begin Set a=floor(x/100) -取出百位上的数字 Set b=floor(x-a*100)/10) -取出十位上的数字 set c=x-a*100-b*10 -取出个位上的数字 if power(a,3)+power(b,3)+power(c,3)

9、=x print x set x=x+1 end第二种,找通式方法:假设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从个位数起。 使用以上分解数的方法所编代码为:Declare x int,a int ,b int,c intprint 100-999之间的所有水仙花是:set x=100while x=999 begin Set a=(Floor(x/100)%10 -取出百位上的数字 Set b=(Floor(x/10

10、)%10 -取出十位上的数字 set c=(Floor(x/1)%10 -取出个位上的数字 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) -取出百位上的数字 Set b=str(substring(cast(x as char(3),2,1),1) -

11、取出十位上的数字 set c=str(substring(cast(x as char(3),3,1),1) -取出个位上的数字 if power(a,3)+power(b,3)+power(c,3)=x print x set x=x+1 end 提示:代码中的cast(x as char(3) 是将数值型的X转换为字符型数据,之后用substring 函数取子串,然后再将字符型数据用str函数转换为数值型数据。 11.计算1!+2!+20!方法一:使用双循环即循环嵌套来实现。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)方法二:使用单循环也可实现。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),模仿上例自己编程实现。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 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.有一个分数序列,求出这个序列的前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=20 begin set s=s+x set i=i+1 set x=1/x+1 -后一项是前一项的倒数加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之间的奇数declare i intprint

16、显示150之间的奇数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。方法一:用重复产生字符函数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-某一项中的数字Set n=1 -项数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其他方法:按位权展开法如X=123按位权展开法得到结果为:X=1*102+2*101+3*100,可得通式为X=X+Floor(a/10(i-1)%10)* 10(i-1)说明:公式中的Floor(a/10(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=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论