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

下载本文档

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

文档简介

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

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

3、bigintselect i=1,s=0while i<=100beg inset s=s+iset i=i+2endselect 's=',s4. 编写程序,输出由1、2、3、4、5、6这六个数字组成的所有可能的两位数,并统计它们的个数。declare x in t,i in t,j int,n intset x=123456set i=1set n=0while i<=6begi nset j=1while j<=6begi nprint str(i,1)+str(j,1)set n=n+1set j=j+1endset i=i+1endprint 

4、9;n='+str( n,3)5. 编写程序,输入一个数,判定该数是否为素数,如果是素数,如此输出“该数是素数" 的信息,否如此输出“该数不是素数'的信息。方法一:用循环变量等于要判断的数减一的方法来确定。declare x in t,i intset i=2set x=6while i<=x-1beg inif x%i=0breakelseset i=i+1endif i=xprint str(x)+'是素数elseprint str(x)+'不是素数方法二:使用做记号的方法。declare x in t,i in t,jh bitset jh

5、=0 -使用变量做记号set i=2set x=5while i<=x-1beg inif x%i=0beg inset jh=1breakendelseset i=i+1endif jh=0print str(x)+ '是素数elseprint str(x)+'不是素数declare i in t,s bigi ntselect i=1,s=0while i<=30beg inif i%7=0set s=s+iset i=i+1endselect 's=',s7. 在国际象棋棋盘的 64个格上依次放入小麦1粒、2粒、4粒、8粒,求按此规律放满64个

6、格需要多少粒小麦。分析:后一个数是前一个数的2倍,得出通式为:X=2*Xdeclare x float,S float,n bigintselect x=1,s=0,n=1while *=64beg inset s=s+xset x=2*xset n=n+1print xendprin t 's='+cast(s as varchar(40)8. 求自然数1100之间偶数之和 declare i int,s bigintselect i=0,s=0while i<=100beg inset s=s+iset i=i+2endselect 's=',s9.

7、计算 s=1 + 1/2+1/4+1/7+1/11+1/16+1/22+1/29+ 当第 i 项的值小于 0.0004 时完毕。提示:找出规律,第i项的分母是前一项的分母加i减1。declare i int,s float,fm float-i是项数,fm是分母,s是所求的和值set i=1set s=0set fm=1beg inset s=s+1/fm-第i项的分母是前一项的分母加i减1set i=i+1set fm=fm+i-1 endprin t 's='+str(s,7,4) prin t 'i='+str(i,7,4) prin t 'fm=

8、'+str(fm,7,4)注意:分母fm必须定义为float类型,不能定义为int,因两个整数相除商 为整数而得不到小数。10. 编写程序,在100999三位整数X围内,找出这样的数(水仙花数):该数等于其各位数 字的立方和。如:37仁3人3+7人3+1人3,即371就是水仙花数。注意:3A3表示3的3次方,7A3表示7的3次方,1A3表示1的3次方。分析:首先要会将数进展分解,分解的方法我 们讲过至少3种。第一种,一般的分解方法:Declare x in t,a in t ,b in t,c in t,s int 百位=(Floor(x/100)%10set x=456Set a=f

9、loor(x/100)Set b=floor(x-a*100)/10)- set c=x-a*100-b*10-使用以上分解数的方法所编代码为:取出百位上的数字取出十位上的数字取出个位上的数字Declare x in t,a in t ,b in t,c intprin t '100-999之间的所有水仙花是:set x=100while x<=999beg inSet a=floor(x/100)-Set b=floor(x-a*100)/10)-set c=x-a*100-b*10-取出百位上的数字 取出十位上的数字 取出个位上的数字if power(a,3)+power(b

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

11、0-Set b=(Floor(x/10)%10-set c=(Floor(x/1)%10-if power(a,3)+power(b,3)+power(c,3)=x print xset x=x+1end第三种,取子串的方法Declare x in t,a in t ,b in t,c intprin t '100-999之间的所有水仙花是:'set x=100while x<=999beg inSet a=str(substri ng(cast(x as char(3),1,1),1)-取出百位上的数字Set b=str(substri ng(cast(x as cha

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

13、set s1=0while i<=4beg inset j=1set s2=1while j<=ibegi nset s2=s2*jset j=j+1endprint str(j-1,2)+'!='+ltrim(str(s2)set s1=s1+s2set i=i+1endprint '1!+2!+3!+.的和 s仁'+cast(s1 as varchar(40)方法二:使用单循环也可实现。declare s1 float,S2 float,i int,j intset i=1set s1=0-用来存放和值set s2=1-用来存放阶乘值while

14、i<=4beg inset s2=s2*iset s1=s1+s2set i=i+1endprint '1!+2!+3!+.的和 s仁'+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

15、i<=3beg inset s2=i*(i+1)*(i+2)set s1=s1+s2set i=i+1endprint'1*2*3+2*3*4+i*(i+1)*(i+2)+15*16*17 的和 s仁'+cast(s1 asvarchar(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<=3beg inset s=s+x

16、set i=i+1set x=1/x+1-后一项为哪一项前一项的倒数加1endprint '2/1,3/2, 5/3, 8/5, 13/8, 21/13的前 20 项的和 s='+cast(s asvarchar(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<=100beg inset s=s+power(i,3)set i=i+1endprint '1A3

17、+2A3+3A3+100八3 的和 s='+cast(s as varchar(40)15. 编写程序,用 Print语句显示150之间的奇数declare i intprint '显示150之间的奇数'set i=1while i<=50beg inprint 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 i in t,a varchar(10

18、),s bigi ntprint ' 求 a+aa+aaa+ +aaaaaa(n 个 a)的和set s=0set i=1set a='5'while i<=4beg inset a='5'set a=replicate(a,i)print aset s=s+cast(a as int)set i=i+1endprint' 求 a+aa+aaa+aaa aaa( n 个 a)的和 s='+ltrim(str(s,15)方法二:按位权展开法如X=123按位权展开法得到结果为:X=1*1O2+2*1O1+3*1O0,可得通式为X=X+Floor(a/ 10A (i-1) )%10)* 10A (i-1)说明:公式中的Floor(a/10A (i-1) )%10),是把每一个数别

温馨提示

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

评论

0/150

提交评论