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

下载本文档

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

文档简介

.循环结构程序1.利用随机函数RAND和函数floor,产生30个1到20之间的随机整数,使用WHILE感谢阅读语句显示这30个随机数。declare@iint,@xintselect@i=1while@i<=30beginset@x=FLOOR(RAND()*(20-1+1)+1)感谢阅读set@i=@i+1print@xend2.设纸的厚度为0.5毫米,将纸对折,再对折…,求至少对折多少次,纸张的厚度能达到珠感谢阅读穆朗玛峰的高度8848米。方法一:Declare@hdecimal(10,1),@nint谢谢阅读select@h=0.5,@n=0while@h<8844000 --运算部分beginset@h=@h*2set@n=@n+1end.select '对折',@n,'次后可以超过珠峰的高度‘ -输出部分精品文档放心下载方法二:Declare@hdecimal(10,1),@nint精品文档放心下载select@h=0.5,@n=0while@h<8844000--运算部分begin精品文档放心下载set@n=@n+1set@h=0.5*power(2,@n)end--select '对折',@n,'次后可以超过珠峰的高度'精品文档放心下载print '对折'+ltrim(str(@n))+'次后可以超过珠峰的高度'感谢阅读3.求自然数1~100之间奇数之和declare@iint,@sbigintselect@i=1,@s=0while@i<=100beginset@s=@s+@iset@i=@i+2endselect'@s=',@s4.编写程序,输出由1、2、3、4、5、6这六个数字组成的所有可能的两位数,并统计它感谢阅读.们的个数。declare@xint,@iint,@jint,@nint谢谢阅读set@x=123456set@i=1set@n=0while@i<=6beginset@j=1while@j<=6beginprintstr(@i,1)+str(@j,1)set@n=@n+1set@j=@j+1endset@i=@i+1endprint'@n='+str(@n,3)5.编写程序,输入一个数,判定该数是否为素数,如果是素数,则输出“该数是素数”的信感谢阅读息,否则输出“该数不是素数”的信息。(输出50—100之间所有素数)感谢阅读方法一:用循环变量等于要判断的数减一的方法来确定。declare@xint,@iint.set@i=2set@x=6while@i<=@x-1beginif@x%@i=0breakelseset@i=@i+1endif@i=@xprintstr(@x)+‘是素数'elseprintstr(@x)+‘不是素数'方法二:使用做记号的方法。declare@xint,@iint,@jhbit精品文档放心下载set@jh=0 --使用变量做记号set@i=2set@x=5while@i<=@x-1beginif@x%@i=0begin.set@jh=1breakendelseset@i=@i+1endif@jh=0printstr(@x)+‘是素数'elseprintstr(@x)+‘不是素数'6.编程计算从1到30之间的所有7的倍数之和谢谢阅读declare@iint,@sbigintselect@i=1,@s=0while@i<=30beginif@i%7=0set@s=@s+@iset@i=@i+1endselect'@s=',@s.7.在国际象棋棋盘的64个格上依次放入小麦1粒、2粒、4粒、8粒…,求按此规律放满精品文档放心下载个格需要多少粒小麦。分析:后一个数是前一个数的2倍,得出通式为:@X=2*@X谢谢阅读declare@xfloat,@Sfloat,@nbigint感谢阅读select@x=1,@s=0,@n=1while@n<=64beginset@s=@s+@xset@x=2*@xset@n=@n+1print@xendprint'@s='+cast(@sasvarchar(40))精品文档放心下载8.求自然数1~100之间偶数之和declare@iint,@sbigintselect@i=0,@s=0while@i<=100beginset@s=@s+@iset@i=@i+2.endselect'@s=',@s9.计算s=1+1/2+1/4+1/7+1/11+1/16+1/22+1/29+…当第i项的值小于0.0004时精品文档放心下载结束。提示:找出规律,第i项的分母是前一项的分母加i减1。谢谢阅读declare@iint,@sfloat,@fmfloat感谢阅读--@i是项数,@fm是分母,@s是所求的和值感谢阅读set@i=1set@s=0set@fm=1while1/@fm>0.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.0004谢谢阅读print'@fm='+str(@fm,7,4) --查看一下1/fm为0.0004时的fm是多少感谢阅读注意:分母(@fm)必须定义为float类型,不能定义为int,因两个整数相除谢谢阅读商为整数而得不到小数。.10.编写程序,在100~999三位整数范围内,找出这样的数(水仙花数):该数等于其各位数感谢阅读字的立方和。如:371=3^3+7^3+1^3,即371就是水仙花数。注意:3^3表示3的3精品文档放心下载次方,7^3表示7的3次方,1^3表示1的3次方。(找出所有的水仙花数)感谢阅读分析:首先要会将数进行分解,分解的方法我们讲过至少3种。精品文档放心下载第一种,一般的分解方法:Declare@xint,@aint,@bint,@cint,@sint精品文档放心下载set@x=456Set@a=floor(@x/100) --取出百位上的数字精品文档放心下载Set@b=floor((@x-@a*100)/10) --取出十位上的数字精品文档放心下载set@c=@x-@a*100-@b*10 --取出个位上的数字谢谢阅读使用以上分解数的方法所编代码为:Declare@xint,@aint,@bint,@cint感谢阅读print'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 --取出个位上的数字谢谢阅读ifpower(@a,3)+power(@b,3)+power(@c,3)=@xprint@x精品文档放心下载.set@x=@x+1end第二种,找通式方法:假设@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))%10i从个位数起。使用以上分解数的方法所编代码为:Declare@xint,@aint,@bint,@cintprint'100-999之间的所有水仙花是:'set@x=100while@x<=999beginSet@a=(Floor(@x/100))%10--取出百位上的数字Set@b=(Floor(@x/10))%10--取出十位上的数字set@c=(Floor(@x/1))%10--取出个位上的数字ifpower(@a,3)+power(@b,3)+power(@c,3)=@xprint@x精品文档放心下载set@x=@x+1end.第三种,取子串的方法Declare@xint,@aint,@bint,@cint精品文档放心下载print'100-999之间的所有水仙花是:'感谢阅读set@x=100while@x<=999beginSet@a=str(substring(cast(@xaschar(3)),1,1),1) --取出百位谢谢阅读上的数字Set@b=str(substring(cast(@xaschar(3)),2,1),1) --取出十位精品文档放心下载上的数字set@c=str(substring(cast(@xaschar(3)),3,1),1) --取出个位上感谢阅读的数字ifpower(@a,3)+power(@b,3)+power(@c,3)=@xprint@x谢谢阅读set@x=@x+1end提示:代码中的cast(@xaschar(3))是将数值型的@X转换为字符型数据,之后用substring函数取子串,然后再将字符型数据用str函数转换为数值型数据。精品文档放心下载11.计算1!+2!+…+20!方法一:使用双循环即循环嵌套来实现。.declare@s1float,@S2float,@iint,@jint感谢阅读set@i=1set@s1=0while@i<=4beginset@j=1set@s2=1while@j<=@ibeginset@s2=@s2*@jset@j=@j+1endprintstr(@j-1,2)+'!='+ltrim(str(@s2))感谢阅读set@s1=@s1+@s2set@i=@i+1endprint'1!+2!+3!+...的和@s1='+cast(@s1asvarchar(40))精品文档放心下载方法二:使用单循环也可实现。declare@s1float,@S2float,@iint,@jint感谢阅读set@i=1set@s1=0 --用来存放和值set@s2=1 --用来存放阶乘值.while@i<=4beginset@s2=@s2*@iset@s1=@s1+@s2set@i=@i+1endprint'1!+2!+3!+...的和@s1='+cast(@s1asvarchar(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@s1float,@S2float,@iint,@jint感谢阅读set@i=1set@s1=0set@s2=1while@i<=3begin精品文档放心下载

--用来存放和值--用来存放乘积set@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 的 和精品文档放心下载.@s1='+cast(@s1asvarchar(40))感谢阅读13.有一个分数序列,求出这个序列的前20项之和。2/1,3/2,5/3,8/5,13/8,21/13,….谢谢阅读提示:后一项是前一项的倒数加1。declare@sfloat,@xfloat,@iint精品文档放心下载set@i=1set@s=0 --用来存放和值set@x=2/1while@i<=20beginset@s=@s+@xset@i=@i+1set@x=1/@x+1 --后一项是前一项的倒数加1谢谢阅读endprint'2/1,3/2,5/3,8/5,13/8,21/13的前20项的和@s='+cast(@sasvarchar(40))精品文档放心下载14.计算1^3+2^3+3^3+…+100^3.注意:1^3表示1的3次方,2^3表示2的3谢谢阅读次方,…,100^3表示100的3次方。declare@sbigint,@iintset@i=1.set@s=0 --用来存放和值while@i<=100beginset@s=@s+power(@i,3)set@i=@i+1endprint'1^3+2^3+3^3+…+100^3的和@s='+cast(@sasvarchar(40))精品文档放心下载15.编写程序,用Print语句显示1~50之间的奇数谢谢阅读declare@iintprint'显示1~50之间的奇数'set@i=1while@i<=50beginprint@iset@i=@i+2end16.求s=a+aa+aaa+…+aaa…aaa(n个a),其中a和n的值由用户使用Set或Select语精品文档放心下载句自己输入。例如,当a=3,n=4时,S=3+33+333+3333。谢谢阅读方法一:用重复产生字符函数REPLICATE编程:感谢阅读declare@achar(1),@tvarchar(50),@sint,@nint感谢阅读.set@a='3'set@s=0set@n=1while@n<=5beginset@t=REPLICATE(@a,@n)print@tset@s=@s+@tset@n=@n+1endprint@s或declare@iint,@avarchar(10),@sbigint谢谢阅读print'求a+aa+aaa+…+aaa…aaa(n个a)的和'感谢阅读set@s=0set@i=1set@a='5'while@i<=4beginset@a='5'set@a=replicate(@a,@i)print@a.set@s=@s+cast(@aasint)set@i=@i+1endprint'求a+aa+aaa+…+aaa…aaa(n个a)的和@s='+ltrim(str(@s,15))精品文档放心下载法二下面方法更简单Declare@aint,@nint,@sint,@tint精品文档放心下载Set@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@aint,@nint,@sint谢谢阅读Set@a=3Set@n=1Set@s=0.While@n<=4BeginSet@s=@s+@a*(power(10,@n)-1)/9感谢阅读Set@n=@n+1EndPrint@s其他方法:按位权展开法X=123按位权展开法得到结果为:X=1*102+2*101+3*100,可得通式为谢谢阅读X=X+Floor(((a/10^(i-1)))%10)*10^(i-1)感谢阅读

温馨提示

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

评论

0/150

提交评论