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

下载本文档

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

文档简介

./循环结构程序1.利用随机函数RAND和函数floor,产生30个1到20之间的随机整数,使用WHILE语句显示这30个随机数。

declareiint,xintselecti=1whilei<=30beginsetx=FLOOR<RAND<>*<20-1+1>+1>seti=i+1printxend2.设纸的厚度为0.5毫米,将纸对折,再对折…,求至少对折多少次,纸X的厚度能达到珠穆朗玛峰的高度8848米。

方法一:Declarehdecimal<10,1>,nintselecth=0.5,n=0whileh<8844000--运算部分beginseth=h*2setn=n+1endselect'对折',n,'次后可以超过珠峰的高度‘-输出部分方法二:Declarehdecimal<10,1>,nintselecth=0.5,n=0whileh<8844000--运算部分beginsetn=n+1seth=0.5*power<2,n>end--select'对折',n,'次后可以超过珠峰的高度'print'对折'+ltrim<str<n>>+'次后可以超过珠峰的高度'3.求自然数1~100之间奇数之和

declareiint,sbigintselecti=1,s=0whilei<=100beginsets=s+iseti=i+2endselect's=',s4.编写程序,输出由1、2、3、4、5、6这六个数字组成的所有可能的两位数,并统计它们的个数。declarexint,iint,jint,nintsetx=123456seti=1setn=0whilei<=6beginsetj=1whilej<=6beginprintstr<i,1>+str<j,1>setn=n+1setj=j+1endseti=i+1endprint'n='+str<n,3>5.编写程序,输入一个数,判定该数是否为素数,如果是素数,则输出"该数是素数"的信息,否则输出"该数不是素数"的信息。〔输出50—100之间所有素数〕方法一:用循环变量等于要判断的数减一的方法来确定。declarexint,iintseti=2setx=6whilei<=x-1beginifx%i=0breakelseseti=i+1endifi=xprintstr<x>+‘是素数'elseprintstr<x>+‘不是素数'方法二:使用做记号的方法。declarexint,iint,jhbitsetjh=0--使用变量做记号seti=2setx=5whilei<=x-1beginifx%i=0beginsetjh=1breakendelseseti=i+1endifjh=0printstr<x>+‘是素数'elseprintstr<x>+‘不是素数'6.编程计算从1到30之间的所有7的倍数之和

declareiint,sbigintselecti=1,s=0whilei<=30beginifi%7=0sets=s+iseti=i+1endselect's=',s7.在国际象棋棋盘的64个格上依次放入小麦1粒、2粒、4粒、8粒…,求按此规律放满64个格需要多少粒小麦。

分析:后一个数是前一个数的2倍,得出通式为:X=2*Xdeclarexfloat,Sfloat,nbigintselectx=1,s=0,n=1whilen<=64beginsets=s+xsetx=2*xsetn=n+1printxendprint's='+cast<sasvarchar<40>>8.求自然数1~100之间偶数之和

declareiint,sbigintselecti=0,s=0whilei<=100beginsets=s+iseti=i+2endselect's=',s9.计算s=1+1/2+1/4+1/7+1/11+1/16+1/22+1/29+…当第i项的值小于0.0004时结束。提示:找出规律,第i项的分母是前一项的分母加i减1。

declareiint,sfloat,fmfloat--i是项数,fm是分母,s是所求的和值seti=1sets=0setfm=1while1/fm>0.0004beginsets=s+1/fmseti=i+1setfm=fm+i-1--第i项的分母是前一项的分母加i减1endprint's='+str<s,7,4>print'i='+str<i,7,4>--查看一下第多少项时1/fm为0.0004print'fm='+str<fm,7,4>--查看一下1/fm为0.0004时的fm是多少注意:分母〔fm〕必须定义为float类型,不能定义为int,因两个整数相除商为整数而得不到小数。10.编写程序,在100~999三位整数X围内,找出这样的数<水仙花数>:该数等于其各位数字的立方和。如:371=3^3+7^3+1^3,即371就是水仙花数。注意:3^3表示3的3次方,7^3表示7的3次方,1^3表示1的3次方。〔找出所有的水仙花数〕分析:首先要会将数进行分解,分解的方法我们讲过至少3种。第一种,一般的分解方法:Declarexint,aint,bint,cint,sintsetx=456Seta=floor<x/100>--取出百位上的数字Setb=floor<<x-a*100>/10>--取出十位上的数字setc=x-a*100-b*10--取出个位上的数字使用以上分解数的方法所编代码为:Declarexint,aint,bint,cintprint'100-999之间的所有水仙花是:'setx=100whilex<=999beginSeta=floor<x/100>--取出百位上的数字Setb=floor<<x-a*100>/10>--取出十位上的数字setc=x-a*100-b*10--取出个位上的数字ifpower<a,3>+power<b,3>+power<c,3>=xprintxsetx=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从个位数起。使用以上分解数的方法所编代码为:Declarexint,aint,bint,cintprint'100-999之间的所有水仙花是:'setx=100whilex<=999beginSeta=<Floor<x/100>>%10--取出百位上的数字Setb=<Floor<x/10>>%10--取出十位上的数字setc=<Floor<x/1>>%10--取出个位上的数字ifpower<a,3>+power<b,3>+power<c,3>=xprintxsetx=x+1end第三种,取子串的方法Declarexint,aint,bint,cintprint'100-999之间的所有水仙花是:'setx=100whilex<=999beginSeta=str<substring<cast<xaschar<3>>,1,1>,1>--取出百位上的数字Setb=str<substring<cast<xaschar<3>>,2,1>,1>--取出十位上的数字setc=str<substring<cast<xaschar<3>>,3,1>,1>--取出个位上的数字ifpower<a,3>+power<b,3>+power<c,3>=xprintxsetx=x+1end提示:代码中的cast<xaschar<3>>是将数值型的X转换为字符型数据,之后用substring函数取子串,然后再将字符型数据用str函数转换为数值型数据。11.计算1!+2!+…+20!

方法一:使用双循环即循环嵌套来实现。declares1float,S2float,iint,jintseti=1sets1=0whilei<=4beginsetj=1sets2=1whilej<=ibeginsets2=s2*jsetj=j+1endprintstr<j-1,2>+'!='+ltrim<str<s2>>sets1=s1+s2seti=i+1endprint'1!+2!+3!+...的和s1='+cast<s1asvarchar<40>>方法二:使用单循环也可实现。declares1float,S2float,iint,jintseti=1sets1=0--用来存放和值sets2=1--用来存放阶乘值whilei<=4beginsets2=s2*isets1=s1+s2seti=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的值。declares1float,S2float,iint,jintseti=1sets1=0--用来存放和值sets2=1--用来存放乘积whilei<=3beginsets2=i*<i+1>*<i+2>sets1=s1+s2seti=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。

declaresfloat,xfloat,iintseti=1sets=0--用来存放和值setx=2/1whilei<=20beginsets=s+xseti=i+1setx=1/x+1--后一项是前一项的倒数加1endprint'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次方。declaresbigint,iintseti=1sets=0--用来存放和值whilei<=100beginsets=s+power<i,3>seti=i+1endprint'1^3+2^3+3^3+…+100^3的和s='+cast<sasvarchar<40>>15.编写程序,用Print语句显示1~50之间的奇数

declareiintprint'显示1~50之间的奇数'seti=1whilei<=50beginprintiseti=i+2end16.求s=a+aa+aaa+…+aaa…aaa<n个a>,其中a和n的值由用户使用Set或Select语句自己输入。例如,当a=3,n=4时,S=3+33+333+3333。方法一:用重复产生字符函数REPLICATE编程:declareachar<1>,tvarchar<50>,sint,nintseta='3'sets=0setn=1whilen<=5beginsett=REPLICATE<a,n>printtsets=s+tsetn=n+1endprints或declareiint,avarchar<10>,sbigintprint'求a+aa+aaa+…+aaa…aaa<n个a>的和'sets=0seti=1seta='5'whilei<=4beginseta='5'seta=replicate<a,i>printasets=s+cast<aasint>seti=i+1endprint'求a+aa+aaa+…+aaa…aaa<n个a>的和s='+ltrim<str<s,15>>法二下面方法更简单Declareaint,nint,sint,tintSeta=3--某一项中的数字Setn=1项数sett=3--某一项变量Sets=0--累加变量Whilen<=4BeginSets=s+tsett=t*10+aSetn=n+1EndPrints其他方法:Declareaint,nint,sintSeta=3Setn=1Sets=0Whilen<=4BeginSets=s+a*<power<10,n>-1>/9Setn=n+1EndPrints其他方法:按位权展开法如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>,

温馨提示

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

评论

0/150

提交评论