VB 实验-计算斐波那契数列
VB
![VB](https://img.taocdn.com/s3/m/0f7d3a02b52acfc789ebc9b8.png)
1、》输入长方形的长和宽,计算长方形的面积,并输出。
Private Sub command1_click()Dim a%, b%, s%a = Val(InputBox("a"))b = Val(InputBox("b"))s = a * bPrint sEnd Sub2、输入正方形的边长,计算正方形的对角线长,并输出。
Private Sub command1_click()Dim a!,l!a=val(inputbox("输入边长"))l=sqr(2)*aPrint "对角线长度为:";lEnd sub3、输入圆的半径,计算圆的周长,并输出。
Private sub command1_click()Const pi=3.14Dim s#,i%r=val(inputbox("请输入半径"))s=2*pi*rprint "圆的周长为:";send sub4、》计算sum=1/2!+1/4!+1/6!+...+1/10!Private sub command1_click()Dim i%,f#,s#F=1:s=0For i=1 to 10F=f*iIf i mod 2=0 thenS=s+1/fEnd ifNext iPrint "sum=1/2!+1/4!+1/6!+...+1/10!";"=";sEnd sub5、计算sum=2!+4!+6!+...+10! 《计算、sum=1!+3!+5!+...+9!》Private sub command1_click()Dim i%,f#,s#F=1:s=0For i=1 to 10F=f*iIf i mod 2=0 thenS=s+fEnd ifNext iPrint "sum=2!+4!+6!+...+10!";"="sEnd sub6、计算sum=2+4+6+...+100Private Sub Command1_Click()Dim i%, sum%sum = 0For i = 2 To 100 Step 2sum = sum + iNext iText1.Text = sumEnd Sub7、计算sum=1+3+5+...+99Private Sub command1_click()Dim i%, sum%For i = 1 To 99 Step 2sum = sum + iNextPrint sumEnd Sub8、编写程序,建立一个6×6的整型二维数组(数据由程序调用Rnd函数产生[0,15 )的随机整数数),输出数组中的最小元素。
vb套题——斐波那契数列
![vb套题——斐波那契数列](https://img.taocdn.com/s3/m/75a3b754a8956bec0975e374.png)
第03套:1. 基本操作(2小题,每小题15分,共计30分)注意:下面出现的“考生文件夹”均为%USER%**********************************************************************请根据以下各小题的要求设计Visual Basic应用程序(包括界面和代码)。
(1)在名称为Form1的窗体上画一个名称为Frame1,标题为“目的地”的框架,在框架中添加三个复选框,名称分别为Check1、Check2、Check3,其标题分别是“上海”、“广州”、“巴黎”,其中“上海”为选中状态,“广州”为未选状态,“巴黎”为灰色状态,如图所示。
请画控件并设置相应属性。
注意:存盘时必须存放在考生文件夹下,工程文件名为sjt1.vbp,窗体文件名为sjt1.frm。
解题思路:启动Visual Basic系统,创建一个Form1窗体。
在该窗体上画一个框架控件,通过其属性窗口将名称设为Frame1,标题(Caption属性)设为“目的地”。
在F1框架中画三个复选框控件,通过其属性窗口将名称分别设为Check1、Check2、Check3,标题(Caption属性)分别设为“上海”、“广州”、“巴黎”,“上海”的Value属性设为1,“巴黎”的Value属性设为2。
参考文件:c:\wexam\26990001\hlpsys\参考答案\sjt1.vbp、sjt1.frm、sjt1.vbw 请把这些文件复制到c:\wexam\26990001中,然后打开sjt1.vbp文件并运行。
**********************************************************************(2)在名称为Form1的窗体上画一个名称为Picture1的图片框,其宽和高分别为1700、1900。
请编写适当事件过程,使得在运行时,单击图片框,则装入考生目录下的图形文件pic1.bmp,如图所示。
斐波拉契数列
![斐波拉契数列](https://img.taocdn.com/s3/m/f014351af18583d04964592a.png)
斐波拉契数列的简介斐波拉契数列(又译作“斐波那契数列”或“斐波那切数列”)是一个非常美丽、和谐的数列,它的形状可以用排成螺旋状的一系列正方形来说明(如右词条图),起始的正方形(图中用灰色表示)的边长为1,在它左边的那个正方形的边长也是1 ,在这两个正方形的上方再放一个正方形,其边长为2,以后顺次加上边长为3、5、8、13、2l……等等的正方形。
这些数字每一个都等于前面两个数之和,它们正好构成了斐波那契数列。
“斐波那契数列”的发明者,是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci,生于公元1170年,卒于1240年。
籍贯大概是比萨)。
他被人称作“比萨的列昂纳多”。
1202年,他撰写了《珠算原理》(Liber Abaci)一书。
他是第一个研究了印度和阿拉伯数学理论的欧洲人。
他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个阿拉伯老师的指导下研究数学。
他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯研究数学。
斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34……这个数列从第三项开始,每一项都等于前两项之和。
它的通项公式为:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}(√5表示5的算术平方根)(19世纪法国数学家敏聂(Jacques Phillipe Marie Binet 1786-1856)很有趣的是:这样一个完全是自然数的数列,通项公式居然是用无理数来表达的。
■斐波拉契数列的出现13世纪初,欧洲最好的数学家是斐波拉契;他写了一本叫做《算盘书》的著作,是当时欧洲最好的数学书。
书中有许多有趣的数学题,其中最有趣的是下面这个题目:“如果一对兔子每月能生1对小兔子,而每对小兔在它出生后的第3个月裏,又能开始生1对小兔子,假定在不发生死亡的情况下,由1对初生的兔子开始,1年后能繁殖成多少对兔子?”斐波拉契把推算得到的头几个数摆成一串:1,1,2,3,5,8……这串数里隐含着一个规律:从第3个数起,后面的每个数都是它前面那两个数的和。
《VB程序设计》案例教学模式
![《VB程序设计》案例教学模式](https://img.taocdn.com/s3/m/ab14d6ca9ec3d5bbfd0a7418.png)
《VB程序设计》案例教学模式探索摘要:在vb程序设计教学过程中,就如何避开概念的繁琐、语法的枯燥,应用案例教学激发学生的学习热情,提高学生的感性认识,开发学生的创新思维,培养学生的程序开发能力,提高教学效果等方面进行探索和总结。
关键字:趣味案例;实例教学;创新思维;合作探究;自主学习中图分类号:g718文献标识码:b文章编号:1672-1578(2013)06-0144-01“visual basic程序设计”是中职计算机专业学生必修的一门公共计算机课程,也是近年来福建省高职单招计算机类指定考核的语言,该课程主要是培养学生应用计算机技术来解决实际问题的能力。
与传统课程的理论性相比,vb具有极强的实践性,要求学生既要掌握理论知识,又要掌握操作技能并能在实际中应用。
过去,教师在讲授这门课程的时候以讲解理论为主,动手实践为辅,经过不断探索改革,针对目前职业学校学生的特点和兴趣,大力提倡项目驱动和案例教学的教学模式,通过教学模式改革,让学生在学习中始终充满成就感和探索精神,借助案例引导,结合基础知识、基本技能和技巧学习,能够让学生迅速上手并能培养自主创新能力,拓展知识面,为以后走向工作岗位做好铺垫。
现在职业教育类的大多数计算机教材都是案例教程,但是,很多教材就是例子的无序堆积,所涉及的知识和技能并不多。
通过多年的教学实践,结合学生的实际情况,本人把一些生活实例编写成教学案例运用于vb课程的教学中,并结合案例教学法构建相应的vb 案例课件库,同时在案例教学活动中的案例拓展环节尝试引入任务驱动模式。
下面,就谈谈在”visual basic程序设计”课程中的案例教学模式探索过程。
1.应用趣味案例,激发学习热情俗话说:兴趣是最好的老师。
在程序设计教学中要利用学生对事物的好奇心,选择一些有趣的、有实际意义的程序,激发学生的学习兴趣,学生有了兴趣,就乐于参与学习。
在上第一堂vb课时,为了迎合学生心理,更为了让学生明白学习程序设计语言有什么用,能实现什么功能,先不讲理论知识,而是演示一些有趣的实例,如:移动字幕、打地鼠、计算器等实用小程序,让学生体验程序设计的”新奇”,喜欢上程序设计。
VB11
![VB11](https://img.taocdn.com/s3/m/fc00d3e07c1cfad6195fa7fa.png)
斐波那契数列,即: 1,1,2,3,5,8,13…… 由此可知:a1=a2=1 an=an-1+an-2
i = 3 Do ReDim Preserve a(i) ‘数组增加一个元素 a(i) = a(i - 2) + a(i - 1) Print a(i); If i Mod 3 = 0 Then Print If a(i) > 30000 Then Exit Do i = i + 1 Loop
For j=UBound(a) To i 2 + 1 Step -1
If a(j) < a(j - 1) Then
t = a(j)
次序不对,则交换
a(j) = a(j - 1)
a(j - 1) = t End If Next j Next i
交换前后两个元素的值
出了内循环,一轮排序结束, 小数已冒到上面
×
注
意
P119
ReDim只能出现在过程里
Dim a%() n=val(Text1.Text) ReDim a(n)
ReDim中的下标可以是常量,也可以是有确定 值的变量 使用ReDim可以改变数组的大小,也可以改变 ReDim a(n+1) 数组的维数 ReDim a(n,n) 使用ReDim会使数组原来的数据丢失,用 ReDim Preserve 保留数组中的数据
需要插入的元素:
15
后移一位
1
4
7
10 13 16 22 22 25 25 16 19 15 19
增加一个元素 共10个元素
删除数组元素 ?
Dim a(),n% 给数组赋值,并 a = Array(1,4,7,10,13,16,19,22,25) 输入要插入的数 n = Val(InputBox("请输入要插入的数据:组元素 "))
VB 实验-计算斐波那契数列
![VB 实验-计算斐波那契数列](https://img.taocdn.com/s3/m/7d594b0a0740be1e650e9a65.png)
实验:求斐波那契数列的值 斐波那契数列的公式为:要求:①根据用户输入的n 值编写一个计算数列的子函数,并利用子函数的计算结果来显示数列的值。
②程序的界面的运行结果如下:目的:掌握Visual 的基本语法和程序的基本结构以及过程的使用。
实验步骤:1、新建一个Visual 的Windows 应用程序项目Ch4P 。
打开Visual 2005开发环境,从菜单中选择“文件”|“新建项目”,弹出“新建项目对话框”,在对话框的“类型”中选择Visual ,在模板中选择“Windows ”应用程序。
输入项目名称为Ch4P 。
2、界面设计从工具箱中拖一个文本框TextBox 控件、两个标签控件Label 与一个按钮控和一个Button 控件到窗体上,设计界面如图4-1。
图4-1 程序界面按表4-5设置各控件的属性。
表4-5 各控件的属性F(n-1) +F(n-2) (n>=2)1 (0<=n <2)F(n) =3、代码设计1)编写一个计算数列的函数'F(n) = F(n-1) + F(n-2) (n>=2)'F(n) = 1 (0<=n<2)Function calc(ByVal n As Integer) As Integer'定义变量Dim i As Integer = 0'表示F(n)Dim Fn As Double = 0'Fn1 表示F(n-1)Dim Fn1 As Double = 0'Fn2 表示F(n-2)Dim Fn2 As Double = 0'循环计算结果For i = 0 To nSelect Case iCase 0, 1Fn1 = 1Fn2 = 1Fn = 1Case ElseFn = Fn1 + Fn2Fn2 = Fn1Fn1 = FnEnd SelectNextReturn FnEnd Function2)在用双击“计算”按钮,产生btnCalcs_Click事件,在事件处理程序中编写下列代码: Private Sub btnCalcs_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles btnCalcs.ClickDim n As Integer'检测输入的是否是数字Tryn = Me.txtN.TextCatch ex As ExceptionMsgBox("请输入数字", rmation, Me.Text)Exit SubEnd Try'只能输入非负整数If n < 0 ThenMsgBox("请输入一个非负整数", rmation, Me.Text)Exit SubEnd If'调用子函数计算并显示结果Me.lblResult.Text = "计算结果:F(" & n & ")=F(n-1)+F(n-2)=" & calc(n) End Sub4、F5调试运行程序,结果如图4-2。
例题7-2利用数组计算斐波那契数列
![例题7-2利用数组计算斐波那契数列](https://img.taocdn.com/s3/m/868936c8bb0d4a7302768e9951e79b89680268f4.png)
例题7-2利用数组计算斐波那契数列斐波那契数列是一个经典的数列,它的定义如下:第一项和第二项是1,从第三项开始,每一项是前两项的和。
数列的前几项依次为:1,1,2,3,5,8,13,21,...可以使用数组来计算斐波那契数列。
数组是一种线性数据结构,可以存储相同类型的元素。
通过定义一个数组,可以将斐波那契数列中的每一项依次存储起来。
以下是使用数组计算斐波那契数列的示例代码。
```pythondef fibonacci(n):#创建一个数组,并初始化前两项为1fib = [1, 1]#利用循环计算斐波那契数列的每一项for i in range(2, n):fib.append(fib[i - 1] + fib[i - 2])#返回数组中的第n项return fib[n - 1]#测试代码n = int(input("请输入要计算的斐波那契数列的项数:"))result = fibonacci(n)print("第", n, "项的斐波那契数列是:", result)```以上代码中,我们定义了一个名为`fibonacci`的函数,传入参数`n`表示要计算的斐波那契数列的项数。
首先,我们创建一个空的列表`fib`,并将前两项的值设为1、接下来通过循环计算斐波那契数列的每一项,将其加入到列表中。
最后,返回列表中的第`n`项。
在测试代码中,我们接受用户输入一个项数并将其转换为整数。
然后,调用`fibonacci`函数计算斐波那契数列第`n`项,并将结果打印出来。
使用数组来计算斐波那契数列的优点是可以避免重复计算,每一项只需要计算一次并存储起来。
当需要获取斐波那契数列的第`n`项时,只需要从数组中读取对应的值即可,而不需要重新计算整个数列。
这样可以大大提高计算效率。
同时,数组还可以方便地存储和操作数列中的其他元素,例如可以计算数列的和、平均值等。
斐波那契两种算法(C语言)
![斐波那契两种算法(C语言)](https://img.taocdn.com/s3/m/ef90c37b571252d380eb6294dd88d0d233d43cdb.png)
斐波那契两种算法(C语⾔)斐波那契算法我们知道斐波那契数列0,1,1,2,3,5,8,13,21,34,55,........,其规律就是前两个数相加等于后⾯的第三个数,所以在写C语⾔的时候,必须有两个初始的数字a=0 b=1那么第三个数字next=a+b,斐波那契数是数列,⽆穷⽆尽,为了输出指定的数列的个数,例如输出n个,那么就是循环n次,只要我们知道1次的规律,循环n次不就是1乘n次么⾸先根据上⾯所说的我们需要使⽤C语⾔定义⼀些变量int a=0,b=1,next; /*初始的变量a,b和下⼀个数字next*/int i,n; /*定义变量*/变量定义完成后,我们就研究下什么是快乐星球?不不不,是循环n次中的那个⼀次逻辑,为了输出数列,⾸先输出第⼀个元素,为了让你更好的理解,这⾥打⼀个⽐喻,把输出的部分当作拆桥,产⽣的部分当作搭桥printf("%d,",a); /*输出第⼀个元素*/上述输出第⼀个元素了,后⾯的元素相当于拆掉了,那你必须前⾯铺⼀个元素,开始搭桥next = a+b; /*产⽣新的元素*/a = b; /*将b的值传递给a*/b = next; /*新的元素的值传递给b*/将上述代码使⽤for循环将1次循环为n次#include <stdio.h> /*C编程的标准IO输出输⼊头⽂件(预处理)*/int main(){int a=0,b=1,next; /*初始的变量a,b和下⼀个数字next*/int i,n; /*定义变量*//*===输⼊部分,控制n的值===*/printf("请输⼊输出的数列的个数:");scanf("%d",&n);for(i=0;i<=n;i++){/*=====循环中的⼀次经历的代码====*/printf("%d,",a);next = a+b; /*产⽣新的元素*/a = b; /*将b的值传递给a*/b = next; /*新的元素的值传递给b*//*=====循环中的⼀次经历的代码====*/}return0;}什么是递归?什么是快乐星球,如果你想知道的话我这就带你研究;从前有座⼭,⼭⾥有座庙,庙⾥有个⽼和尚,正在给⼩和尚讲故事呢!故事是什么呢?"从前有座⼭,⼭⾥有座庙,庙⾥有个⽼和尚,正在给⼩和尚讲故事呢!故事是什么呢?'从前有座⼭,⼭⾥有座庙,庙⾥有个⽼和尚,正在给⼩和尚讲故事呢!故事是什么呢?……'"⾸先定义⼀个函数f(x),其实递归就是⾃我分解追溯⾃⼰的最初的根基,斐波那契的根基就是a =0,b=1,从后往前推的过程int f(int i){if(i == 0) /*第⼀个数字为返回1*/{return0;}if(i == 1) /*第⼆个数字为返回2*/{return1;}return f(i-1) + f(i-2); /*第i个数为前两个数之和*/}下⾯就是循环过程了int main(){int i;for (i = 0; i < 10; i++){printf("%d\t\n", fibonaci(i));}return0;}整体的可以运⾏的代码#include <stdio.h>int fibonaci(int i){if(i == 0) /*第⼀个数字为返回1*/{return0;}if(i == 1) /*第⼆个数字为返回2*/{return1;}return fibonaci(i-1) + fibonaci(i-2); /*第i个数为前两个数之和*/ }int main(){int i;for (i = 0; i < 10; i++){printf("%d\t\n", fibonaci(i));}return0;}。
【精选】VB编程题目及答案
![【精选】VB编程题目及答案](https://img.taocdn.com/s3/m/6d1de63d3069a45177232f60ddccda38376be108.png)
1.输入3个数,输出最大的数2.有一元二次方程:aX2+bX+c=0,依次输入a,b,c,判断此方程是否有实根3.输入一个百分制的成绩,若大于等于60,则用消息框弹出,显示“恭喜!成绩通过!”,若小于60,则弹出消息框,显示“抱歉!成绩没有通过!”4.输入一年份,判断它是否为闰年,并显示有关信息。
(判断闰年的条件是:年份能被4整除但不能被100整除,或者能被400整除)5.输入学生的百分制成绩,转换输出为五级制成绩,90~100分转换为优秀,80~89转换为良好,70~79转换为中等,60~69转换为及格,0~60转换为不及格。
6.随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示。
例如,产生246,输出是642。
7.输入两个整数,求它们的最大公约数。
8.编程求200--400范围内5的倍数或7的倍数之和。
(一个数如果同时是7和5的倍数,则只能加一次。
9.计算100~300之间所有能被3和7整除的数之和10.分别统计1-100中,满足3的倍数、7的倍数的数各有多少。
11.某次歌曲大奖赛,有7个评委。
如果分别输入7个评委对某个参赛者的打分数,按照去掉一个最高分和一个最低分的计算办法,求出该参赛者的平均得分。
12.输入一串字符,统计其中字母A(不区分大小写)出现的次数。
13.我国目前有13亿人口,按人口年增长率0.8%计算,多少年后我国人口将超过26亿。
14.小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天只剩一个,问小猴原有桃多少?15.求100以内的素数16.百元买百鸡问题。
假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。
17.编程求斐波那契数列前11项。
(斐波那契数列:F(0)=f(1)=1, F(n)=F(n-1)+F(n-2) n>=2 )18.将输入的字符串以反序显示。
例如:输入“ASDFGT”,显示“TGFDSA”19.随机产生10个[30,100]内的整数,求最大值及所对应的下标20.随机产生10个[30,100]内的整数,求最大值、最小值和平均值。
软件技术基础实验指导书(1)
![软件技术基础实验指导书(1)](https://img.taocdn.com/s3/m/6387b214ff00bed5b9f31d6f.png)
软件技术基础实验指导书2014年9月1日目录实验一斐波那契数列的实现算法及分析 (3)实验二顺序表的实现与应用 (5)实验三链表的实现和应用 (7)实验四栈的实现和应用 (9)实验五队列 (11)实验六二叉树的创建和遍历 (12)实验七图 (15)实验八哈夫曼树及哈夫曼编码 (16)实验九查找算法的实现 (19)实验十内部排序算法的实现 (26)实验十一迷宫问题 (29)实验十二 B+树程序设计 (30)实验十三四叉树程序设计 (31)实验十四修路方案问题 (32)实验一斐波那契数列的实现算法及分析实验目的:1.掌握分别用递归和非递归方法计算斐波那契(Fibonacci)数列。
2.掌握算法性能测试的方法,并能进行算法分析和比较。
实验环境(硬/软件要求):Windows 2000, VisualC++ 6.0实验内容:二阶Fibonacci数列的定义如下:F0=1,F1=1, F2=2,F3=3,F4=5,。
,Fi=F(i-1)=F(i-2) (i>=1).试用递归法和非递归法两种方法写出计算Fn的函数。
实验要求:1.完成计算Fn的递归函数Fib-rec.2.完成计算Fn的非递归数列Fib-ite.3.当n=10,15,20,25,30,35,40,45时测试以上两种算法执行的时间,并把测试结果填写在附表1-1中。
附表1-1 测试表注:表格中填写的是测试时间,单位μm.4.试解释两种算法在执行时间上的不同,并对两种算法进行算法分析。
【C语言源程序】#include <stdio.h>#include <time.h>Long Fib-rec(int n){if(n==0||n==1)return(1);else return(Fib-rec(n-1) + Fib-rec(n-2) );}long Fib-ite(int n){long fib1,fib2,fib;int i;fib1=1;fib2=1;for (i=3;i<=n,i + + ){fib=fib1+fib2;fib1=fib2;fib2=fib;}return fib;}void main ( ){clock-t us1, us2;int n;printf(“请输入n:\n”);scanf(“%d,&n);us1=clock( );printf(“递归函数计算结果:%1d\n”,Fib-rec(n) ); us2=clock( );printf(“递归函数执行时间%1d毫秒\n”,us2-us1);us1=clock( );printf(“非递归函数计算结果:%1d\n”,Fib-ite(n) ); us2=clock( );printf(非递归函数执行时间%1d毫秒\n”,us2-us1);}实验二顺序表的实现与应用实验目的:1.掌握线性表的概念。
例题7-2利用数组计算斐波那契数列
![例题7-2利用数组计算斐波那契数列](https://img.taocdn.com/s3/m/d5ad15010812a21614791711cc7931b764ce7b59.png)
例题7-2利用数组计算斐波那契数列斐波那契数列是一个经典的数学问题,在计算机科学中也被广泛应用。
它定义如下:数列的第一个和第二个数字为1,从第三位起,每个数字都等于前两个数字之和。
简单的写成公式就是:F(n)=F(n-1)+F(n-2)。
下面我们利用数组来计算斐波那契数列。
首先,我们需要定义一个数组来存储斐波那契数列的每一项。
数组的长度需要预先确定,我们假设要计算前n项。
```int[] fibArray = new int[n];```接下来,我们需要初始化数组的前两个元素为1```fibArray[0] = 1;fibArray[1] = 1;```然后,我们可以使用一个循环来计算剩余的斐波那契数。
循环从第三个元素开始,依次计算每个位置的数值。
```for (int i = 2; i < n; i++)fibArray[i] = fibArray[i-1] + fibArray[i-2];```最后,我们可以输出数组中的所有元素,即前n项斐波那契数列。
```for (int i = 0; i < n; i++)System.out.print(fibArray[i] + " ");```这样,我们就成功利用数组计算了斐波那契数列。
下面是一个完整的示例代码:```javapublic class FibonacciArraypublic static void main(String[] args)int n = 10; // 计算斐波那契数列的前 10 项int[] fibArray = new int[n];fibArray[0] = 1;fibArray[1] = 1;for (int i = 2; i < n; i++)fibArray[i] = fibArray[i-1] + fibArray[i-2];}for (int i = 0; i < n; i++)System.out.print(fibArray[i] + " ");}}```以上的代码会输出前10项斐波那契数列:11235813213455利用数组计算斐波那契数列的时间复杂度是O(n),其中n是要计算的斐波那契数列的项数。
VB程序设计-斐波那契数列研究
![VB程序设计-斐波那契数列研究](https://img.taocdn.com/s3/m/b4e791e00975f46527d3e17a.png)
VB程序设计-斐波那契数列研究(作者:草原飞狼 2014年5月27日)声明:仅供学习与交流使用,高手请飘过,谢谢!所有代码都是个人亲自编写并调试成功。
布局运行界面(1)运行界面(2)运行效果(3)源代码如下:Option Base 1Private Sub Command1_Click()Rem 斐波那契数列,使用普通的变量方法实现Dim i As IntegerDim n As IntegerDim f1, f2 As IntegerDim f As Integer 'f表示当前项n = Val(InputBox("请输入一个大于1的整数!", "输入提示", "10"))f1 = 1f2 = 1Print f1; f2;Rem 以下是核心算法,注意变量的赋值顺序For i = 3 To nf = f1 + f2f1 = f2f2 = fPrint f;Next iPrintEnd SubPrivate Sub Command2_Click()Rem 清空ClsEnd SubPrivate Sub Command3_Click()Rem 退出Unload MeEnd SubPrivate Sub Command4_Click()Rem 斐波那契数列,使用动态数组实现Dim n As IntegerDim i As IntegerDim arr() '定义一个动态数组n = Val(InputBox("请输入一个大于1的整数!", "输入提示", "10"))ReDim arr(n) '重新定义动态数组arr(1) = 1arr(2) = 1Print arr(1); arr(2); '输出第一项和第二项Rem 以下是从第三项开始进行输出For i = 3 To narr(i) = arr(i - 1) + arr(i - 2)Print arr(i);Next iPrintEnd SubPrivate Sub Command5_Click()Rem 斐波那契数列,使用递归法,动态数组实现Dim n As IntegerDim i As Integern = Val(InputBox("请输入一个大于1的整数!", "输入提示", "10"))Call feibo(n) '过程调用PrintEnd SubPrivate Sub feibo(k As Integer)Rem 求斐波那契数列的过程,主要用到动态数组Dim i As IntegerReDim arr(k) '定义一个动态数组arr(1) = 1arr(2) = 1Print arr(1); arr(2); '输出第一项和第二项Rem 以下是从第三项开始进行输出For i = 3 To karr(i) = arr(i - 1) + arr(i - 2)Print arr(i);Next iEnd SubPrivate Sub Command6_Click()Rem 斐波那契数列,使用递归法,动态数组实现Dim n As IntegerDim i As IntegerDim j As Integern = Val(InputBox("请输入一个整数!", "输入提示", "10"))For i = 1 To nPrint feibo_digui(i);Next iRem 以下可以输出三角形的斐波那契数列'For i = 1 To n' For j = 1 To i' Print feibo_digui(j);' Next j' Print'Next iPrintEnd SubPrivate Function feibo_digui(k As Integer) As IntegerRem 求斐波那契数列的递归函数Rem 以下是典型的递归写法If k = 1 Or k = 2 Thenfeibo_digui = 1Elsefeibo_digui = feibo_digui(k - 1) + feibo_digui(k - 2)End IfEnd FunctionPrivate Sub Command7_Click()Rem 斐波那契数列,使用递归法,动态数组实现Dim n As IntegerDim i As IntegerDim j As Integern = Val(InputBox("请输入一个整数!", "输入提示", "10"))Rem 以下可以输出三角形的斐波那契数列,注意循环次数For i = 1 To nFor j = 1 To iPrint feibo_digui(j);Next jPrintNext iPrintEnd SubPrivate Sub Form_Load()Rem 初始化With Form1.FontName = "宋体".FontBold = True.FontSize = 16.ForeColor = vbRedEnd WithEnd Sub。
VB-编程题(1)
![VB-编程题(1)](https://img.taocdn.com/s3/m/bbf638fdc8d376eeaeaa31c1.png)
编程题(40题)1、在文本框Text1中输入一个正整数N ,按“计算”命令按钮Command1,产生N 个0 ~ 100之间的随机整数,计算这N 个随机整数的平均数,显示在标签Label1中。
将编写的程序存盘,工程文件名为Ex12nnnn.Vbp ,窗体文件名为Ex12nnnn.Frm 。
(当N 足够大时,该平均值应趋向于50)。
Ex12nnnn.Vbp Ex12nnnn.FrmPrivate Sub Command1_Click ( )N = Val (Text1.Text)Sum = 0For k = 1 To NV = Int ( Rnd * 101 )Sum = Sum + VNext kLabel1.Caption = Sum / NEnd Sub2、在文本框Text1中输入一正整数N ,按“计算”命令按钮Command1,计算该数的阶乘N !,结果显示在标签框Label1中。
按“结束”命令按钮Command2 结束程序。
Private Sub Command1_Click () Private Sub Command2_Click () N = Val (Text1.Text) EndP = 1 End SubFor k = 1 To NP = P * kNext kLabel1= PEnd Sub3、 在文本框 Text1中输入一个字符串,按“排列”按钮 Command1, 将输入字符串中每两个相邻的字符之间插入一个空格,结果显示在标签框Label1 中。
按“结束”命令按钮Command2结束程序。
Private Sub Command1_Click () Private Sub Command2_Click ()X = Text1.Text EndL = Len (X) End SubW = “”For k = 1 To L-1V = Mid (X, k, 1)W = W + V + “ ”Next kW = W + Right (X,1)Label1.Caption = WEnd Sub4、编写程序,从键盘输入任一x 的值,求分段函数的值(可用InputBox 函数)。
Matlab简介
![Matlab简介](https://img.taocdn.com/s3/m/beceff858762caaedd33d44f.png)
数学实验实验一 FIBONCCI 数列问题:1202年,意大利数学家FIBONCCI 在其著作《算法之书》中提出下面一个有趣的问题:兔子出生两个月以后就能繁殖小兔,且每次恰好繁殖一对幼兔现有一对刚出生的幼兔,问一年后将有多少对兔子(假设没有兔子死亡)?实验目的:学习如何把实际问题转化为数学问题;尝试用计算机检验某些数学结果;用所学的知识对已验证的结果进行理论证明. 实验步骤:1. 用表格列出月份所对应的兔子对数:2. 通过观察(或通过其它的方法),总结出兔子总数与月份之间的计算公式(记为F n )(递推关系).有了这个递推关系,使得人们很容易地算出以后某个月兔子的总数.3.18世纪初,棣美佛在其著作《分析集锦》中给出FIBONCCI 的通项表达式:])251()251[(51nnn U --+=用描点法检验F n =U n 是否成立.4. 令G n =F n /F n+1,用描点法观察G n 的极限是否存在,若存在请求出.实验报告要求:写出实验过程;对步骤3结论用数学归纳法加以证明;结合阅读参考书,写一写你对FIBONCCI 数列的认识和进一步的探索.实验二 方程近似解的求法问题:求方程的近似解是一个古老的数学问题.在现代科学研究和工程技术中常常会遇到这一问题.但由于方程往往非常复杂,不可能求出方程的精确解,所以转而设法求出复杂方程的近似解.本实验探讨求复杂方程近似解的一般方法.实验目的:进一步理解极限、导数与微分等概念,从理论上探讨求方程近似解的原理,从实践上掌握求方程近似解的方法. 实验步骤: 方法一:图形法设求X 4+1.1X 3-0.9X 2+0.3X-1=0的近似解.1. 在某区间,例如在[-2,2]上作f(x)=X 4+1.1X 3-0.9X 2+0.3X-1的图象.2. 由第1步可大致确定f(x)=0的根所在的区间(这叫根的隔离).本问题的两实根在[-2,0],[0,2]内.3. 分别在更小的区间内,例如在[-2,-1.7]和[-0.5,1]內观察函数图象.4. 重复3的工作直至无法缩小区间. 思考下列问题:1) 图形法求近似解的理论依据是什么? 2) 图形法求近似解的缺点是什么?如何克服? 方法二:牛顿(切线)迭代法设待解方程f(x)=0在隔离区间[a,b]上满足下列条件:f(a)f(b)<0,且f'(x)与f''(x)在[a,b]上分别保持定号.1. 确定f''(x)符号,并求出函数值与f''(x)有相同符号的区间端点值例如a . 2. 将x 1=a-f(a)/f'(a)作为近似值(a 被称为初值).3. 若x 1的精度不符合要求,则将x 2=x 1-f(x 1)/f'(x 1)作为近似值.一般地,这样做n 次后,可得近似值x n =x n-1-f(x n-1)/f'(x n-1).4. 对于给定的精度误差ε,即欲使近似根x n 与精确根ξ之间满足∣x n -ξ∣<ε,只要∣f(x n )∣<m ε就可以了.其中m=min{∣f'(a)∣,∣f'(b)∣}. 思考下列问题:1) 牛顿迭代法求近似解的理论依据是什么? 2) 牛顿迭代法求近似解的几何意义是什么? 3) 如何确定牛顿迭代法求近似解的误差估计?5. 分别取初值0、10、-1,用牛顿迭代法求方程xe x=1的近似解误差不超过10-5.(初值为-1时,求近似解失败,称为迭代不收敛根据几何意义分析迭代不收敛的原因). 实验报告要求:描述图形法和牛顿迭代法的原理;通过查阅参考资料阐述你对思考问题的认识;给出你用牛顿迭代法求方程xe x =1近似解的程序.实验三 电缆长度的确定问题:计算相距100米的两高压电线塔(高度相等的点)之间的电缆之长度.设电缆在中间下垂10米.实验目的:将牛顿迭代法用于解决具体问题;掌握弧长计算公式;探索定积分近似计算方法. 实验步骤: 1.用牛顿迭代法求非线性方程的近似解.根据常微分方程的模型,空中电缆满足悬链 线方程y=acoshax x ∈[-50,50].而曲线的最底点和最高点的高度相差10米,所以y(50)=y(0)+10,即acosh a50=a+10.用牛顿迭代法求此方程中的a .2. 根据第一步所得的a ,绘制曲线方程的图形求当x=0,-50,50时所对应的y 值,在同一坐标系下绘制过上面求出的三点的折线和抛物线. 3. 用弧长的积分公式计算悬链线的长度,以便与下一步的结果比较. 4. 计算折线的长度和抛物线的长度,它们与悬链线的长度比较结果如何? 5.如果想提高精度提出你的设想并做进一步的尝试.实验报告要求:写出实验过程;通过阅读参考书描述你对定积分的近似计算的认识实验四 π的近似计算问题:π是我们经常使用的一个常数,人类对π的研究已持续了2500多年,且必将继续下去…….现在,让我们沿着人类探索的足迹,计算π的近似值.实验目的:通过对割圆术、韦达公式、拉马努金公式、迭代法等计算方法的计算体验,提高我们对极限、级数收敛性和收敛速度的认识.感受数学思想和数学方法的发展过程以及学习数学家(人类)不断追求真理的精神. 实验步骤:1. 割圆术:作单位圆的内接正6边形,以6边形的面积作为π的近似值.再作正12边形、正24边形、……正96边形,当你用正96边形的面积作为π的近似值时,你就完成了汉代著名数学家刘徽的工作,得到π≈3.14.提示:记圆内接正n 边形的边长为a n ,面积为s n ,则 边长有如下递推公式n nn a a a 2*6222*622*62*6422112a 1n --=⎥⎥⎦⎤⎢⎢⎣⎡⎪⎪⎭⎫ ⎝⎛--+⎪⎪⎭⎫⎝⎛=+面积与边长有如下关系n nn a a s nn 2*62*612*62*342*61==++圆的面积S 与多边形的面积S n 之间的关系如下n n n s s S s -<<222请你用计算机完成刘徽的工作.著名数学家祖冲之(公元429年),计算了圆内接正24576边形的边长,得到3.1415926<π<3.1415927.德国数学家鲁道夫(1610年)用了几乎半生的时间把π的小数位延伸到了第35位.德国人民为了纪念他,称π为鲁道夫数. 2. 韦达公式222222222222222++++++=π1539年,韦达首次给出了这个计算π的精确表达式. 对于这个公式,我们可作如下的证明:首先∏=====nn nnnt t t t t t t t 12cos2sin24sin 4cos2cos 42sin2cos2sin等式两边取极限,让n →∞得:∏∞==12cos sin n nt tt再令t=π/2得:∏∞=+=112cos2n n ππ.现在,请你借助计算机用韦达公式构造一迭代算法来计算π的近似值.3. 用莱布尼兹级数计算π在泰勒级数∑∞=++-=01212)1(arctan k k k k xx中令x=1,得莱布尼兹级数(1674年发现)∑∞=+-=12)1(4k kk π.请你依此公式用计算机算π,要求精确到小数点后三位.1844年,数学家达什在没有计算机的情况下算到了小数点后200位,我们可以由误差估计式121-≤n r n计算一下需要取级数的多少项才能达到达什的水平?由此可体会到达什的工作是多么艰巨,需要多么大的勇气. 4. 拉马努金公式当前计算π的有效公式之一是由印度数学家拉马努金提出的.其表达式为:∑∞=+=044396263901103)!()!4(9801221n nnn n π1985年,数学家比尔·高斯帕依借助于计算机用此公式算到了π的后1750万位.实验报告要求:关于π的计算有很多资料.请你收集一下这方面的资料,结合自己的上机实践和体会写出实验报告.实验六 最佳营销策略问题:某公司有一批以每桶2元购进的彩漆为了获得较高的利润希望以较高的价格卖出但价格越高,售出量就越少,二者之间的关系由表一给出.于是打算用作广告的办法来促销.而广告费与销售量的关系可由销售增长因子来描述.例如,投入3万元的广告费,销售因子为1.85,意味着做广告后的销售量将是未做广告销售量的1.85倍.根据经验,广告费与销售因子的关系如表2,现请你作出决策:投入多少广告费和售价为多少时所获得的利润最大?表1表2实验目的:用多元函数的极值理论解决实际问题.实验步骤:1.用描点法画出预期销售量——售价;销售增长因子——广告费的关系图.2.建立上述两个函数关系.3.设x为售价,y为广告费,P为所得利润,建立P关于x和y的函数关系.4.用多元函数的极值理论计算并回答此问题.进行第二步时,可设计一个自己认为合理的方法,如可以用曲线拟合的方法.实验报告要求:写出实验过程并谈谈你的感想.实验七重积分及其应用问题:设某小岛的陆地高度z=30[1-(x2+y2)/106](单位为米)海潮的高潮和底潮之间的落差为2米,设当水平面z=0时对应着低潮,求高潮和低潮时小岛露出水面的面积之比.实验目的:用符号运算功能进行重积分运算.从中体会理论知识对于应用计算机是多么重要.实验步骤:1.求积分⎰⎰⎰Ωdvzx2,其中Ω由z=6-2x2-y2,z=x2+2y2所围成(要求先用计算机画出Ω的图形,再用计算机软件的符号运算功能进行积分).2.求积分⎰⎰⎰Ωdvz2,其中Ω由z=x2+y2,y=x2,y=1,z=0所围成(要求同上).3.解实际问题.实验报告要求:结合自己的上机实践和体会谈谈你对数学理论知识与计算机应用之间的关系的认识.。
4.4.1for循环的应用-粤教版(2019)高中信息技术必修一练习(解析版)
![4.4.1for循环的应用-粤教版(2019)高中信息技术必修一练习(解析版)](https://img.taocdn.com/s3/m/e96fc4a0c5da50e2524d7ffd.png)
【解析】
【详解】
本题考查VB相关知识。无效的过程调用或参数是指函数或者过程的参数有误,代码中涉及函数sqr和Int,a=Int(Rnd*100+1),b=Int(Rnd*100+1),这两条代码没有问题,y=a-b,会出现y<0,导致Sqr(y)参数有误,sqr为平方根函数,参数必须大于0,小于0则代码会出错。故产生错误语句是d=Sqr(y),本题选D。
5.有如下程序段:
Fori=1ToLen(Text1.Text)
c=Mid(Text1.Text,i,1)
Ifc>="0"Andc<="9"Thenc=Chr(Asc(c)+1)
Ifc>="A"Andc<="Z"Thenc=Chr(Asc(c)+32)
s=s+c
Nexti
若文本框Text1的内容为“Number2468!”执行程序后,变量s的值为()
t=ch+t
End If
Next i
Text2.Text = t
已知'A'的ASCI码为65,'a'的ASCI码为97.程序运行后,在文本框Textl中输人“Text2.text=”Abc1234“”(外括号不包括),则在Text2中显示的内容是(
A.TEXT2.TEXTABC1234B.43212TexttextABC
If Abs(a(i)-a(i-1)) >=②Then imax = i
Next i
Text1.Text = "GDP变化最大的年份区间是" + Str(imax + 2008) + "-" + Str(imax + 2009)
VB6.0常见错误和难点解析
![VB6.0常见错误和难点解析](https://img.taocdn.com/s3/m/e808de6f58fafab069dc0212.png)
VB6.0常见错误和难点解析1.在选择结构中缺少配对的结束语句对多行式的If 块语句中,应有配对的End If 语句结束。
否则,在运行时系统会显示"块 If 没有End If"的编译错误。
同样对Select Case 语句也应有与其相对应的End Select 语句。
2.多边选择ElseIf 关键字的书写和条件表达式的表示多边选择ElseIf 子句的关键字ElseIf 之间不能写有空格,即不能写成Else If 。
在多个条件表达式的表示时,应从最小或最大的条件依次表示,以避免条件的过滤。
例如,已知输入某课程的百分制成绩mark ,要求显示对应五级制的讦定,评定条件如下:有以下几种表示方式,语法上都没有错,但执行后结果有所不同,请分析哪些正确? 哪些错误? 下面给出的答案中,方法一、二、五正确,其余错误,请分析各自的原因。
方法一: 方法二: 方法三: 方法四: 方法五: If mark>=90ThenPrint"优" ElseIf mark>=80Then Print"良" ElseIf mark>=70Then Print"中"ElseIfmark>-60Then Print"及格" ElsePrint"及格"End IfIf mark<60ThenPrint"不及格" ElseIf mark<70Then Print"及格"ElseIf mark<80ThenPrint"中"ElseIf mark<90Then Print"良"ElsePrint"优" End IfIf mark>=60ThenPrint"及格" ElseIf mark>=70Then Print"中" Elselfmark>=80Then Print"良" Elselfmark>=90Then Print"优" ElsePrint"不及格"End If If mark>=90ThenPrint"优"ElseIf 80<=mark<90 Then Print"良"ElseIf 70<=mark<80 ThenPrint"中"ElseIf 60<=mark<70 ThenPrint"及格"ElsePrint"不及格"End IfIf mark>=90Then Print"优"ElseIf 80<=mark And mark<90ThenPrint"良"ElseIf 70<=mark And mark<80ThenPrint"中"ElseIf 60<=mark And mark<70ThenPrint"及格"ElsePrint"不及格"End If3.Select Case 语句的使用(1) "表达式列表i" 中不能使用"变量或表达式"中出现的变量。
实验二 斐波那契数列
![实验二 斐波那契数列](https://img.taocdn.com/s3/m/0b68be79f46527d3240ce094.png)
功能:用 n 阶多项式拟合数据列(x,y),使得在数据点处误差的平方和最小。 说明:参数 x 和 y 都是数组,里面是数据列的横坐标和纵坐标;参数 n 是指 定多项式的阶,在实验中参数 n 通过对数据列的分析而得到。 例 1 对函数 y ln(1 x) 做 3 阶多项式拟合 代码:x2 = 0:0.1:1; y2 = log(1+x2); p2 = polyfit(x2,y2,3) 运行结果:p2 = 0.1079 -0.3974 0.9825 0.0004。
Fn 2 Fn 1 Fn
有了这个递推公式,使用数学方法就能够得到这个数列的通项公式如下:
Fn {[(1 5) 2]n [(1 5) 2]n } 5
这个公式是法国数学家比内(Binet)早在 1843 年发现的,称为比内公式。有 了这个公式后,第 n 个月后兔子的对数,就是计算 Fn 。
将这个文件保存为 fib3.m。在这个函数里,y 是因变量,用于将拟合结果 传到函数外。
(1)选择 n=30,调用上述函数做拟合: 代码:p1= fib3(30) 运行结果:p1 = 0.4799 -0.7768。
结论:取前 30 项做拟合,得到: log( Fn ) 0.7768+0.4799n (2)选择 n=50,调用上述函数做拟合: 代码:p2= fib3(50) 运行结果:p2 = 0.4807 -0.7881。
图 2-1-9
n=30
图 2-1-10
n=50
(3)选择 n=500,调用上述函数画图: 代码:fib2(500); legend('n = 500'); 运行结果:图 2-1-11。 (4)选择 n=1000,调用上述函数画图: 代码:fib2(1000); legend('n = 1000'); 运行结果:图 2-1-12。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验:求斐波那契数列的值 斐波那契数列的公式为:
要求:
①根据用户输入的n 值编写一个计算数列的子函数,并利用子函数的计算结果来显示数列的值。
②程序的界面的运行结果如下:
目的:掌握Visual 的基本语法和程序的基本结构以及过程的使用。
实验步骤:
1、新建一个Visual 的Windows 应用程序项目Ch4P 。
打开Visual 2005开发环境,从菜单中选择“文件”|“新建项目”,弹出“新建项目对话框”,在对话框的“类型”中选择Visual ,在模板中选择“Windows ”应用程序。
输入项目名称为Ch4P 。
2、界面设计
从工具箱中拖一个文本框TextBox 控件、两个标签控件Label 与一个按钮控和一个Button 控件到窗体上,设计界面如图4-1。
图4-1 程序界面
按表4-5设置各控件的属性。
表4-5 各控件的属性
F(n-1) +F(n-2) (n>=2)
1 (0<=n <2)
F(n) =
3、代码设计
1)编写一个计算数列的函数
'F(n) = F(n-1) + F(n-2) (n>=2)
'F(n) = 1 (0<=n<2)
Function calc(ByVal n As Integer) As Integer
'定义变量
Dim i As Integer = 0
'表示F(n)
Dim Fn As Double = 0
'Fn1 表示F(n-1)
Dim Fn1 As Double = 0
'Fn2 表示F(n-2)
Dim Fn2 As Double = 0
'循环计算结果
For i = 0 To n
Select Case i
Case 0, 1
Fn1 = 1
Fn2 = 1
Fn = 1
Case Else
Fn = Fn1 + Fn2
Fn2 = Fn1
Fn1 = Fn
End Select
Next
Return Fn
End Function
2)在用双击“计算”按钮,产生btnCalcs_Click事件,在事件处理程序中编写下列代码: Private Sub btnCalcs_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnCalcs.Click
Dim n As Integer
'检测输入的是否是数字
Try
n = Me.txtN.Text
Catch ex As Exception
MsgBox("请输入数字", rmation, Me.Text)
Exit Sub
End Try
'只能输入非负整数
If n < 0 Then
MsgBox("请输入一个非负整数", rmation, Me.Text)
Exit Sub
End If
'调用子函数计算并显示结果
Me.lblResult.Text = "计算结果:F(" & n & ")=F(n-1)+F(n-2)=" & calc(n) End Sub
4、F5调试运行程序,结果如图4-2。
图4-2 计算斐波那契数列
【专家提示】
在此程序中应考虑结果溢出的情况,当输入的n值比较大时,程序将会溢出,得不到正确的结果。
因此在编程时要考虑到数数据类型的表示范围。