
①把身份证前 17 位的每个数字和加权系数相乘并累加求和。身份证号码前17位数的加权系数见下表:
身份证号位数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
加权系数 | 7 | 9 | 10 | 5 | 8 | 4 | 2 | 1 | 6 | 3 | 7 | 9 | 10 | 5 | 8 | 4 | 2 |
②根据步骤①求得的和值,与11做取余运算得到序号,再根据序号提取校验码字符。如:所得和值除以11的余数为“0”,则对应的校验码为“1”。如下表:
序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
校验码 | 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
若步骤②中提取的校验码和身份证号最后一位相同,则校验通过,否则校验失败。
某人根据上述原理设计了一个身份证校验VB程序,功能如下:程序启动时从数据库student.accdb中读入全校学生身份证数据(全校共15个班级),并在列表框List1中显示,单击“校验”按钮Command1,在列表框List2中输出各班身份证号出错学生的信息和出错人数,若某班无出错学生,则不显示。程序界面如图所示。实现上述功能的VB程序如下,请回答下列问题:
Const max = 1000
Dim n As Integer '存放学生人数
Dim sfzh(1 To max) As String, xm(1 To max) As String
'数组sfzh、xm分别存放学生身份证号、姓名
Dim bj(1 To max) As Integer, flag(1 To max) As Boolean
'数组bj、flag分别存放学生班级、身份证校验结果
Dim cw(1 To 15) As Integer '数组cw存放各班身份证号出错人数
Function check(x As String) As Boolean
'本函数功能:校验身份证号x,若校验通过返回True;否则返回False
Dim i As Integer, sum As Integer, xh As Integer, jym As String
Dim a(1 To 18) As Integer, w(1 To 18) As Integer
jym = "10X98765432" : sum = 0
For i = 18 To 2 Step -1
a(i) = Val(Mid(x, 19 - i, 1))
Next i
For i = 18 To 1 Step -1
w(i) = 2 ^ (i - 1) Mod 11
Next i
For i = 2 To 18
sum = sum + a(i) * w(i)
Next i
xh = sum Mod 11
If = Mid(x, 18, 1) Then check = True Else check = False
End Function
Private Sub Form_Load()
'本过程从数据库中读入指定数据到数组sfzh、xm、bj,并在List1中显示
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=" + App.Path + "\student.accdb"
conn.Open
Set rs.ActiveConnection = conn
rs.Open "select * from stu"
'本过程其它语句略,学生人数存变量n,数组cw各元素初值置为0
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
For i = 1 To n
If check(sfzh(i)) Then flag(i) = True Else flag(i) = False
Next i
For i = 1 To 15
For j = 1 To n
If bj(j) = i And flag(j) = False Then
List2.AddItem sfzh(j) + " " + xm(j)
End If
Next j
If cw(i) > 0 Then
List2.AddItem Str(i) + "班共有以上" + Str(cw(i)) + "个身份证号错误"
List2.AddItem ""
End If
Next i
End Sub
●小球落在孔上,入孔:
●垂直落在平板上,停下;
●落在左滑坡向左滚动,右滑坡向右滚动。若遇平板继续滚动,遇孔则入孔;遇隔板或滑坡则停下;或超出边界;
●落在隔板上,可能向左或向右滑落,概率分别为50%。滑落后运动规律与左右滑坡相同。
假设两个隔板不相邻且左右滑坡总是以“八”出现。小球入孔或超出边界则消失,记消失的概率为100%;小球若停下,记消失的概率为0。
如图a所示,小球随机落下,最终消失的平均概率计算过程如下:
(100%+100%+100%+0.5*(100%+0)+0+0+100%+100%+0.5*(100%+100%)+100%)/10=75%
编写VB程序求解小球消失的概率,程序运行界面如图b所示,代码如下,请回答下列问题:
Dim s As string
Dim prob As single
Private Sub Command1 Click()
Dim i As Integer, c As string
s Text1 Text
prob =0
For i =1 To Len(s)
c= Mid(s, i, 1)
If c=“.” Then
prob= prob +100
ElseIf c =“/”Then
prob= prob slope(i, True)
ElseIf c=“\” Then
prob prob+ slope(i, False)
ElseIf c=“|” Then
prob =prob+
End If
Next i
Text2 Text= Str(prob Len(s))
End sub
Function slope(k As Integer, flag As Boolean)As Single
Dim c As string
If flag Then
For j=
c= Mid(s, j, 1)
If c =“.” Then slope =100: Exit For
If c=“|” Or c=“\”Then slope =0: Exit For
Next j
If j< 1 Then slope =100
Else
For j=k+ 1 To Len (s)
c= Mid(s, j, 1)
If c=“.”Then slope =100: Exit For
If c=“|” Or c=“/” Then slope =0: Exit For
Next j
If j>Len(s) Then slope =100
End If
End Function
奇数阶幻方的构造是所有幻方中最简单的,可以按照如下规则来实现:
⑴将1放在第一行中间一列;(如图2)
⑵从2开始直到n*n为止,各数按下列规则存放:
假设当前要存放的数为k,则k存放在k-1)数的右上方并按照规则
①若(k-1)放在第1行且不是最后一列,则将k存放在n行,(k-1)所在列右侧;(如图3)
②若(k-1)放在第n列且不是第一行,则将k存放在第1列,k-1)的上1行;(如图4)
③若(k-1)即不在第1行也不在最后1列:
若(k-1)右上方有数,则将k放在(k-1)的下1行的同一列。(如图5)
若(k-1)右上方没有数,则将k放在(k-1)的右上方;(如图6)
④若(k-1)在第1行第n列,将k填在(k-1)的正下方(如图7)
Private Sub Command1_Click()
Dim i As Integer, i As Integer, n As Integer ‘i表示行,j表示列
Dim a(1 To 1000) As Integer, k As Integer ‘数组a依次保存幻方中的数
Dim s As String
n= Val(Text1.Text)
j= ① : a(j)=1
i=1
For k =2 To n*n
If i=1 And j<>n Then
i=n: j=j+1
a((i-1)*n+j)=k
ElseIf j= n And i<> 1Then
② : j=1
a((i-1)*n+j)=k
ElseIf i=1 And j=n Then
i+1 =1
a((i-1)*n+j)=k
ElseIf i <> 1 And j<> n Then
If ③ Then
i=i-1:j=j+1
va((i-1)*n+j)=k
Else
i=i+1
a((i-1)*n+j)=k
End If
End If
Next k
List1. Clear
For i=1 To n
s=“”
For j=1 To n
s=s+ format(a((i-1)*n+j))
Next j
List1AddItem s
Next i
End Sub
Function format( x As Integer) As String ‘将数字字符串格式化为3个字符长度
Dim n As integer, i As Integer
format =Str(x)
n=Len(format)
For i=1 To ④
format ="”+ format
Next i
End Function
① ② ③ ④
Dim a(1 To 50) As Integer
Private Sub Command1_Click ( )
Dim i As Integer
k=0: i=3
Do While i <= 100
If
Then ‘改错
k = k+1
a(k) = i
①
i = i+2
Loop
For i=2 To k
If ② Then
List1. AddItem str(a(1-1))+“和”+str(a(i))
End If
Next i
End sub
Function prime( x As Integer) As Boolean ‘判断是不是质数
prime = True
For i=2 To Int (Sqr(x))
If x Mod i = 0 Then prime= False : Exit For
Next i
End Function
① ②
Private Sub Command1_Click()
Dim n As Integer, m As Integer
n=2: m=0
Do While m<3
n=n+2
If fun(n) Then
Print n
m=m+1
End If
Loop
End Sub
Function fun(x As Integer) As Boolean
fun=False
If x/2=Int(x/2) Then
fun=fun(x/2)
Else
If x=1 Then fun=True
End If
End Function
将数组a转换成数组c的方法描述如下:
①将数组a中的元素依次存储到数组c中,把当前数组c看作第一层;
②把第一层中的各元素进行如下处理:奇数项值不变,偶数项的值更新为自己与自己前一项的和,将更新后的数组元素看作第二层;
③把第二层中的各元素,按上述方法进行同样操作,更新后的数组元素看作第三层;
④以此类推,直到当前层中仅有一项为止。
例如x=11时,转换过程如图所示:
借助数组c,可快速计算出数组a中前x项的和.例如,数组a中前11项的和,可由表达式c(11)+c(10)+c(8)得到.表达式具体分析过程如下:
②表达式第一项为c(11);
②将下标11转换成二进制数1011,计算该二进制数最右边的“1”所对应的权值,再用11减去此权值得到10,即表达式第二项为c(10);
③按上述方法继续操作,直到计算结果等于0为止。
小龙依据上述方法设计了如下vb程序.请回答下列问题:
Dim n As Integer
Dim a(1 To 1000) As Long, c(1 To 1000) As Long
Private Sub Form_Load()
'读取n个数据,并存储到数组a中(代码略)
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, space As Integer
For i = 1 To n
c(i) = a(i)
Next i
k = 2 '当前层第一个偶数项的位置
space = 1 '当前层偶数项与前一项的间距
Do While k <= n
For i = k To n Step k
c(i) = c(i) + c(i - space)
Next i
k = k * 2
①
Loop
End Sub
Private Sub Command2_Click()
Dim x As Integer, sum As Long
x = Val(Text1.Text): sum = 0
Do While x <> 0
sum = sum + c(x)
②
Loop
Text2.Text = Str(sum)
End Sub
Function lowbit(x As Integer) As Integer
Dim temp As Integer
temp = x: lowbit = 1
Do While ③'
lowbit = lowbit * 2
temp = temp \ 2
Loop
End Function
依据该算法思想,设计一个VB程序,实现该功能的代码如下,请回答下列问题。
Const m = 6
Const n = 5
Dim a(1 To (m + 1) ∗ n) As Integer
Private Sub Form_Load()
'数组初始化,生成 m×n 个两位数的随机整数并赋值给数组a
Randomize
For i = 1 To m ∗ n
a(i)= ①
Next i
End Sub
Private Sub Cod1_Click()
Dim i As Integer, j As Integer
For i = 1 To n
②
Next i
'将计算后数据,按 m + 1 行,n 列输出到列表框中,代码略
End Sub
Function sum(y As Integer) As Integer '函数功能是计算每列数据和
sum = 0
For i = ③
sum = sum + a(i)
Next i
End Function
① ② ③
Function f(x As Integer) As Single
f=Abs(x)
End Function
该函数返回值的数据类型是( )
1)将该字符的ASCII码转换成对应的2位十六进制数;
2)将产生的十六进制数互换位置;
3)步骤2)产生的二位十六进制数即为该明文字符加密后的密文字符。
小明按照上述方法,设计了一个字符串加密的VB程序,功能如下:单击“生成密文”按钮Command1,程序依次将文本框Text1中每个字符按上述规则进行加密处理,连接这些加密字符,最后在文本框Text2中输出加密结果。程序运行界面如图所示。

实现上述功能的VB程序如下:
Private Sub Command2_Click()
Dim s As String, a As String, ans As String
Dim c As Integer, i As Integer
Dim s1 As String
s=Text1.Text
ans=” ”
For i=1 To Len(s)
a=Mid(s, i, 1)
s1=
ans=
Next i
Text2.Text=ans
End Sub
Function DToh(x As Integer) As String
Dim str As String
str=”0123456789ABCDEF”
Do While x <> 0
t=x Mod 16
x=x \16
Loop
End Function
该程序的代码如下:
Private Sub Command1_Click()
Dim n,r,j,i As Integer
n=Val(Text1.Text)
For i=1 Ton-1
If ① Then
List1.AddItem Str(i)
End If
Next i
End Sub
Function Div(n As Integer)As Integer
Dim sum As Integer
For i=1 Ton-1
If ② Then
sum=sum+i
End If
Next i
Div=sum
End Function
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②。
Function Stod(ch As String)As String
Dim n As Integer, i As Integer
Dims As String, st As String
For i=1 To Len(ch)
s=Mid(ch, i, 1)
If s>="a" Ands<="z" Then
s=Chr(Asc(s)-32)
End If
______________
Stod=st
Next i
End Function
Private Sub Command1_Click()
Dim article, f As String, s1, s2 As String
Dim i As Integer, m As Integer
Dim flag As Boolean
article=Stod(Text1. Text):f=Stod(Text2. Text)
m=0:flag=False
For i=1 To Len(article)
y=Mid(article, i, 1)
If y>="A"Andy<="Z"Then
If flag=False Then
s1=
s2=Mid(article, i+Len(f), 1)
If s1=f And Not(s2>="A" And s2<="Z") Then
m=m+1
End If
flag=True
End If
Else
flag=False
End If
Next i
Label2.Caption="单词"+Text2.Text+“出现"+Str(m)+"次"
End Sub
实现上述功能的VB代码如下,但加框处代码有误,请改正。
Dim a(1 To 50)As Integer
Private Sub Command1_Click( )
Dim i As Integer
k=0:i=3
Do While i<=100
If
Then ‘①
k=k+1
a(k)=i
End If
i=i+2
Loop
For i=2 To k
If
Then ‘②
List1.Addltem Str(a(i-1))+ "和"+Str(a(i))
End If
Next i
End Sub
Function prime(x As Integer) As Boolean
prime=False
For i=2 To Int(Sqr(x))
If x Mod i=0 Then
prime=True
Exit For
End If
Next i
End Function
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②。
F(0)=0 (n=0)
F(1)=1 (n=1)
F(n)=F(n-1)+F(n-2) (n≥2)
输出斐波那契数列中第10个数的Python程序如下:
def fib(n):
a,b= 0,1
for i in range(n):
return a
print(fib(10))
关于加框处的代码,下列说法正确的是( )
Private sub command1_click()
Dim a(1 to 20) as integer,b(1 to 20) as integer,i as integer
Dim j as integer,t as integer,p as integer,k as integer,xiaofen as integer
‘从文本框读取AB两队各场的比分分别存数组a、b,场次k,代码略
For i=1 to k-1
For j= 1 to ①
If ② then
t=a(j):a(j)=a(j+1):a(j+1)=t
t=b(j):b(j)=b(j+1):b(j+1)=t
End if
Next j
Next i
p=0 : xiaofen=0
For i=1 to k
If a(i)>b(i) then ③
xiaofen = xiaofen+a(i)-b(i)
List1.Additem str(a(i)) + “:”+ str(b(i))
Next i
If p*2>k or k=p*2 and xiaofen>0 then
Text2.text = “A队获胜”
Elseif
then
Text2.text = “B队获胜”
Else
Text2.text = “两队平局”
End if
End sub
① ② ③
1)整体放置。按格子编号由小到大的次序查找第一个可放置该组全部物品的空区域(空区域是指从某个空格子开始的同层连续的所有空格子),若找到,则在该空区域居中、连续放置该组全部物品,如图a所示。
2) 零散放置。若所有空区域格子数都小于该组物品数,则将该组每个物品依次放置在当前编号最小的空格子中,如图b所示。
编写VB程序,模拟物品放置。运行程序,在列表框List1中显示每组物品的组号和数量,单击“放置”按钮Command1,在列表框List2中显示每组物品放置结果。程序运行界面如图c所示。
图c
Constm = 50 'm表示物品柜的格子数
Const w = 10 'w表示物品柜每层的格子数
Const n = 9 'n表示物品的组数
'f(i)存储第i个格子开始的同层连续的所有空格子数。f(i)为0表示第i个格子不是空格子
Dim f(m)As Integer
Dim a(n)As Integer
Private Sub Form_Load( )
'读取各组物品的个数依次存入数组a,并在List1中显示
'代码略
End Sub
Function getpos(r As Integer As Integer
'按格子编号从小到大的次序,查找空格子数≥r的第一个空区域
'若找到,返回该空区域的起始编号,否则返回 -1
'代码略
End Function
Private Sub Command1_Click( )
Dim i As Integer,j As Integer, k As Integer,p As Integer,v As Integer
Dim s As String
For i = 1 To m
f(i) = w -(i -1)Mod w 'w为10,表示每层的格子数
Next i
v = 1
For i = 1 To n
s = ""
p =
If p = - 1 Then
j = 1
Do While j < = a(i)
If f(v) <> 0 Then
s = s + Str(v)
f(v)=
j = j + 1
End If
Loop
Else
k =(f(p)- a(i)) \ 2
For j = k To 1 Step - 1
f(p) = j
p = p + 1
Next j
For j =
f(j) = 0
s = s + Str(j)
Next j
End If
List2. AddItem "第" + Str(i) + "组:" + s
Next i
End Sub
|
图a | 图b |
程序运行界面如图a所示。实现上述功能的VB代码如下:
Dim n As Integer, m As Integer
Dim a(1 To 100) As Integer
Dim b(1 To 10) As Integer 'b数组存储柱子位置
Dim f(3) As Integer, i As Integer 'f数组存储三种类型的个数
Private Sub Command1_Click()
n = Val(Text1.Text):m = Val(Text2.Text)
k = 0
For i = 1 To m
b(i) = Int((Rnd * n ^ 2) + 1)
a(b(i)) = 2
For j = 1 To i - 1
If b(i) = b(j) Then
①
Exit For
End If
Next j
Next i
'将房间设置为黑白两种颜色交错,白黑以0、1代替
For i = 1 To n * n
If a(i) = 0 And k = 1 Then
s = s + "■": a(i) = k
ElseIf a(i) = 0 And k = 0 Then
s = s + "□": a(i) = k
Else
s = s + "○"
f(k) = f(k) - 1
f(2) = f(2) + 1
End If
②
If i Mod n = 0 Then
List1.AddItem s
s = ""
End If
Next i
'对b数组的数值按升序进行排序,代码略
For i = 1 To m - 1
s = search(i)
If s > smax Then smax = s
Next i
'对f(0)和f(1)的相等情况进行判断,并输出最后结果,代码略
End Sub
Function search(i As Integer) As Integer
Dim x1 As Integer, x2 As Integer
Dim y1 As Integer, y2 As Integer
x1 = (b(i) - 1) \ n + 1
y1 = (b(i) - 1) Mod n + 1
For j = i + 1 To m
x2 = (b(j) - 1) \ n + 1
y2 = (b(j) - 1) Mod n + 1
If ③ Then s = 0
s = (x2 - x1) * (y2 - y1)
If s > search Then search = s
Next j
End Function
① ② ③
程序代码如下:
Dim x As String
Dim y As String
Dim c(1 To 100) As String
Private Sub Command1_Click()
Dim z As String
x = Text1.Text
y = Text3.Text
z = f(x,y)
Text2.Text = z
End Sub
Function f(x As String, y As String) As String
Dim i, w, achar As Integer
Dim mm As String
w = Asc(y)
For i = 1 To Len(x)
achar = Asc(Mid(x, i, 1))
c(i) = Chr(x Xor y) ‘
Next i
For t = 1 To Len(x)
mm = mm+achar ‘
Next t
f = mm
End Function
程序代码有2处错误,请在画线处写上正确代码。

Dim xm (1 To 1000) As String, bj(1 To 1000) As Integer
Dim tc1 (1 To 1000) As String, tc2(1 To 1000) As String ,n As Integer
Private Sub Form Load( )
'从数据库中按班级、学号有序地读取学生的姓名、班级、中午套餐、晚上套餐,依次存入xm、bj、tc1、tc2数组中,总人数存入n中,部分代码如下,其余代码略
Dim conn As New ADODB.Conncction
Dim rs As New ADODB.Recordset
conn ConncctionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" + "jiucan.accdb"
conn.Open
Set rs.ActiveConnection = conn
End Sub
Private Sub Command1_Click()
Dim k As Integer, i As Integer, t As Integer, m As Integer, s1 As String, s2 As Integer Dim zc (1 To 4) As Integer, wc (1 To 4) As Integer '用于统计套餐数量
Dim bs (0 To 20) As Integer , ljs (0 To 20) As Integer
t = Val (Text1. Text):m = 0
For i = 1 To 4 '为数组赋初始值
zc(i) = 0: wc(i) = 0
Next i
For i = 0 To 20 '为数组赋初始值
bs(i) = 0: ljs(i) = 0
Next i
For i = 1 To n – 1 '按班级编号进行升序排序
For j = i To n- 1
If bj(j) < bj(k) Then k = j
Next j
s1 = xm(i): xm (i) = xm (k): xm (k) = s1
s2 = bj(i): bj (i) = bj (k): bj (k) = s2
s1 = tc1(i): tc1 (i) = tc1 (k): tc1 (k) = s1
s1 = tc2(i): tc2 (i) = tc2 (k): tc2 (k) = s1
bs(bj(i)) = bs(bj(i)) + 1
If bs(bj(i)) = 1 Then
Next i
bs(bj(i)) = bs(bj(i)) + 1
For i = 1 To m
Next i
For i = ljs(t) - bs(t) + 1 To ljs(t)
zc(fx(tc1(i))) = zc(fx(tc1(i))) + 1
wc(fx(tc2(i))) = wc(fx(tc2(i))) + 1
Next i
'查询班级的用餐情况,在列表框 List 中输出,代码略
End Sub
Function fx(a As String) As Integer
End Function

编写一个VB程序实现如下功能:单击“开始循迹”按钮Command1,呈现10*10矩阵地图,并随机生成4个循迹点,分别用数字1表示,数字0表示非循迹点;计算4点中相距最远的两点的直线距离,显示在标签Label1中。程序运行界面如图b所示。

Const n = 10
Const m=4
Dim b(1 To 8) As Integer
Private Sub Command1_Click()
Dim f(1 To n* n) As Integer
Dim i As Integer, j As Integer
Dim w As Integer, k As Integer
Dim length As Single, maxlen As Single
Dim s As String
'生成矩阵地图和随机生成4个循迹点,0表示非循迹点,1表示循迹点,存于数组f中,代码略。
For i= 1 To n^2 '显示矩阵地图和4个循迹点
s = s+ Str(f(i))
If i Mod n=0 Then
List1. AddItem s
s=" "
End If
Next i
w=1
For i=1 To n
For j=1 To n
k = (n+1)* ((i-1) Mod 2)+(-1)-(i-1) * j
If Then '记录循迹点所在位置
b(2*w-1)=i
b(2*w)=k
w=w+1
End If
Next j
Next i
i=1
maxlen = 0
Do While i<=m-1
For j=i+1 To m
If length > maxlen Then maxlen = length
Next j
i= i+1
Loop
Label1. Caption = Str( maxlen)
End Sub
Function reck(x As Integer, y As Integer) As Single
Dim c As Integer, d As Integer
Dim h As Single
c=
d=Abs(b(2*x)-b(2*y))
h=Sqr(c^2+d^2)
reck = h
End Function
| 5 |
0 |
-1 |
-8 |
-9 |
喜爱时间总和 |
|
| 1道菜 |
1 |
5 |
||||
| 2道菜 |
2 |
1 |
10 |
|||
| 3道菜 |
3 |
2 |
1 |
14 |
||
| 4道菜 |
4 |
3 |
2 |
1 |
10 |
|
| 5道菜 |
5 |
4 |
3 |
2 |
1 |
-3 |
编写VB程序,实现上述功能。运行程序,在文本框Text1中输入n道菜的满意程度后(数据之间以逗号隔开),单击“计算”按钮Commandl,在标签Labell中显示,最后在标签Label1中显示做完所有菜「喜爱时间」总和的最大值。程序运行界面如图所示。

请回答下列问题:
Private Sub Command1_ Click()
Dim xa As Integer, c As String
c = Text1. Text
Label1. Caption =“做完所有菜的「 喜爱时间」总和的最大值为”+ Str (xa)
End Sub
Function xiai(x As String) As Integer
Dim m(8) As Integer, i As Integer, j As Integer, k As Integer, sum As Integer
Dim ch As String
max= 0 : k=0
j =1
For i=1 To Len(x)
ch = Mid(x, i, 1)
If ch ="," Then
k=k+1
m(k) = Val(Mid(x, j, i - j))
j=i+1
End If
Next i
For i=1 To k
For j=k+1 To i+1 Step-1
If m(j)>m(j-1) Then
t = m(j): m(j) = m(j - 1): m(j-1)= t
End If
Next j
Next i
For i=1 To k+1
If m(i) > 0 Then
sum = sum + m(i)
End If
Next i
xiai = sum
End Function