文档库 最新最全的文档下载
当前位置:文档库 › VB编程之水仙花函数

VB编程之水仙花函数

VB编程之水仙花函数
VB编程之水仙花函数

1)单击"读数据"按钮,则把文件夹中100个0到999之间的整数读入数组a中

2)单击"计算"按钮,则找出这100个整数中的所有水仙花数,并将它们的最大值与最小值分别显示在文本框text1,text2中

Dim a(100) As Integer

Private Sub Command1_Click()

Dim k As Integer

Open App.Path & "\in3.dat" For Input As #1

For k = 1 To 100

Input #1, a(k)

Next k

Close #1

End Sub

Private Sub Command2_Click()

'需考生编写

End Sub

'以下Function 过程用于判断某数是否为水仙花数

Function isnarc(p As Integer)

x = Fix(p / 100)

y = Fix((p - x * 100) / 10)

z = p - x * 100 - y * 10

If p = x ^ 3 + y ^ 3 + z ^ 3 Then

isnarc = True

Else

isnarc = False

End If

End Function

Private Sub Form_Unload(Cancel As Integer)

Open App.Path & "\out3.dat" For Output As #1

Print #1, V al(Text1.Text)

Print #1, V al(Text2.Text)

Close #1

End Sub

问题补充:

设置:max=-1,min=1000 是方便比较数的大小。因为你的数组中的数值最小的是0,最大的是999,那么,让max先=-1,小于你的最小值,在程序执行过程中,只要有水仙花数,他就会大于max,这样他的值才会附给max,min=1000也是同样的道理!

Dim a(100) As Integer

Private Sub Command1_Click()

Dim k As Integer

Open App.Path & "\in3.dat" For Input As #1

For k = 1 To 100

Input #1, a(k)

Next k

Close #1

End Sub

Private Sub Command2_Click()

'需考生编写

dim i as integer

dim max as integer,min as integer

max=-1:min=1000

for i=1 to 100

if isnarc(a(i)) then

print a(i)

if max<=a(i) then max=a(i)

if min>=a(i) then min=a(i)

end if

next

if max<>-1 then text1=max

if min<>1000 then text2=min

End Sub

'以下Function 过程用于判断某数是否为水仙花数Function isnarc(p As Integer)

x = Fix(p / 100)

y = Fix((p - x * 100) / 10)

z = p - x * 100 - y * 10

If p = x ^ 3 + y ^ 3 + z ^ 3 Then

isnarc = True

Else

isnarc = False

End If

End Function

Private Sub Form_Unload(Cancel As Integer) Open App.Path & "\out3.dat" For Output As #1 Print #1, V al(Text1.Text)

Print #1, V al(Text2.Text)

Close #1

End Sub

所谓的水仙花数(梅花数)是指在三位整数(100到999之间)中,百位数、十位数、个位数的立方和等于它本身,如153=1^3+5^3+3^3。

程序代码如下:

Private Sub Command1_Click()

Dim i As Integer, s As Integer

Dim a As Integer, b As Integer, c As Integer

Print "100到999所有水仙花数(也叫梅花数):";

For i = 100 To 999

a = i \ 100 '取百位数

b = i \10 Mod 10 '或b = i Mod 100 \10 取十位数

c = i Mo

d 10 ‘取个位数

s = a ^ 3 + b ^ 3 + c ^ 3 '水仙花数的判断依据

If s = i Then

Print i;

End If

Next i

End Sub

运行结果:

100到999所有水仙花数(也叫梅花数):153 370 371 407

VB 100到2000中有多少个水仙花数

满意回答

Option Explicit

Private Sub Form_Click()

Dim N As Integer, i As Integer, s As String, l As Integer, Sum As Long

For N = 100 To 2000

s = CStr(N)

l = Len(s)

Sum = 0

For i = 1 To l

Sum = Sum + (CInt(Mid(s, i, 1))) ^ l

Next

If Sum = N Then

Print Mid(s, 1, 1) & "^" & l;

For i = 2 To l

Print " + " & Mid(s, i, 1) & "^" & l;

Next

Print " = " & N

End If

Next

End Sub

运行结果:

1^3 + 5^3 + 3^3 = 153

3^3 + 7^3 + 0^3 = 370

3^3 + 7^3 + 1^3 = 371

4^3 + 0^3 + 7^3 = 407

1^4 + 6^4 + 3^4 + 4^4 = 1634

VB6.0函数

Abs 函数返回数的绝对值。 And 运算符执行两个表达式的逻辑连接。 Array 函数返回含一数组的变体。 Asc 函数返回字符串首字母的ANSI 字符代码。 赋值运算符(=) 给变量或属性赋值。 Atn 函数返回数的反正切值。 调用语句将控制移交Sub 或Function 过程。 CBool 函数返回已被转换为Boolean 子类型的变体的表达式。 CByte 函数返回已被转换为字节子类型的变体的表达式。 CCur 函数返回已被转换为货币子类型的变体的表达式。 CDate 函数返回已被转换为日期子类型的变体的表达式。 CDbl 函数返回已被转换为双精度子类型的变体的表达式。 Chr 函数返回指定ANSI 字符码的字符。 CInt 函数返回已被转换为整数子类型的变体的表达式。 Class 对象提供对已创建的类的事件的访问。 Class 语句声明类名 Clear 方法清除Err 对象的所有属性设置。 CLng 函数返回已被转换为Long 子类型的变体的表达式。 颜色常数颜色常数列表。 比较常数用于比较运算的常数列表。 连接运算符(&) 强制两个表达式的字符串连接。 Const 语句声明用于字母值的常数。 Cos 函数返回角度的余弦值。 CreateObject 函数创建并返回对“自动”对象的引用。 CSng 函数返回已被转换为单精度子类型的变体的表达式。 CStr 函数返回已被转换为字符串子类型的变体的表达式。 日期和时间常数在日期和时间运算中用来定义星期几和其他常数的常数列表。日期格式常数用于日期和时间格式的常数列表。 Date 函数返回当前系统日期。 DateAdd 函数返回加上了指定的时间间隔的日期。 DateDiff 函数返回两个日期之间的间隔。 DatePart 函数返回给定日期的指定部分。 DateSerial 函数返回指定年月日的日期子类型的变体。 DateValue 函数返回日期子类型的变体。 Day 函数返回日期,取值范围为1 至31。 Description 属性返回或者设置说明某个错误的字符串。 Dictionary 对象存储数据键、项目对的对象。 Dim 语句声明变量并分配存储空间。 除法运算符(/) 两数相除并以浮点数格式返回商。 Do...Loop 语句当条件为True 或者当条件变为True 时,重复一语句块。Empty 表示尚未初始化的变量值。 Eqv 运算符使两个表达式相等。 Erase 语句重新初始化固定数组的元素并重新分配动态数组的存储空间。 Err 对象含有关于运行时错误的信息。

VB函数与过程

VB函数与过程 教学目的: 1、熟悉VB中函数的含义及函数的分类。 2、掌握VB中用户函数的定义及应用。 3、掌握VB中通用过程的含义及使用方法。 教学重点: 1、VB中函数基本概念的理解。 2、VB中用户函数定义方法。 3、VB中变量的作用范围。 4、VB中通用过程的应用。 课时安排: 理论教学安排6课时,上机练习8课时 一、VB通用过程 1、重复使用的程序段独立定义为过程。 2、过程的分类 (1)事件过程(例如click,dblclick,……) (2)通用过程(由用户定义,可供VB过程来调用;用户定义的过程称为“子过程”)3、通用调用流程: 程序过程: (1)调用过程可以事件过程或者用户定义过程。调用过程按顺序执行时,遇到CALL命令则转向指定的子过程。 (2)子过程按顺序执行,遇到子过程的结束语句时,返回到调用过程的断点后一条语句(CALL的下一条语句)。

(3)调用过程接着执行,遇CALL命令重复(2);否则执行到程序结束。 4、VB中的通用过程: (1)SUB(过程)------无返值 (2)FUNCTION(函数)-------有返值 二、SUB过程 上机练习: P165例7.1 Private Sub Form_Load() Show Call sub1(30) Call sub2 Call sub2 Call sub2 Call sub2 Call sub2 Call sub2 Call sub1(30) End Sub Private Sub sub1(n) Print String(n, "*") 'string函数用来重复出现n次"*" End Sub Private Sub sub2() Print "*"; T ab(30); "*" End Sub 1、Sub过程的定义 Private|public|static sub 过程名(形式参数列表) 过程语句块(可以含有Exit sub) End sub (1)Private表示过程只在当前模块有效,public则表示在整个程序范围都有效。 (2)Static表示过程的局部变量静态分配空间(局部变量保持到整个程序结束才释放,而动态变量则是过程退出就释放变量。) 2、Sub过程的建立 (1)窗体中打开代码窗口(.frm),选择通用过程,直接编写sub过程。 (2)在标准模块(.bas)中来创建sub过程。 第一步,在“工程”菜单或工程面板的快捷菜单中选择“添加模块”。 第二步,在“工具”菜单中选择“添加过程”,弹出“过程对话框”,输入过程名,录入过程代码;也可以直接在通用代码框中录入过程。 注意:在标准模块书写通用过程时,单独保存.bas的模块文件。如果过程中使用窗体等对象,不能省缺对象名。 3、Sub过程的调用 Call 过程名(实参数表) 过程名实参表 上机练习:

VB中sub过程与function函数的区别

function是函数,sub是子程序,都可以传递参数,但函数有返回值,子程序没有 function 可以用自身名字返回一个值,sub 需定义别的变量,用传址方式传回值。 Sub 过程与Function 过程的区别: 1.Sub 过程定义时无需定义返回值类型,而Function 过程一般需要用“As 数据类型”定义函数返回值类型。 2.Sub 过程中没有对过程名赋值的语句,而Function 过程中一定有对函数名赋值的语句。 3.调用过程:调用Sub 过程与Function 过程不同。调用Sub 过程的是一个独立的语句,而调用函数过程只是表达式的一部分。Sub 过程还有一点与函数不一样,它不会用名字返回一个值。但是,与Function过程一样,Sub 过程也可以修改传递给它们的任何变量的值。 4.调用Sub 过程有两种方法: 以下两个语句都调用了名为MyProc 的Sub 过程。 Call MyProc (FirstArgument, SecondArgument) MyProc FirstArgument, SecondArgument 注意当使用Call 语法时,参数必须在括号内。若省略Call 关键字,则也必须省略参数两边的括号。 在VB中,子过程与函数过程只有一处区别(要学好VB一定要记住),区别就是:子过程没有返回值,函数过程有返回值。 子过程用于编写一些代码的集合,函数过程用于建立函数。我兴个例吧。 例如,我要做多处要做如下事件,我只要编写一个子过程,在其它事件下,我只要把子过程的名称写下就行了。 Private Sub ABC(A As Integer, B As Integer, C As Integer) A = 1 B = 1 C = 1 End Sub Private Sub Command1_Click() ABC '按扭一就调用了该子过程了,而不用再写子过程的代码。 End Sub Private Sub Command2_Click() ABC '按扭二就调用了该子过程了,而不用再写子过程的代码。 End Sub

VB系统函数

VB系统函数 Abs 函数返回数的绝对值。 And 运算符执行两个表达式的逻辑连接。 Array 函数返回含一数组的变体。 Asc 函数返回字符串首字母的ANSI 字符代码。 赋值运算符(=) 给变量或属性赋值。 Atn 函数返回数的反正切值。 调用语句将控制移交Sub 或Function 过程。 CBool 函数返回已被转换为Boolean 子类型的变体的表达式。 CByte 函数返回已被转换为字节子类型的变体的表达式。 CCur 函数返回已被转换为货币子类型的变体的表达式。 CDate 函数返回已被转换为日期子类型的变体的表达式。 CDbl 函数返回已被转换为双精度子类型的变体的表达式。 Chr 函数返回指定ANSI 字符码的字符。 CInt 函数返回已被转换为整数子类型的变体的表达式。 Class 对象提供对已创建的类的事件的访问。 Class 语句声明类名 Clear 方法清除Err 对象的所有属性设置。 CLng 函数返回已被转换为Long 子类型的变体的表达式。 颜色常数颜色常数列表。 比较常数用于比较运算的常数列表。 连接运算符(&) 强制两个表达式的字符串连接。 Const 语句声明用于字母值的常数。 Cos 函数返回角度的余弦值。 CreateObject 函数创建并返回对“自动”对象的引用。 CSng 函数返回已被转换为单精度子类型的变体的表达式。 CStr 函数返回已被转换为字符串子类型的变体的表达式。 日期和时间常数在日期和时间运算中用来定义星期几和其他常数的常数列表。日期格式常数用于日期和时间格式的常数列表。 Date 函数返回当前系统日期。 DateAdd 函数返回加上了指定的时间间隔的日期。 DateDiff 函数返回两个日期之间的间隔。 DatePart 函数返回给定日期的指定部分。 DateSerial 函数返回指定年月日的日期子类型的变体。 DateValue 函数返回日期子类型的变体。 Day 函数返回日期,取值范围为 1 至31。 Description 属性返回或者设置说明某个错误的字符串。 Dictionary 对象存储数据键、项目对的对象。 Dim 语句声明变量并分配存储空间。 除法运算符(/) 两数相除并以浮点数格式返回商。 Do...Loop 语句当条件为True 或者当条件变为True 时,重复一语句块。

水仙花数

1.“水仙花数”是指这样的数,其各位数字的立方和等于该数本身.编写程序求100至999的范围内有多少个水仙花数 #include main() { int dig,k,m,s,count; count=0; for(k=100;k<=999;k++) { dig=0; s=0; dig=k/100; s=s+dig*dig*dig; m=k%100; while(m!=0) { dig=m%10; s=s+dig*dig*dig; dig=m/10; s=s+dig*dig*dig; m=0;

} if(s==k) { count++; } } printf("%d\n",count); } 2.(x,y,z)满足方程:x^2+y^2+z^2=55^2(注:要求x>y>z);则(x,y,z)称为方程的一个解.试求方程的整数解(包括负整数解)的个数. #include main() { int x,y,z,s,n=0; for(x=-55;x<=55;x++) for(y=-55;y

for(z=-55;z main() { int dig,k,m,s,count; count=0; for(k=100;k<=400;k++) { dig=0; s=0; dig=k/100;

关于找出N位数的水仙花数的程序

#include #include //此程序可以找出任意输入的N位数中所包含的全部水仙花数 int xz(int b){int i=2,di=10; while(i1){jieguo=jieguo*m;mi=mi-1;} return jieguo;}//此函数用于求一个数的mi次方其中m为被操作数 int kf(int k,int z){return k/z;}//利用取整求出一个数的最高次幂对应的值 int main(){int ji=0; int n;//确定输入的n的值 int shu;//此数用于存放要寻找最高次幂的值的数 int di;//此数用于确定变化的用于取整的底 int wei;//此数用于存放所求数的某一位的值 int zuixiao;//此数是确定确定次幂的数的最小值 int zuida;//此数是确定确定次幂的数的最大值 int cifanghe=0;//此数用于存放次方的和 cout<<"请输入将要寻找水仙花数的次幂数n的值n="; cin>>n; shu=xz(n); di=xz(n); zuixiao=xz(n); zuida=10*xz(n)-1; while(shu>=zuixiao&&shu<=zuida) {int quedingshu;//此数用于存放某一确定的数用于操作 int dibian;//此数用于替代对于某一具体的数的底 int cifanghe1; cifanghe1=cifanghe; dibian=di; quedingshu=shu; while(quedingshu>0){ wei=kf(quedingshu,dibian); cifanghe1=cifanghe1+cifang(wei,n); quedingshu=quedingshu-wei*dibian; dibian=dibian/10;} if(cifanghe1==shu){ji++;cout<

vb函数与表达式练习题

函数与表达式练习题 一、选择题 1、X=-9.8,表达式INT(X)+FIX(-X)的值是( ) A.1 B.17 C.0 D.-1 2. 执行A=9\4后,A的值为( 2 ) A.9/4 B.3 C.2 D.2.25 3.表达式Int(8*sqr(36)*10^(-2)*10+0.5)/10的值是(). (A) .48 (B) .048 (C) .5 (D) .05 4.表达式Val(".123E2CD")的值是(). (A).123 (B) 12.3 (C) 0 (D) .123E2CD 5. 表达式SQR(2^3^2) MOD 7的值为( ) A.0 B.1 C.2 D.3 6.表达式(7\3+1)*(18\5-1)的值是(). (A)8.67 (B)7.8 (C) 6 (D)6.67 7.表达式5^2 Mod 25\2^2的值是(). (A)1 (B)0 (C)6 (D)4 8.表达式25.28 Mod 6.99的值是(). (A)1 (B)5 (C)4 (D)出错 9.下面表达式中,()的运算结果与其他三个不同. (A) Exp(-3.5) (B) Int(-3.5)+0.5 (C) -Abs(-3.5) (D) Sgn(-3.5)-2.5 10.Int(100*Rnd(1))产生的随机整数的闭区间是(). (A) [0,99] (B) [1,100] (C) [0,100] (D) [1,99] 11.产生[10,37]之间的随机整数的Visual Basic表达式是(). (A) Int(Rne(1)*27)+10 (B) Int(Rnd(1)*28)+10 (C) Int(Rnd(1)*27)+11 (D) Int(Rnd(1)*28)+11 12.表达式Int(Rnd(0)+1)+Int(Rnd(1)-1)的值是(). (A) 1 (B) 0 (C) 01 (D) 2 13.表达式Int( - 17.8) +Sgn(17.8)的值是(). (A) 18 (B)-17 (C) -18 (D) -16 14.表达式Int( - 17.8) +Abs(17.8)的值是(). (A) 0 (B) 0.8 (C) - 0.2 (D) 0 34.8 15.表达式Left("how are you",3)的值是(). (A) how (B) are (C) you (D) how are you 16.表达式Right("Biejing",4)的值是(). (A) Bei (B) jing (C) eiji (D) ijin 17.表达式Abs( - 5) +Len("ABCDE")的值是(). (A) 5ABCDE (B) 0 5ABCDE (C) 10 (D) 0 18.表达式Mid("SHANGHAI",6,3)的值是(). (A) SHANGH (B) SHA (C) ANGH (D) HAI 19.函数Len(Str(Val("123.4")))的值为(). (A) 11 (B) 5 (C) 6 (D) 8 20.设A="12345678",则表达式Val(Left(A,4) + Mid(A,4,2))的值为(). (A) 123456 (B) 123445 (C) 8 (D) 6 21.设A="abcdefghijklm",下面()的函数值为"jklm".(多选) (A) Mid(A,10,14) (B) Right(A,4) (C) Mid(A,10,4) (D) Left(A,10,4) 22.函数InStr("VB程序设计教程","程序")的值为(). (A) 1 (B) 2 (C) 3 (D) 4 23.函数Ucase(Mid("Visual basic",8,5))的值为(). (A) Visual (B) basic (C) VISUAL (D) BASIC 24.表达式Str(Len("123")) + Str(77.7)的值为(). (A) 377.7 (B) 3 77.7 (C) 80.7 (D) 12377.7 25.表达式( - 1)*Sgn( - 100 +Int(Rnd*100))的值是(). (A) 0 (B) 1 (C) - 1 (D) 随机函数 26. 15.5\2的结果是__ ___。 (A) 1 (B) 1.5 (C) 7 (D) 8 27. 下列选项中,为字符串常量的是______。 (A) 6/12/2001 (B) "6/12/2001" (C) #6,12,2001# (D) 6,12,2001# 28. 设有如下声明: Dim X As Integer 如果Sgn(X) 的值为-1,则X的值是( ) A) 整数B) 大于0的整数C) 等于0的整数D) 小于0的数 29.在一个语句行内写多条语句时,语句之间应该用()分隔.

vb函数与过程习题精选

第三章函数与过程习题 一、选择题 1.如果要声明一个全局性的符号常量,则应将该声明放在( )。 A.过程中 B.窗体模块的通用声明段中 C.标准模块的通用声明段中 D.窗体模块或标准模块的通用声明段中 2.定义过程的语句为: Sub Suba(X As Single,Y As Single) 则正确的调用语句为( )。 A.Suba 10,12 B.Call Suba("A",Sin(1.57)) C.Call Suba X,Y D.Call Suba(1 2,1 0,x) 3.在窗体的通用段声明变量时,不能使用( )关键字。 A.Dim B.Public C.Private D.Static 4.Sub过程与函数过程最主要的区别是( )。 A.后者可以有参数,而前者则不行 B.前者可以用Call语句直接调用,而后者则不行 C.两种过程的参数传递方式不同 D.前者的过程名不能返回值,而后者的过程名则可以返回值 5.要在过程调用后返回两个值,下列过程定义正确的是( )。 A.Sub Proc(ByVal n,ByVal m) B.Sub Proc(n,ByVal m) C.Sub Proc(n,m) D.Sub Proc(ByVal n,m) 6.在程序模块的开头声明Option Explicit,则( )。 A.这个模块里所用到的变量必须声明后才能使用 B.整个工程里所用到的变量必须声明后才能使用 C.这个模块里所用到的变量不需要声明就能使用 D.整个工程里所用到的变量不需要声明就能使用 7.若希望在离开某过程后还能保存该过程中局部变量的值,则应使用( )关键字在该过程中定义局部变量。 A.Dim B.Private C.Public D.Static 8.在一个多窗口程序中,可以在标准模块或某个窗体模块的通用声明处分别用( )语句定义一个在所有窗体模块中都可以引用的变量IntA。 A.Private IntA As Integer,Public IntA As Integer B.Public IntA As Integer,Private IntA As Integer C.Public IntA As Integer,Public IntA As Integer D.Private IntA As Integer,Private IntA As Integer 9.在应用程序中用“Private Function Fun(X As Integer,Y As Integer)”定义了Fun 函数。调用Fun函数的过程中的变量I、J均定义为Integer型,能正确引用Fun函数的是( )。 ①Print Fun I,J ②Call Fun(I,3.65)

用Matlab求水仙花数,完美数,回文数和亲合数

题目:对深圳市人口及医疗的预测 编号: 10055 队长李荣 姓名: 李荣(09041117) 王遂(09041124) 李春晓(09055025)

1.水仙花数: (1)题目 若一个三位数自然数的各位数的各位数字的立方和等于该数本身,则称该数为水仙花数,例如,153=1^3+5^3+3^3,所以153为水仙花数,编程计算所有水仙花数. (2)分析问题: 本题特点在于一个数的各个位数立方和与其本身的关系很明确且很简单,可以用if语句或find语句来完成.如果用if语句,则又有两种选择:1.命一个三位数,再表示其各个位数的数字;2.命各个位数的数字,再表示该三位数.如果用find语句,其思路与if语句类似. (3)问题求解: 方法一: for x=100:1:999 a=fix(x/100); b=fix(x/10-10*a); c=x-100*a-10*b; if x==a^3+b^3+c^3 x end end 方法二: for x=1:1:9 for y=0:1:9 for z=0:1:9 if x^3+y^3+z^3==100*x+10*y+z m=100*x+10*y+z end end end end 方法三: shui=100:999; i=floor(shui/100); j=floor(mod(shui,100)/10); k=floor(mod(shui,10)); p=i.^3+j.^3+k.^3;

shui(find(p==shui)) (4)结论及分析: 通过实验,结果正确,证明分析无误. (5)结果: 153 370 371 407 2.回文数 (1)题目: 对于一个自然数,若将各位数字倒序排出,加到原数字上,反复多次,若能得到一个从左到右读和从有到左读完全一样的数,则称该自然数能产生回文数.通过编程计算,你能找出多少个能产生回文数的数,又能找到多少不能产生回文数的数,二者的最小数是多少? (2)分析问题: 本题关键在于如何将一个数的各个数位的数字倒序排出,并加到原数上.又

vb过程间参数的传递

一、形式参数与实际参数 1 形式参数:就是在定义函数或过程的时候命名的参数。通俗讲就是一个记号。 2 实际参数:就是在执行时,调用函数或过程时,传递给函数或过程的参数。通俗讲就是实际值。 3 参数嘛,就是一个可变量,它随着使用者的不同而发生变化。举个例子,在中学的时候学过sin(x)函数,这里的x就是形式参数,当你需要求1的正弦值时,你会使用sin(1),这里的1就是实际参数。 4 形参和实参间的关系:两者是在调用的时候进行结合的,通常实参会将取值传递给形参,形参去之后进行函数过程运算,然后可能将某些值经过参数或函数符号返回给调用者。 在过程之间传递参数,形式参数和实际参数是很重要的概念。我们通常说形式参数是过程为了运行的需要预先在内存中保留的地址单元,而实际参数就是在调用过程时放入这些内存地址中进行处理的数据。如果形式参数是一个盒子,那么实际参数就是盒子里面装的东西。在参数传递的过程中,形式参数和实际参数的数据类型要一致。 二、参数传递 函数参数的传递方式有两种,一种是按地址传递,一种是按值传递。 按地址传递:调用函数时,不直接把实参的值“告诉”函数,而是把地址“告诉”它,函数根据这个地址来寻找并处理值,如果函数修改了这个值,也就修改了这个地址对应的值。 按值传递:把值复制一份再给函数,这个值只属于函数,函数对这个值的修改不影响原值。 VBScript中,要按地址传递可在形参前加 ByRef,要按值传递得在形参前加 ByVal,如果什么也不加则表示按地址传递。 1)按值传递

如果在声明过程时,形式参数名前面加上关键字“ByVal”,即规定了在调用此过程时该参数是按值传递的。按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所做的改动只影响副本而不会影响变量本身。 代码1 ********************************** Private Sub Command1_Click() Dim num1 As Integer num1 = 5 Print num1 Call MySub(num1) Print num1 ' 输出结果为5 Call MySub2(num1) Print num1 ' 输出结果仍为5 End Sub Private Sub MySub(ByVal A As Integer) A = 10 End Sub Private Sub MySub2(ByVal A As String)

2.1VB语言及程序开发环境

2.1.2VB语言及程序开发环境 一、教学目标 1、知识与技能 掌握VB定义的常用的基本数据类型,常量与变量的定义方法,运算符、函数和表达式的描述。熟悉VB程序设计语言的开发环境,能调试简单的VB程序。 2、方法与过程 本节涉及到基础知识较多,所以要一个一个问题解决,从一个简单的求圆的面积的程序入手,从中分析VB程序一般包括的四部分,基本数据类型、常量与变量,运算符、函数和表达式,而且结合练习来加强对这些新知识的巩固。通过介绍VB程序的开发环境中的菜单、常用工具和常用窗口等,再通过上机操作运行一个程序,让学生更容易上手。 3、情感态度和价值观 这一节是学习VB程序的重要的入门课,授课时要注意结合学生的思路,逐个问题解决,不可一蹴而就。 二、重点难点 1、教学重点 (1)VB常用的的基本数据类型,常量与变量,运算符和表达式 (2)VB程序的开发环境 2、教学难点 把本节的内容加以运用 三、教学环境 1、教材处理 教材选自《广东省普通高中信息技术选修一:算法与程序设计》第二章第一节,教材的内容编排合理,导入的方式也很好,而且能结合练习,所以直接使用教材的内容,不作修改。练习的题量可以适当地增加。 2、预备知识 学生已掌握使用计算机解决问题的四个步骤——分析问题、建立模型、设计算法和编写程序。 3、硬件要求 建议本节课在多媒体电脑教室中完成,有广播教学系统或投影仪。 4、所需软件 学生机要安装VB6.0或以上版本。 5、所需课时 2课时

四、教学过程 导入: 以下是一个“求半径为r的圆的面积”的程序,请你注意观察程序的组成结构及其功能,并思考如下的问题: (1)程序有多少行,每一行的作用是什么? (2)如果按语句的作用区分,这个程序包含几个部分? Private sub command1_click() 定义名为command1_click()的事件过程 Const pi as single=3.14 说明程序中pi是常量∏ Dim r as single,s as single 定义半径r和面积s为单精度实型 r=inputbox(“r=”,”请输入半径”)输入r的值 s=pi*r*r 把表达式pi*r*r的值赋给s print “圆的面积s=”;s把s的值输出到当前的窗体上 End sub 过程结束 考察上述程序,我们容易看到:程序共有代码7行,每一行都是VB的一个语句,VB的程序就是由这样的一组语句组成。每一个语句都是按照一定的规则书写的。 总结上述分析,我们可以得到VB程序的一般包括如下部分: (1)数据类型说明部分 (2)数据的输入部分 (3)数据的处理部分 (4)数据的输出部分 一、基本数据类型 描述客观事物的数、字符以及所有能输入到计算机中,并被计算机程序加工处理的集合称为数据。数据既是计算机程序处理的对象,也是运算产生的结果。 为了更好地处理各种数据,VB定义了多种数据的类型。基本数据类型是系统预先定义的数据类型,表2-1中列出了VB定义的常用的基本数据类型。 例如在上述的程序中,既有单精度实型数的数据(如3.14等),也有字符类型的数据,如“输入半径”、“圆的面积S=”。 二、常量与变量 (1)常量

判断水仙花数

判断水仙花数 水仙花数是指一个数各位数的立方和与该数本身的数值相等的数,如371=3*3*3+7*7*7+1*1*1,则371 是一个水仙花数。 (1)从控制台输入一个数,判断该数数是不是水仙花数; (2)编程找出1000 以内所有水仙花数。(选做) 程序源代码(学生填写): (1)、import java.util.Scanner; public class Flower1 { public static void main(String[] args) { int x,a,b,c; System.out.println("请输入一个数:"); Scanner scanner = new Scanner(System.in); x=scanner.nextInt(); a=x/100; b=x/10-10*a; c=x%10; if(a*a*a+b*b*b+c*c*c==x) System.out.println(" 是一个水仙花数!"); else System.out.println(" 不是水仙花数!"); } } (2)、import java.util.Scanner; public class Flower2 { public static void main(String[] args) { int i,a,b,c; System.out.println("1000以内的水仙花数为:"); for(i=1;i<1000;i++) { a=i/100; b=i/10-10*a; c=i%10; if(i==a*a*a+b*b*b+c*c*c) System.out.println(" "+i); } }

水仙花数

水仙花数 水仙花 什么是水仙花数 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:水仙花数是指一个 n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153) 常见水仙花数 三位的水仙花数共有4个:153,370,371,407; 四位的水仙花数共有3个:1634,8208,9474; 五位的水仙花数共有3个:54748,92727,93084; 六位的水仙花数只有1个:548834; 七位的水仙花数共有4个:1741725,4210818,9800817,9926315; 八位的水仙花数共有3个:24678050,24678051,88593477 …… …… 使用高精度计算,可以得到超过INT类型上限的水仙花数: 5: 93084 5: 92727 5: 54748 6: 548834 7: 9800817 7: 4210818 7: 1741725 7: 9926315 8: 24678050

8: 24678051 8: 88593477 9: 146511208 9: 912985153 9: 472335975 9: 534494836 10: 4679307774 11: 32164049650 11: 40028394225 11: 42678290603 11: 49388550606 11: 32164049651 11: 94204591914 11: 44708635679 11: 82693916578 14: 28116440335967 16: 4338281769391370 16: 4338281769391371 17: 35875699062250035 17: 21897142587612075 19: 3289582984443187032 19: 4929273885928088826 19: 4498128791164624869 20: 63105425988599693916 21: 449177399146038697307 21: 128468643043731391252 23: 27907865009977052567814 23: 35452590104031691935943 23: 27879694893054074471405 23: 21887696841122916288858 24: 174088005938065293023722 24: 188451485447897896036875 (为环保起见,24位以上的水仙花数略) 理论上,最大的水仙花数不超过34位。 求取方法(非高精度) 以下为在各种编程语言中实现求取水仙花数的方法(非高精度)。

水仙花数(matlab编程求解)

水仙花数是指一个 n 位数( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153) 三位的水仙花数共有4个:153,370,371,407; 四位的水仙花数共有3个:1634,8208,9474; 五位的水仙花数共有3个:54748,92727,93084; 六位的水仙花数只有1个:548834; 七位的水仙花数共有4个:1741725,4210818,9800817,9926315; 八位的水仙花数共有3个:24678050,24678051,88593477 下面我们运用Matlab编写程序求解水仙花数。 Matlab程序如下: function shuixian(n) %n为用户输入的一个整数 W=zeros(1,n); ss=0; for m=10^(n-1):10^n-1 for i=1:n W(i)=fix(rem(m,10^(n+1-i))/10^(n-i)); end W=W.^n; for j=1:n ss=ss+W(j); end if m==ss disp(m); end ss=0; W=zeros(1,n); end 运行结果示例: >> shuixian1(3) 153 370 371 407 >> shuixian1(4) 1634 8208 9474 >> shuixian1(5) 54748 92727 93084

>> shuixian1(6) 548834 >> shuixian1(7) 1741725 4210818 9800817 9926315 解析:上述程序,在理论上可以求解一切水仙花数,但限于计算机的精度,当n 较大时,程序运行时间较长。整个程序简洁实用。

C#程序设计-多位水仙花数计算

《C#程序设计》课程设计 题目:多位水仙花数的计算机实现专业:计算机科学与技术 学号: 姓名: 指导老师: 完成日期:2012-04-13

目录 1 前言 (1) 2 课题介绍 (1) 2.1功能要求 (1) 2.2主要任务 (1) 2.3运行环境 (1) 2.4开发语言 (2) 3 概要设计与详细设计 (2) 3.1系统流程图 (2) 3.2详细设计 (2) 4 关键代码与特色功能的实现 (3) 4.1关键代码 (3) 4.2特色功能的实现 (12) 5 课程设计总结 (15) 参考文献 (15) 评语及成绩.................................. 错误!未定义书签。

1 前言 在正整数中存在着许多数具有迷人的特性,如谭浩强教授在文献[1]第 120页中提到的水仙花数.所谓的水仙花数就是满足组成它的各位数字的n次方之和恰好等于它本身的n位正整数。最早被人们认识的水仙花数为 153。谈祥柏教授在文献[2]第74—75页中谈到“数论大师(Hardy)在其名著《数学家的辨解》中曾指出过,有四个三位数具有这种性质,除153外,其他三数为370,371与407。”,文献[3]也给出了由88个自然数组成的水仙花数表。近年来.计算机的发展及应用突飞猛进.也为水仙花数的计算提供了很好的计算工具。但是,如果对每一个n 位正整数、求出它的各位数的次方之和,进而通过判别得到的和是否与它本身相等来判别该数是否为水仙花数,则需要遍历每一个正整数,可以看出每当位数增加1时,所要处理的正整数个数将增加1O倍。因此,当位数n增大时,其计算量将呈几何级数骤增。显然这种方法只适用于n 较小的情况,对于较大的n如果也采用这种方法,即使应用计算机计算也是很困难的。本文从应用计算机计算水仙花数的角度出发,讨论应用计算机快速计算所有水仙花数的算法。 2 课题介绍 2.1功能要求 (1)用C#语言实现程序设计; (2)循序渐进地从低位到多位展示水仙花数的计算机实现; (3)界面友好(良好的人机互交),程序要有注释。 2.2主要任务 (1)创建窗体作为交换和展示界面; (2)实现三位水仙花数的多种实现; (3)实现3-9位水仙花数的计算和展示; (4)实现3-17位水仙花数的计算和展示; (5)定义结构实现3-60位水仙花数的计算。 2.3运行环境 (1)WINDOWS2003/XP系统

VB中的过程

VB中的过程 函数的调用方法 VB程序是由过程组成的,每个过程是为了完成一定的任务,由一组独立的程序代码组成。VB中有两大类过程,事件过程和通用过程。事件过程是当对象的某个事件发生时,对该事件做出响应的程序代码段,它是应用程序的主体。当多个不同的事件过程需要执行一段相同的代码,完成相同或相似的任务,为了避免程序代码的重复,同时便于程序代码的修改,把这段代码独立出来,作为一个过程,这样的过程称为通用过程。可见,通用过程是多个事件过程的,相同之处、公共部分。 事件过程是由对象的某一时间驱动或由系统自动调用,而通用过程不依附于某一对象,通过被调用语句(如call语句)调用才起作用,而且通用过程可以被多次调用,调用该过程的过程叫调用过程。 通用过程分为两种类型,sub过程和Function过程。Function和sub过程的区别:Function过程有返回值,可以像变量一样出现在表达式中, 如:Function max(m as integer,n as Integer)as Integer If m

End sub Sub过程不返回值,就不能出现在表达式中。 所以声明Function过程要指明数据类型,也是返回值的数据类型。默认为variant类型。 Function过程的调用直接使用函数名的调用方法有两种形式: 1,如果函数又返回值,按如下方式调用: 被赋值对象=函数名(实际参数1,实际参数2,…)t=max(x,y) 2,如果放弃函数的返回值,一般按如下方式调用: 函数名实际参数1,实际参数2,… 使用call语句来调用Function过程,这种方法放弃了函数的返回值。 Call 函数名(参数1,参数2,…) 因为在VB中代码是模块化的,所以不同的模块就需求不同的过程,过程是有作用域的。 VB应用程序的结构如下: 模块级过程又称为文件级过程,是在某个模块内定义的过程,在定义sub 过程和Function过程时选择Private关键字,该过程仅限于本模块中调用。 全局级过程又称工程级过程,是指在定义sub过程和Function过程时选择Public关键字或缺省选择,作用域为整个工程,可被该工程中的所有过程调用。 调用窗体中的过程:格式为:call form1.subex() 调用类模块中的过程:不用类名,而是用该类提前声明的实例变量名,如: Dim sample as new class1 Call sample.subex() 调用标准模块中的过程:如果该过程在整个工程中名字是唯一的,可以按名直接调用。如果其他模块中有同名过程,为了区别需要前置模块名。

编程java求水仙花数

提示:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。 输入一段范围值,在这段范围中找出它的水仙花数。 import java.util.Scanner; //求水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153) public class SumDaffodil { /** * @param args */ static int Length; @SuppressWarnings("static-access") public static void main(String[] args) { //创建本类的实例,用来调用本类中的方法 SumDaffodil SDaffodil=new SumDaffodil(); System.out.println("求一个范围内的水仙花数!"); System.out.print("请输入大于或等于100的起始值:"); Scanner Sc=new Scanner(System.in); int OriginNumber=Sc.nextInt(); System.out.println(); System.out.print("请输入大于零的最终值:"); Scanner Sc1=new Scanner(System.in); int FinnalNumber=Sc1.nextInt(); System.out.println(); //判断输入的数是否大于零 if((OriginNumber>=100)&&(FinnalNumber>0)){ for(;OriginNumber<=FinnalNumber;OriginNumber++){ int i=OriginNumber; int b=0; int sum=0; Length=(OriginNumber+"").length();

相关文档