水仙花程序.docx

上传人:b****6 文档编号:6954297 上传时间:2023-01-13 格式:DOCX 页数:14 大小:31.41KB
下载 相关 举报
水仙花程序.docx_第1页
第1页 / 共14页
水仙花程序.docx_第2页
第2页 / 共14页
水仙花程序.docx_第3页
第3页 / 共14页
水仙花程序.docx_第4页
第4页 / 共14页
水仙花程序.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

水仙花程序.docx

《水仙花程序.docx》由会员分享,可在线阅读,更多相关《水仙花程序.docx(14页珍藏版)》请在冰豆网上搜索。

水仙花程序.docx

水仙花程序

1关于水仙花数发表时间:

2008-04-2420:

33:

12更新时间:

2008-04-2420:

33:

12

此题考试非常容易考到!

!

!

!

!

!

!

!

!

!

!

需要注意!

!

!

!

!

!

!

!

水仙花数意思是一个三位数m,它有如下特点:

  m=a^3+b^3+c^3

  其中a为m的百位数,b为m的十位数,c为m的个位数

譬如

m=371

则有

   a为3

   b 为7

   c为1

 

a,b,c如何求?

a为m的百位数:

 

首先把m的小数点后移两位,用m/100就可以了吧~

这时候把小数去掉就得到了百位数了.————如何去掉小数?

fix()或者int()都可以!

 

比如:

要371的百位数。

可以用371/100=3.71 然后用fix(3.71)=3

就求出来百位

 

b为m的十位数:

如何求十位?

利用刚刚求出的百位数a,将m简化为一个十位数m-a*100

比如:

371-3*100=71

这样再求这个十位数7就好求了。

仍然利用小数点前移然后求整fix(71/10)

就求出b=fix(7.1)=7

 

c为m的个位:

跟求b一样~利用先前求出的a与b,将m的十位,百位都减去就OK啦~~~~

 

这样,a与b与c就都有了

然后用选择结构

 

 

如果 m满足这样的条件m=a^3+b^3+c^3 则

   m为一个水仙花数

   打印m

否则 m不是一个水仙花数

 

最后,另m从100开始循环到500结束。

程序是

 

for m=100to500

 a=fix(m/100)

 b=fix((m-a*100)/10)

 c=m-a*100-b*10

 ifm=a^3+b^3+c^3then

   printm;"为一个水仙花数"

 endif

nextm

 

 

 

 

PS:

 你可以用这种方法另m从100开始到999循环,找出所有水仙花数

    可以找出从1000到9999中找出有这样特点数m:

    m=a^4+b^4+c^4+d^4

    其中a,b,c,d分别为m的千位,百位,十位,个位。

这样的数叫做玫瑰花数!

    从10000到99999一样可以找出5次方的数。

叫做五角星数~~~~~

2日志标题:

关于Fibonacci函数

发表作者:

8000087

发表时间:

2008-04-2420:

31:

51更新时间:

2008-04-2420:

31:

51

Fibonacci函数是一个很有名的函数:

表达式为

F(i)=0                i=1

    =1                i=2

    =f(i-1)+f(i-2)    i>2

也就是F(3)=F

(2)+F

(1)

      F(4)=F(3)+F

(2)

      :

      :

      :

怎么写这个循环?

显然先要给出初始值:

first=0   F

(1)的值; secoend=1   F

(2)的值

 然后进行循环,定义循环变量i从3开始到N结束(N是你想要结束的那个数,题目里是30。

)求F(I)并打印出来

这样循环体就是

F=first+secoend

first=secoend

seconed=F

 

这是啥意思?

我们说每循环一次,就计算出了新一个数。

这样下一个数就应该是这个新数与前面那个第2个数的和了。

就是新数将前两个数象挤牙膏一样挤出一个来。

         first      secoend      F

           ^           ^

first   seconed       F

           ^           ^

这个first就不要了,seconed变成first,F变成了seconed

下次循环还是计算first+seconed就可以了。

保证了循环体表达式F=first+secoend不变~~~~~

 明白了?

 

 

所以程序就可以写成

privatesubform_click()

dimi%,first%,secoend%,f%

first=0

seconed=1

fori=3to30

 f=first+seconed

 printf

 first=seconed

 secoend=f

nexti

endsub

3日志标题:

关于while

发表作者:

8000087

发表时间:

2008-04-2420:

30:

42更新时间:

2008-04-2420:

30:

42

所有的for循环都可以变成while格式

FORI=1TO3

 PRINTI

NEXTI

改怎么改?

首先设置I的初始值为1循环的条件就为I<=3就是I为1当I不大于3的时候执行循环,当I大于3了就退出了。

当然在循环体内要把I的值加一了,不然就死循环了~~~~

i=1

whliei<=3

 printi

 i=i+1

wend

 

非常容易吧~~~~扩展一下!

扩展一:

i=1

whilei<=3

  i=i+1

  printi

wend

与上面的有什么不同?

出来的结果有什么不同?

前面是先打印I,后变变量。

这个是先变变量后打印!

前面结果出来是         后面是

1                      2

2                      3

3                      4

可以理解吧~~~~根据情况看先变变量,还是先执行循环体~~~~~

 

 

扩展二:

FOR的其他功能转换

(1)步长STEP,在FOR里有步长控制。

在while里就是变量增加的值了,比如步长为3

 i=1

 whilei<=20

 printi

 i=i+3

 wend

这里让每次循环执行I=I+3就可以了吧~

 

(2)FOR递减:

FORI=10TO1STEP-1

也很好改吧:

i=10

whilei>=1

printi

i=i-1

wend

4志标题:

关于九九乘法表

发表作者:

8000087

发表时间:

2008-04-2420:

29:

59更新时间:

2008-04-2420:

29:

59

九九乘法表是本章比较重要的题目。

以前考试出过原题。

很好的利用了循环语句及循环的嵌套。

同学应该尽量理解每一个语句。

如果不能理解。

不妨把它背下来~

 

理解:

重点是一个print语句的理解。

循环的嵌套应该比较容易理解了,主要是print语句把大家搞晕了~要参考一下前面对print语句的介绍!

程序:

 privatesubform_click()

 dimi%, j%, str$ 

 

 print Tab(35);"九九乘法表"

 

 fori=1to9

   forj=1to9

    str=i&"*"&j&"="&i*j

    printTab((j-1)*15+1);str;

   nextj

 print

 nexti

 end sub 

 

1、程序开始定义了i:

外循环变量,J:

内循环变量,STR:

所要打印的字符串变量

 

2、PRINT之一:

   用PRINT来打印表头,print可以跟函数(Tab(35),Spc(35)...还记得什么意思吗?

TAB表示向后移动一段距离,SPC表示打印多少个空格);可以跟字符串(print"你好,乘号,*,!

",这些被引号引起来的都是字符串,可以是任意字符);还可以跟变量。

比如printi这时候I是多少就打印出多少。

(比如 i=5,printi)这个时候print出来的就是5了

 

3、print之二:

   容易被大家忽略的是print后面跟的标点符号print后面主要可以跟分号,或者不跟。

不跟的时候是默认打印完这一语句后换行,下一个print语句在第二行打印。

跟分号的时候是不换行,下一个print语句紧跟着上一个语句之后

看例子:

fori=1to3   与  fori=1to3

printi              printi;

nexti               nexti

的区别

左边打出来是          右边打出来就是

1                     123

2

3

print什么也不加,就是换行了~~~~~

 

 

3、关于字符串STR

STR是定义的一个字符串变量。

STR是什么。

我们想根据循环执行到不同时候STR不一样。

当I为1,J为1的的时候STR为“1*1=1”,I为2,J为2的时候STR就为“2*2=4”。

所以要对STR赋值的时候做一个字符串连接的小技巧

另STR为I的值连接一个乘号字符,再连接J的值,再连接一个等号字符,再连接I*J的结果,所以写成str=i&"*"&j&"="&i*j

 

4、开始循环了,我们要打印9行,假设每行1个表达式,

第1行是1*1=1

第2行是2*1=1

第3行是3*1=1 

这时候程序就是

fori=1to9

 printi&"*"&1&"="& i

nexti

此时,我们希望的是每一行打印九个表达式。

第一行变成:

1*1=1  1*2=2 1*3=3。

1*9=9

于是将printi*1=i语句改成

(1)打印9次

(2)隔一定区域打印(为了让每个表达式分开打印)

(3)不换行

所以用内循环实现

FORJ=1TO9

 printi&"*"&j&"="&i*j;

NEXTJ

此时I为外循环给他赋的值表示第几行。

也表示乘数。

注意后面的分号。

当然在程序中我们把这个字符串赋给了str

str=i&"*"&j&"="&i*j

于是可以写成

FORJ=1TO9

 PRINTSTR;

NEXTJ

就可以了

不过这样打印出来还不是我们想要的效果,为什么。

都挤在一起了呀

怎么样让每一个表达式都间隔一定的距离呢。

用TAB()函数,或者SPC()都可以。

这里用TAB((j-1)*15)+1)

(j-1)*15+1是什么?

是空格或者间隔区域的大小呀:

)书上是乘9,这里用乘15。

看看效果如何?

 

这样把程序改完就成了

 fori=1to9

   forj=1to9

    str=i&"*"&j&"="&i*j

    printTab((j-1)*15+1);str;

   nextj

 nexti

 

好了,这样循环完是个什么样?

1*1=1  1*2=2  1*3=3。

1*9=9  2*1=2  2*2=4。

9*9=81

怎么会这样?

哈哈,每行打印完忘记换行了呀

 

在内循环结束,外循环开始下一次之前,就是在每打印完一行,开始打印第二行之前加一个换行呀~~~~~什么时候外循环开始下一次?

NEXTI嘛~~~~~

换行怎么换?

print什么也不加~·!

·····

 

于是程序就成了上面所写的

 fori=1to9

   forj=1to9

    str=i&"*"&j&"="&i*j

    printTab((j-1)*15+1);str;

   nextj

 print

 nexti

5日志标题:

999的那个课堂补充习题

发表作者:

8000087

发表时间:

2008-04-2420:

26:

20更新时间:

2008-04-2420:

28:

25

第5章

需要解释的题目:

补充题第3题:

:

用户输入数据,统计用户输入次数和所有数据之和。

当用户输入999时结束。

1.关于读题!

大家读题的本事还真是有一套,本题要求统计用户输入的次数,另外统计所有输入数据的和.不是输入次数与所有数据的和...无言啊~~~~

2.要求统计用户输入次数,定义变量n%,每输入一次N加1即可

3.统计用户输入数据的和,定义temp%暂存用户输入数据.定义s%累加每次输入的temp值!

4.关于输入,使用inputbox让用户输入数据temp=val(inputbox("输入数据"))

5.循环条件是temp是否为999,若temp为999时,循环退出,否则继续让用户输入.

6.循环体为

  n=n+1 '次数加一

  temp=inputbox("输入数据") '让用户新输入一个数据

  s=s+temp '计算累加值

7.程序:

form_click()

dimn%,temp%,s%

n=1

temp=val(inputbox("输入数据"))

s=temp

whiletemp<>999

n=n+1

temp=val(inputbox("输入数据"))

s=s+temp

wend

print"用户输入了";n;"次"

print"N次结果之和为";s

endsub

 

 

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1