精华内容
下载资源
问答
  • 求大佬答下?。。。。。。。。。。。。。。。。。
  • vb.net---算术运算的先后顺序

    千次阅读 2013-04-08 17:21:44
    ()-----> 函数 -----> ^ -----> * \ ------> / ------> Mod -----> + -    c+d  (c+d)/(a+b) ------------
    ()-----> 函数 -----> ^ -----> *  \  ------>  /  ------> Mod ----->  +  -
     
                                                  c+d
      (c+d)/(a+b)                       ------------
                                                   a+b
     
     
     
    P*(1+R)^N                    P x (1+R) n
    展开全文
  • vb vb.net 运算符号集

    万次阅读 2013-11-11 17:17:36
    vb vb.net 运算符号集 一、数学运算符 1. ^ 乘方,如:3^4 = 3*3*3*3 = 81 2. - 负值,如:-3 3. * 相乘,如:5*8=40 4. / 相除,如:9/3=3 注意相除为右仰斜线 5. \ 取整,如:4\3=1 注意取整为左仰斜线 6....

    网络收集~~~

    网站开放了CODE.csdn.net/jiaguoxinzhi

    用了下暂时还不太上手,后期熟手了之后有可能会把一些vb6的程序公开发于代码博客。。。

    vb vb.net 运算符号集

     

    一、数学运算符

    1. ^ 乘方,如:3^4 = 3*3*3*3 = 81

    2. - 负值,如:-3

    3. * 相乘,如:5*8=40

    4. / 相除,如:9/3=3    注意相除为右仰斜线

    5. \ 取整,如:4\3=1    注意取整为左仰斜线

    6.Mod取余,如:5 Mode 3 =2

    7. + 相加,如:4+5=9

    8. - 相减,如:5-4=1

    注意:

    Single类型与Long类型相加时,返回值为Double类型。

    如果两个数都为Empty,则返回值为Integer;一个是Empty,另一个不是时,另一个操作数确定返回值类型。

    \取整的两个操作数均为整数型值;/相除的返回值默认类型为Double。

     

    二、连接运算符

    可用+或&连接两个字符串。如:"34"+"56"="3456"(或"34"&"56"="3456")

     

    三、比较运算符

        比较运算符把一个值和另一个值比较,如果操作数包含Empty,则按0进行处理,然后根据结果返回一个True或False的逻辑型值。在比较两个字符串时,若str1>str2为True,则表示str1排序时出现在str2后;若str1<str2为True,则表示str1排序时出现在str2前;如果不分前后用等于号;如果一个字符串是另一个字符串的前缀,如“aa”和“aaa”,则认为较长的字符串大于较短的字符串,即"aaa" > "aa" = True。VB.Net中常把一个对象变量和Nothing对象比较,已确定其是否已经初始化,如:If obj1 Is Nothing Then Dim obj1 New Book。

    1. = 等于       注意如果是比较两个对象,用Is,不用=

    2. <> 不等于    注意如果是比较两个对象,用IsNot,不用<>

    如:Dim obj1 As New Book()
        Dim obj2 As New Book()
        则obj1 IsNot obj2 = True。因为虽然两个变量引用同一类型对象Book,但它们引用的是该类型的不同实例,因此结果为False。

    3. > 大于     

    4. < 小于       5. <= 不大于

    6. >= 不小于

    7. TypeOf 对象 Is 类型,用于确定一个对象的类型。

        当类型为指定接口类型时,如果对象实现该接口类型,则 TypeOf...Is 表达式返回True;当类型为类类型时,如果对象是指定类的实例或者是从指定类派生的类的实例,表达式将返回 True。如:

    Dim Cntrl As System.Windows.Forms.Button
    Cntrl = New System.Windows.Forms.Button()
    TypeOf Cntrl Is System.Windows.Forms.Control返回结果为True。 

    8. Like       

    Like用于比较某个字符串是否匹配某个特定的文本格式。这个特定的文本格式常含有下列特殊字符表达:

    (1).“?”代表单个字符
    (2).“*”代表没有或任意个字符
    (3).“#”代表0-9的单个数字,相当于[0-9]
    (4).[字符列表]代表任何在列表中的字符
    (5).[!字符列表]代表任何不在列表中的字符

    (6). A-Z代表一个大写字母;a-z代表一个小写字母

    以上特殊字符有时可以结合使用,如[a-zA-Z]代表一个字母字符,?*代表至少含有一个字符。

     

    四、逻辑运算符

    Not、And、Or、Xor、AndAlso、OrElse

    用法:

    Not 逻辑值--返回相反的逻辑值

    A And B -- A 和 B 必须同时为True结果才为True

    A Or B -- A 和 B 只要有一个为True结果就为True

    A XOr B -- A 和 B 必须为相反的逻辑值,只要有一个为True结果就为True

    AndAlso类似于And,OrElse类似于Or,只是它们是短路运算符,当A满足条件时,就不必再计算B了。

     

    五、按位运算符

    注意不能在VB.Net中直接使用以下二进制数,使用时需转换为相应的十六或十进制数字。

    1. << 表示按位左移,空缺处补0。如:101101 << 2 结果为 110100  

    2. >> 表示按位右移,如:101101 >> 2 结果为 001011 

    3. Not 表示在结果位上为原位的反向值。如:Not 0100100 返回 10110011

    4. And 只有两个比较值的对应位都为1时,结果位才为1,否则为0。如: 101010 And 001010返回001010

    5. Or 和 Xor类似道理,不再举例。

     

    六、时间运算方法

    对于时间的运算方法,我们一般不直接使用运算符(TimeSpan类只能使用部分运算符),而是使用Date类的特定方法来操作:

    Dim date1 As Date,date2 As Date,dspn As TimeSpan,d1 As TimeSpan,d2 As TimeSpan,cpnum As Integer,bln As Boolean

    dspn = date1 - date2

    d2 = date1 + New TimeSpan(d1.Ticks * 8) 

    date2 = date1.Add(dspn)

    dspn = date1.Subtract(date2)

    cpnum = date1.CompareTo(date2)    'cpnum如果为负值则date1<date2,正值则date1>date2,为0则date1=date2

    bln = date1.Equals(date2)

    另外,日期类的AddYears(),AddMonths(),AddDays(),AddHours(),AddMinutes(),AddSeconds(),AddMilliseconds(),AddTicks()方法分别表示在原日期基础上加上其参数中的整数后所得到的年、月、日、小时、分钟、秒、毫秒、毫微秒的日期型数值。

    AddTicks()中的Tick表示100毫微秒单位。

     

    七、操作符的运算顺序:

    乘方^       负值-        乘除* /      取整\       取余Mod

    加减+ -     连接+ &      按位<< >>

    比较= <> < <= > >= Like Is IsNot TypeOf…Is 

    非Not       同时And  AndAlso      选择 Xor  Or  OrElse

    可以用()改变以上运算顺序,使()中的运算优先进行。

    展开全文
  • 随着哈里对VB学习的深入,修改了之前的矩阵运算源码。 源码效率提升了85%,性能提升了12.5%,复杂度提升了N倍 Σ(っ °Д °;)っ 废话不多说,上改版后的VB化Python11行BP网络源码: Private Sub Command1_Click...

    随着哈里对VB学习的深入,修改了之前的矩阵运算源码。

    源码效率提升了85%,性能提升了12.5%,复杂度提升了N倍 Σ(っ °Д °;)っ

    废话不多说,上改版后的VB化Python11行BP网络源码:

    Private Sub Command1_Click()
        Dim nv As New numvb
        Dim txt As String, t As Double, te As Double, l0() As Double, l1() As Double
        Dim l2()  As Double, syn0()  As Double, syn1()  As Double, x() As Double, y() As Double
        Dim absM() As Double, nM() As Double, tM() As Double, dM() As Double, rM() As Double
        Dim l2_error() As Double, l1_error() As Double, l2_delta() As Double, l1_delta() As Double
        t = Timer '获得系统当前毫秒时间
        With nv
            .Arr x, 3, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1
            .Arr y, 1, 0, 1, 1, 0
            Randomize (1) '固定随机种子,便于复现
            .Rand rM, 3, 4, 2
            .NumAdd syn0, -1, rM '权值层随机赋值,函数的作用详见后面的模块介绍
            .Rand rM, 4, 1, 2
            .NumAdd syn1, -1, rM
            For i = 1 To 60000 '开始训练
                l0 = x
                .Dot dM, l0, syn0
                .nonlin l1, dM
                .Dot dM, l1, syn1
                .nonlin l2, dM
                .ArrSub l2_error, y, l2
                If i Mod 10000 = 0 Then
                    .ArrAbs absM, l2_error
                    txt = txt & vbCrLf & "Error:" & .Mean(absM) & vbCrLf '这里输出的是输出层还存在的相对于训练答案的误差
                End If
                .nonlin nM, l2, True
                .ArrDot l2_delta, l2_error, nM
                .ArrT tM, syn1
                .Dot l1_error, l2_delta, tM
                .nonlin nM, l1, True
                .ArrDot l1_delta, l1_error, nM
                .ArrT tM, l1
                .Dot dM, tM, l2_delta
                .ArrAdd_Oneself syn1, dM
                .ArrT tM, l0
                .Dot dM, tM, l1_delta
                .ArrAdd_Oneself syn0, dM
            Next
        End With
        te = Timer
        MsgBox txt & vbCrLf & te - t '输出误差以及用时
    End Sub

    emmm,害怕了吗?哈哈哈哈……

    函数用法如下:

    sigmoid函数:nonlin(输出矩阵,矩阵,[是否求导(boolean)])
    底数矩阵:NumInd(输出矩阵,底常数,矩阵,[矩阵是否要系数(Double)]) 
    矩阵指数:ArrInd(输出矩阵,指常数,矩阵,[矩阵是否要系数(Double)]) 
    数加矩阵:NumAdd(输出矩阵,加常数,矩阵,[矩阵是否要系数(Double)]) 
    数减矩阵:NumSub(输出矩阵,被减数,矩阵,[矩阵是否要系数(Double)]) 
    数乘矩阵:NumDot(输出矩阵,被乘数,矩阵,[矩阵是否要系数(Double)]) 
    矩阵加法:ArrAdd(输出矩阵,矩阵A,矩阵B,[结果是否要系数(Double)]) 
    矩阵减法:ArrSub(输出矩阵,矩阵A,矩阵B,[结果是否要系数(Double)]) 
    哈达玛积:ArrDot(输出矩阵,矩阵A,矩阵B,[结果是否要系数(Double)]) 
    数乘矩阵:NumDot(输出矩阵,乘常数,矩阵) 
    矩阵乘法:Dot(输出矩阵,矩阵A,矩阵B) 
    矩阵可视化:ArrVis(矩阵) 输出字符串
    转置矩阵:ArrT(输出矩阵,矩阵,[结果是否要系数(Double)]) 
    一维数组矩阵化:ArrA(输出矩阵,列数,一维数组) 
    元素矩阵化:Arr(输出矩阵,列数,元素1,元素2,元素3...) 
    矩阵绝对值:ArrAbs(输出矩阵,矩阵,[结果是否要系数(Double)]) 
    矩阵元素平均:Mean(矩阵) 输出双精度小数
    随机小数矩阵:Rand(输出矩阵,行数,列数,[矩阵是否要系数]) 
    随机整数矩阵:intRand(输出矩阵,行数,列数,下限,上限) 

    接下来是模块的源码~

    Public Function Rand(矩阵() As Double, 行 As Long, 列 As Long, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    ReDim 矩阵(1 To 行, 1 To 列)
    For i = 1 To 行
        For c = 1 To 列
            矩阵(i, c) = Rnd() * 系数
        Next
    Next
    End Function
    Public Function intRand(矩阵() As Double, 行 As Long, 列 As Long, m As Long, n As Long)
    Dim i As Long, c As Long
    ReDim 矩阵(1 To 行, 1 To 列)
    For i = 1 To 行
        For c = 1 To 列
            Randomize
            矩阵(i, c) = Int(Rnd * (n - m + 1)) + m
        Next
    Next
    End Function
    Public Function nonlin(矩阵() As Double, 自() As Double, Optional 导数 As Boolean)
    Dim nsM() As Double, niM() As Double, naM() As Double
    If 导数 = True Then
        NumSub nsM, 1, 自
        ArrDot 矩阵, 自, nsM
    Else
        NumInd niM, Exp(1), 自, -1
        NumAdd naM, 1, niM
        ArrInd 矩阵, -1, naM
    End If
    End Function
    Public Function NumInd(新矩阵() As Double, 底数 As Double, 矩阵() As Double, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    ReDim 新矩阵(1 To UBound(矩阵, 1), 1 To UBound(矩阵, 2))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(i, c) = 底数 ^ (系数 * 矩阵(i, c))
        Next
    Next
    End Function
    Public Function ArrInd(新矩阵() As Double, 指数 As Double, 矩阵() As Double, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    ReDim 新矩阵(1 To UBound(矩阵, 1), 1 To UBound(矩阵, 2))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(i, c) = (系数 * 矩阵(i, c)) ^ 指数
        Next
    Next
    End Function
    Public Function NumAdd(新矩阵() As Double, 加数 As Double, 矩阵() As Double, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    ReDim 新矩阵(1 To UBound(矩阵, 1), 1 To UBound(矩阵, 2))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(i, c) = 系数 * 矩阵(i, c) + 加数
        Next
    Next
    End Function
    Public Function NumSub(新矩阵() As Double, 被减数 As Double, 矩阵() As Double, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    ReDim 新矩阵(1 To UBound(矩阵, 1), 1 To UBound(矩阵, 2))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(i, c) = 被减数 - 系数 * 矩阵(i, c)
        Next
    Next
    End Function
    Public Function ArrAdd(新矩阵() As Double, 矩阵A() As Double, 矩阵B() As Double, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    If UBound(矩阵A, 1) <> UBound(矩阵B, 1) Or UBound(矩阵A, 2) <> UBound(矩阵B, 2) Then MsgBox "维数不一致!", , "arrDot 错误!"
    ReDim 新矩阵(1 To UBound(矩阵A, 1), 1 To UBound(矩阵A, 2))
    For i = 1 To UBound(矩阵A, 1)
        For c = 1 To UBound(矩阵A, 2)
            新矩阵(i, c) = 系数 * (矩阵A(i, c) + 矩阵B(i, c))
        Next
    Next
    End Function
    Public Function ArrAdd_Oneself(矩阵A() As Double, 矩阵B() As Double, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    If UBound(矩阵A, 1) <> UBound(矩阵B, 1) Or UBound(矩阵A, 2) <> UBound(矩阵B, 2) Then MsgBox "维数不一致!", , "arrDot 错误!"
    For i = 1 To UBound(矩阵A, 1)
        For c = 1 To UBound(矩阵A, 2)
            矩阵A(i, c) = 系数 * (矩阵A(i, c) + 矩阵B(i, c))
        Next
    Next
    End Function
    Public Function ArrSub(新矩阵() As Double, 矩阵A() As Double, 矩阵B() As Double, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    If UBound(矩阵A, 1) <> UBound(矩阵B, 1) Or UBound(矩阵A, 2) <> UBound(矩阵B, 2) Then MsgBox "维数不一致!", , "arrDot 错误!"
    ReDim 新矩阵(1 To UBound(矩阵A, 1), 1 To UBound(矩阵A, 2))
    For i = 1 To UBound(矩阵A, 1)
        For c = 1 To UBound(矩阵A, 2)
            新矩阵(i, c) = 系数 * (矩阵A(i, c) - 矩阵B(i, c))
        Next
    Next
    End Function
    Public Function ArrDot(新矩阵() As Double, 矩阵A() As Double, 矩阵B() As Double, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    If UBound(矩阵A, 1) <> UBound(矩阵B, 1) Or UBound(矩阵A, 2) <> UBound(矩阵B, 2) Then MsgBox "维数不一致!", , "arrDot 错误!"
    ReDim 新矩阵(1 To UBound(矩阵A, 1), 1 To UBound(矩阵A, 2))
    For i = 1 To UBound(矩阵A, 1)
        For c = 1 To UBound(矩阵A, 2)
            新矩阵(i, c) = 系数 * 矩阵A(i, c) * 矩阵B(i, c)
        Next
    Next
    End Function
    Public Function NumDot(新矩阵() As Double, 乘数 As Double, 矩阵() As Double)
    Dim i  As Long, c As Long
    ReDim 新矩阵(1 To UBound(矩阵, 1), 1 To UBound(矩阵, 2))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(i, c) = 矩阵(i, c) * 乘数
        Next
    Next
    End Function
    Public Function Dot(矩阵C() As Double, 矩阵A() As Double, 矩阵B() As Double)
    Dim i As Long, c As Long, v As Long
    If UBound(矩阵A, 2) <> UBound(矩阵B, 1) Then MsgBox "维数不一致!", , "错误!": Exit Function
    ReDim 矩阵C(1 To UBound(矩阵A, 1), 1 To UBound(矩阵B, 2))
    For i = 1 To UBound(矩阵A, 1)
        For c = 1 To UBound(矩阵B, 2)
            For v = 1 To UBound(矩阵A, 2)
                矩阵C(i, c) = 矩阵A(i, v) * 矩阵B(v, c) + 矩阵C(i, c)
            Next
        Next
    Next
    End Function
    Public Function ArrVis(矩阵() As Double) As String
    Dim i As Long, c As Long, 行 As Long, 列 As Long
    On Error GoTo Er
    行 = UBound(矩阵, 1): 列 = UBound(矩阵, 2)
    For i = 1 To 行
        For c = 1 To 列
            If c = 1 Then
                ArrVis = ArrVis & "[" & 矩阵(i, c)
            Else
                ArrVis = ArrVis & "," & 矩阵(i, c)
            End If
        Next
        ArrVis = ArrVis & "]" & vbCrLf
    Next
    Exit Function
    Er:
    ArrVis = "矩阵可视化失败!"
    End Function
    Public Function ArrT(转置矩阵() As Double, 原矩阵() As Double, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    ReDim 转置矩阵(1 To UBound(原矩阵, 2), 1 To UBound(原矩阵, 1))
    For i = 1 To UBound(原矩阵, 1)
        For c = 1 To UBound(原矩阵, 2)
            转置矩阵(c, i) = 系数 * 原矩阵(i, c)
        Next
    Next
    End Function
    Public Function Mean(矩阵() As Double) As Double
    Dim i As Long, c As Long, j As Long
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            j = j + 1
            Mean = Mean + 矩阵(i, c)
        Next
    Next
    Mean = Mean / j
    End Function
    Public Function ArrAbs(新矩阵() As Double, 矩阵() As Double, Optional 系数 As Double = 1)
    Dim i As Long, c As Long
    ReDim 新矩阵(1 To UBound(矩阵, 2), 1 To UBound(矩阵, 1))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(c, i) = 系数 * Abs(矩阵(i, c))
        Next
    Next
    End Function
    Public Function ArrA(矩阵() As Double, 维 As Long, 一维数组)
    Dim 行 As Long, 列 As Long, i As Long, c As Long
    c = UBound(一维数组) - LBound(一维数组) + 1
    If c Mod 维 <> 0 Then MsgBox "元素个数缺失!", , "错误!": Exit Function
    ReDim 矩阵(1 To c / 维, 1 To 维)
    行 = 1
    For i = 1 To c
        列 = 列 + 1
        矩阵(行, 列) = 一维数组(i - 1)
        If 列 Mod 维 = 0 Then 行 = 行 + 1: 列 = 0
    Next
    End Function
    Public Function Arr(矩阵() As Double, 维 As Long, ParamArray 元素集())
    Dim 行 As Long, 列 As Long
    ReDim 矩阵(1 To (UBound(元素集) + 1) / 维, 1 To 维)
    行 = 1
    For Each i In 元素集
        列 = 列 + 1
        矩阵(行, 列) = i
        If 列 Mod 维 = 0 Then 行 = 行 + 1: 列 = 0
    Next
    End Function

     

    哈里将模块已打包成了numvbDll.dll(恶搞到底好吧~)。

    下载链接:https://download.csdn.net/download/harryxyc/10894430

    ————————————————————以下是过去的原文————————————————————————————

    学习神经网络的过程中,希望将Python上的神经网络算法移植到VB上,因此自写了一个VB的矩阵运算库,并且恶意的将其命名为"numvb"。

    先来看看VB化的网上可搜索到的Python11行代码编写的BP网络:

     

    Private Sub Command1_Click()
    Dim txt As String: Dim t, te As Double: Dim l0, l1, l2, syn0, syn1
    'txt、t、te与神经网络的算法无关
    'l0是输入层,l1是隐含层,l2是输出层
    'syn0是l0与l1之间的权值层,syn1是l1与l2之间的权值层
    t = Timer '获得系统当前毫秒时间
    x = Arr(3, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1) '矩阵创建,第一个变量控制列数,后面是矩阵元素的顺序排列
    y = Arr(1, 0, 1, 1, 0)
    Randomize (1) '固定随机种子,便于复现
    syn0 = NumAdd(-1, Rand(3, 4, 2)) '权值层随机赋值,函数的作用详见后面的模块介绍
    syn1 = NumAdd(-1, Rand(4, 1, 2))
    For i = 1 To 60000 '开始训练
        l0 = x
        l1 = nonlin(Dot(l0, syn0))
        l2 = nonlin(Dot(l1, syn1))
        l2_error = ArrSub(y, l2)
        If i Mod 10000 = 0 Then txt = txt & "Error:" & vbCrLf & Mean(ArrAbs(l2_error)) & vbCrLf '这里输出的是输出层还存在的相对于训练答案的误差
        l2_delta = ArrDot(l2_error, nonlin(l2, True))
        l1_error = Dot(l2_delta, ArrT(syn1))
        l1_delta = ArrDot(l1_error, nonlin(l1, True))
        syn1 = ArrAdd(syn1, Dot(ArrT(l1), l2_delta))
        syn0 = ArrAdd(syn0, Dot(ArrT(l0), l1_delta))
    '具体的算法原理可以百度"Python11行 神经网络"
    Next
    te = Timer
    MsgBox txt & vbCrLf & te - t '输出误差以及用时
    End Sub

     

    这里面涉及的矩阵运算的函数我已经整理到下面的"numvb"模块里。但是运算速度实在捉急,同样运算量,Python只需要1~2秒,而VB需要5~6秒左右。如果哪位大神有更简单更快的算法不妨告诉在下……

    接下来是模块函数的使用说明!

     

     

    sigmoid函数:nonlin(矩阵,[是否求导(boolean)]) 输出矩阵
    底数矩阵:NumInd(底常数,矩阵,[矩阵是否要系数(Double)]) 输出矩阵
    矩阵指数:ArrInd(指常数,矩阵,[矩阵是否要系数(Double)]) 输出矩阵
    数加矩阵:NumAdd(加常数,矩阵,[矩阵是否要系数(Double)]) 输出矩阵
    数减矩阵:NumSub(被减数,矩阵,[矩阵是否要系数(Double)]) 输出矩阵
    数乘矩阵:NumDot(被乘数,矩阵,[矩阵是否要系数(Double)]) 输出矩阵
    矩阵加法:ArrAdd(矩阵A,矩阵B,[结果是否要系数(Double)]) 输出矩阵
    矩阵减法:ArrSub(矩阵A,矩阵B,[结果是否要系数(Double)]) 输出矩阵
    哈达玛积:ArrDot(矩阵A,矩阵B,[结果是否要系数(Double)]) 输出矩阵
    数乘矩阵:NumDot(乘常数,矩阵) 输出矩阵
    矩阵乘法:Dot(矩阵A,矩阵B) 输出矩阵
    矩阵可视化:ArrVis(矩阵) 输出字符串
    转置矩阵:ArrT(矩阵,[结果是否要系数(Double)]) 输出矩阵
    一维数组矩阵化:ArrA(列数,一维数组) 输出矩阵
    元素矩阵化:Arr(列数,元素1,元素2,元素3...) 输出矩阵
    矩阵绝对值:ArrAbs(矩阵,[结果是否要系数(Double)]) 输出矩阵
    矩阵元素平均:Mean(矩阵) 输出双精度小数
    随机小数矩阵:Rand(行数,列数,[矩阵是否要系数]) 输出矩阵
    随机整数矩阵:intRand(行数,列数,下限,上限) 输出矩阵

     

     

     

    接下来就是"numvb"库了 : )  【注意!前方中文代码高能!不习惯的可以自行替换为英文!】

    Public Function Rand(ByRef 行 As Long, ByRef 列 As Long, Optional 系数 As Double = 1)
    Dim 矩阵(): Dim i, c As Long
    ReDim 矩阵(1 To 行, 1 To 列)
    For i = 1 To 行
        For c = 1 To 列
            矩阵(i, c) = Rnd() * 系数
        Next
    Next
    Rand = 矩阵
    End Function
    Public Function intRand(ByRef 行 As Long, ByRef 列 As Long, ByRef m As Long, ByRef n As Long)
    Dim 矩阵(): Dim i, c As Long
    ReDim 矩阵(1 To 行, 1 To 列)
    For i = 1 To 行
        For c = 1 To 列
            Randomize
            矩阵(i, c) = Int(Rnd * (n - m + 1)) + m
        Next
    Next
    intRand = 矩阵
    End Function
    Public Function nonlin(ByRef 自, Optional 导数 As Boolean)
    If 导数 = True Then
        nonlin = ArrDot(自, (NumSub(1, 自)))
    Else
        nonlin = ArrInd(-1, NumAdd(1, (NumInd(Exp(1), 自, -1))))
    End If
    End Function
    Public Function NumInd(ByRef 底数 As Double, ByRef 矩阵, Optional 系数 As Double = 1)
    Dim i, c As Long: Dim 新矩阵()
    ReDim 新矩阵(1 To UBound(矩阵, 1), 1 To UBound(矩阵, 2))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(i, c) = 底数 ^ (系数 * 矩阵(i, c))
        Next
    Next
    NumInd = 新矩阵()
    End Function
    Public Function ArrInd(ByRef 指数 As Double, ByRef 矩阵, Optional 系数 As Double = 1)
    Dim i, c As Long: Dim 新矩阵()
    ReDim 新矩阵(1 To UBound(矩阵, 1), 1 To UBound(矩阵, 2))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(i, c) = (系数 * 矩阵(i, c)) ^ 指数
        Next
    Next
    ArrInd = 新矩阵()
    End Function
    Public Function NumAdd(ByRef 加数 As Double, ByRef 矩阵, Optional 系数 As Double = 1)
    Dim i, c As Long: Dim 新矩阵()
    ReDim 新矩阵(1 To UBound(矩阵, 1), 1 To UBound(矩阵, 2))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(i, c) = 系数 * 矩阵(i, c) + 加数
        Next
    Next
    NumAdd = 新矩阵()
    End Function
    Public Function NumSub(ByRef 被减数 As Double, ByRef 矩阵, Optional 系数 As Double = 1)
    Dim i, c As Long: Dim 新矩阵()
    ReDim 新矩阵(1 To UBound(矩阵, 1), 1 To UBound(矩阵, 2))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(i, c) = 系数 * 被减数 - 矩阵(i, c)
        Next
    Next
    NumSub = 新矩阵()
    End Function
    Public Function ArrAdd(ByRef 矩阵A, ByRef 矩阵B, Optional 系数 As Double = 1)
    Dim i, c As Long: Dim 新矩阵()
    If UBound(矩阵A, 1) <> UBound(矩阵B, 1) Or UBound(矩阵A, 2) <> UBound(矩阵B, 2) Then MsgBox "维数不一致!", , "arrDot 错误!"
    ReDim 新矩阵(1 To UBound(矩阵A, 1), 1 To UBound(矩阵A, 2))
    For i = 1 To UBound(矩阵A, 1)
        For c = 1 To UBound(矩阵A, 2)
            新矩阵(i, c) = 系数 * (矩阵A(i, c) + 矩阵B(i, c))
        Next
    Next
    ArrAdd = 新矩阵()
    End Function
    Public Function ArrSub(ByRef 矩阵A, ByRef 矩阵B, Optional 系数 As Double = 1)
    Dim i, c As Long: Dim 新矩阵()
    If UBound(矩阵A, 1) <> UBound(矩阵B, 1) Or UBound(矩阵A, 2) <> UBound(矩阵B, 2) Then MsgBox "维数不一致!", , "arrDot 错误!"
    ReDim 新矩阵(1 To UBound(矩阵A, 1), 1 To UBound(矩阵A, 2))
    For i = 1 To UBound(矩阵A, 1)
        For c = 1 To UBound(矩阵A, 2)
            新矩阵(i, c) = 系数 * (矩阵A(i, c) - 矩阵B(i, c))
        Next
    Next
    ArrSub = 新矩阵()
    End Function
    Public Function ArrDot(ByRef 矩阵A, ByRef 矩阵B, Optional 系数 As Double = 1)
    Dim i, c As Long: Dim 新矩阵()
    If UBound(矩阵A, 1) <> UBound(矩阵B, 1) Or UBound(矩阵A, 2) <> UBound(矩阵B, 2) Then MsgBox "维数不一致!", , "arrDot 错误!"
    ReDim 新矩阵(1 To UBound(矩阵A, 1), 1 To UBound(矩阵A, 2))
    For i = 1 To UBound(矩阵A, 1)
        For c = 1 To UBound(矩阵A, 2)
            新矩阵(i, c) = 系数 * 矩阵A(i, c) * 矩阵B(i, c)
        Next
    Next
    ArrDot = 新矩阵()
    End Function
    Public Function NumDot(ByRef 乘数 As Double, ByRef 矩阵)
    Dim i, c As Long: Dim 新矩阵()
    ReDim 新矩阵(1 To UBound(矩阵, 1), 1 To UBound(矩阵, 2))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(i, c) = 矩阵(i, c) * 乘数
        Next
    Next
    NumDot = 新矩阵()
    End Function
    Public Function Dot(ByRef 矩阵A, ByRef 矩阵B)
    Dim 矩阵C(): Dim i, c, v As Long
    If UBound(矩阵A, 2) <> UBound(矩阵B, 1) Then MsgBox "维数不一致!", , "错误!": Exit Function
    ReDim 矩阵C(1 To UBound(矩阵A, 1), 1 To UBound(矩阵B, 2))
    For i = 1 To UBound(矩阵A, 1)
        For c = 1 To UBound(矩阵B, 2)
            For v = 1 To UBound(矩阵A, 2)
                矩阵C(i, c) = 矩阵A(i, v) * 矩阵B(v, c) + 矩阵C(i, c)
            Next
        Next
    Next
    Dot = 矩阵C()
    End Function
    Public Function ArrVis(ByRef 矩阵) As String
    Dim i, c, 行, 列 As Long
    If IsArray(矩阵) Then Else Exit Function
    行 = UBound(矩阵, 1): 列 = UBound(矩阵, 2)
    For i = 1 To 行
        For c = 1 To 列
            If c = 1 Then
                ArrVis = ArrVis & "[" & 矩阵(i, c)
            Else
                ArrVis = ArrVis & "," & 矩阵(i, c)
            End If
        Next
        ArrVis = ArrVis & "]" & vbCrLf
    Next
    End Function
    Public Function ArrT(ByRef 原矩阵, Optional 系数 As Double = 1)
    Dim 转置矩阵(): Dim i, c As Long
    ReDim 转置矩阵(1 To UBound(原矩阵, 2), 1 To UBound(原矩阵, 1))
    For i = 1 To UBound(原矩阵, 1)
        For c = 1 To UBound(原矩阵, 2)
            转置矩阵(c, i) = 系数 * 原矩阵(i, c)
        Next
    Next
    ArrT = 转置矩阵()
    End Function
    Public Function Mean(ByRef 矩阵) As Double
    Dim i, c, j As Long
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            j = j + 1
            Mean = Mean + 矩阵(i, c)
        Next
    Next
    Mean = Mean / j
    End Function
    Public Function ArrAbs(ByRef 矩阵, Optional 系数 As Double = 1)
    Dim 新矩阵(): Dim i, c As Long
    ReDim 新矩阵(1 To UBound(矩阵, 2), 1 To UBound(矩阵, 1))
    For i = 1 To UBound(矩阵, 1)
        For c = 1 To UBound(矩阵, 2)
            新矩阵(c, i) = 系数 * Abs(矩阵(i, c))
        Next
    Next
    ArrAbs = 新矩阵()
    End Function
    Public Function ArrA(ByRef 维 As Long, ByRef 一维数组)
    Dim 行, 列 As Long: Dim 矩阵(): Dim i, c
    c = UBound(一维数组) - LBound(一维数组) + 1
    If c Mod 维 <> 0 Then MsgBox "元素个数缺失!", , "错误!": Exit Function
    ReDim 矩阵(1 To c / 维, 1 To 维)
    行 = 1
    For i = 1 To c
        列 = 列 + 1
        矩阵(行, 列) = 一维数组(i - 1)
        If 列 Mod 维 = 0 Then 行 = 行 + 1: 列 = 0
    Next
    ArrA = 矩阵()
    End Function
    Public Function Arr(ByRef 维 As Long, ParamArray 元素集())
    Dim 行, 列 As Long: Dim 矩阵(): Dim i
    ReDim 矩阵(1 To (UBound(元素集) + 1) / 维, 1 To 维)
    行 = 1
    For Each i In 元素集
        列 = 列 + 1
        矩阵(行, 列) = i
        If 列 Mod 维 = 0 Then 行 = 行 + 1: 列 = 0
    Next
    Arr = 矩阵()
    End Function

     

    以上就是全部了,如有疑问欢迎告知 : )

     

     

     

     

    展开全文
  • VB累加求和(函数过程计算)演示源程序,主要练习自定义函数的方法及使用,‘注意格式和参数以及调用函数的程序执行顺序。顺便说一下,调用函数过程,到这里后要跳到函数处执行函数,然后回来继续往下执行。这里定义了...
  • 内容索引:VB源码,其它类别,函数,累加,算法 VB累加求和(函数过程计算)演示源程序,主要练习自定义函数的方法及使用,‘注意格式和参数以及调用函数的程序执行顺序。顺便说一下,调用函数过程,到这里后要跳到函数...
  • C语言

    万次阅读 多人点赞 2019-12-18 23:01:50
    循环结构、选择结构,顺序结构都是结构化程序的基本结构。 3.N-S流程图是复杂算法的描述手段。 4.长方形为处理框。椭圆形为连接点。 5.一个c语言只能有一个主函数。 6.函数的定义不可以嵌套,函数的调用可以嵌套。 7...

    公共考点
    1.算法的空间复杂度是指算法在执行过程中所需要的内存空间。
    2.算法的时间复杂度是指算法所需要的计算工作量。
    3.数据的逻辑结构与储存结构不是一一对应的。
    4.队列的修改是以先进先出的原则进行的。–与队列结构有关联的是先到先服务的作业调度。
    5.循环队列中的元素个数随队头指针和队尾指针变化而动态变化。
    6.C语言中的result只是一个自己定义的量
    7.对空和队满时,头尾指针均相等。
    8.冒泡法是在扫描过程中逐次比较相邻两个元素的大小。例:9+8+7+6+5+4+3+2+1=45.
    9.对象间的信息传递靠消息。
    10.多态性是指同一个操作可以是不同对象的行为。操作—对象。

    C语言
    1.源程序的扩展名为.c,目标程序的扩展名为.obj,可执行程序的扩展名为.exe(每个后缀为.c的C语言都可以单独进行编译)(C语言编译程序把.c编译成.obj的二进制文件)(链接形成.exe文件)
    2.循环结构、选择结构,顺序结构都是结构化程序的基本结构。
    3.N-S流程图是复杂算法的描述手段。
    4.长方形为处理框。椭圆形为连接点。
    5.一个c语言只能有一个主函数。
    6.函数的定义不可以嵌套,函数的调用可以嵌套。
    7.C语言总是以main函数开始执行。
    8.常量的类型:整型常量、实型常量、字符常量、字符串常量、符号常量。
    9.十进制整型常量:基本数字范围:0-9;(十进制小数两边必须有数字)
    八进制整型常量:以0开头,输出格式控制符为%o,基本数字范围0-7;
    十六进制整型常量:以0x开头,输出格式为%x,基本数字范围为0-15写为A-F或a-f;
    指数形式:e前必须有数字,e后必须为整数。
    10. 关键字属于标识符。(关键字不能做变量名也不能做函数名)
    11.数值型常量有整型常量、实型常量但均有正负值之分。
    12.语言的预编译处理可以可以用符号名代表一个常量定义是不必指定常量类型。
    13.实型常量又称实数或浮点数。在C语言中可以用单精度型和双精度型两种形式表示实型常量,分别用类型名float和double进行定义。实型常量在一般的微型集中占用4个字节,一般形式或者指数形式,数值范围都是-1038~1038,有效数字是7位。(不能是整形数据,如0)(常量的类型可以从字面上区分)(1为整型常量)(1.0为实型常量)(a为字符型常量)
    14.\0为八进制数,所以\09是错误的。
    15.字符常量在内存中占1个字节,字符常量可以进行关系运算。不能参与数值运算,可以参与任何整数运算。
    16.不能用字符串常量对字符数组名进行整体赋值操作。
    17.可以使用字符串常量来给一维数组进行复制。
    18.关于字节大小的问题

    16位编译器:char 1个字节  char* 2个字节 int 2个字节 float 4个字节 double 8个字节
    32位编译器:char 1个字节  char* 2个字节 int 4个字节 float 4个字节 double 8个字节
    64位编译器:char 1个字节  char* 2个字节 int 4个字节 float 4个字节 double 8个字节
    

    19.10进制转8进制,手算用 除8取余数法得
    20.十进制转十六进制为:除十六取余直到商为0,余数从后往前读。
    21.%f代表单精度浮点型数据(float),%lf代表双精度浮点型数(double)。
    单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。
    22.sizeof可以看成是一个无符号整型表达式(sizeof为字节运算符)
    23.强制运算符:(类型名)(表达式) 逗号运算符:, 条件运算符::? :
    24. 赋值运算符左边必须是(一个)变量。
    25.a=bc,先运算bc,这个表达式的含义是,若b与c相等,那么得出的值为1,若不等则为0.
    26.“^” 按位异或 两数的二进制对应位相同,则为0,不同则为1.
    27.“|” 按位或 两个二进制中只要有一个为1,则结果为1。
    28.“~” 按位取反 二进制 0变1,1变0.
    29. “&”按位与 两个二进制都为1,则该位的结果为1,否则为零
    【 零的按位取反是 -1(0在数学界既不是正数也不是负数)
    所有正整数的按位取反是其本身+1的负数
    所有负整数的按位取反是其本身+1的绝对值 】
    30.位运算的对象只能是整形或字符型数据
    31.||逻辑或 前后条件只要有一个满足则为真。
    32.&&逻辑与 前后条件同时满足表达式为真。
    33.再用||的地方一般可以用|代替,但是用|的地方不能用||代替。
    34.“&”取地址运算
    35“”指针运算符
    36.p是指针变量,则&p是变量p的地址
    37.p是指针变量,则
    p是变量p所指向地址的值
    38.基类型不同的指针变量不可以相互混用
    39.函数的类型可以是指针类型
    40.函数的参数可以是整型、实型、字符型、指针类型。
    41.在这里插入图片描述

    42.C语言是一种计算机高级语言。
    43.C语言允许直接访问物理地址,能进行位操作。
    44.C语言是结构化程序设计语言
    45.c程序要通过编译,连接才能得到可执行的目标程序
    46.用c语言编写程序,可以编写出任何类型的程序
    47.C语言允许有空函数
    48.C程序书写格式,允许一行内可以写几个语句
    49.C程序的语句无行号(C语言中给源程序加行号;行号是用来定位代码的,指文件在几行)
    50.C语言的每个语句的最后必须有一个分号
    51.C语言本身没有输入输出语句(没有特定的输入输出语句)
    52.C语言可用来编写应用软件,也可用来编写系软件
    53.TurboC是在微机上广泛使用的编译程序
    54.C语言的数据结构是以数据类型形式出现的(不是常量和变量)
    55.空类型是C语言的一种数据类型
    56.C语言中数据有常量和变量之分
    57.利用指针和结构体类型可以构成表、树等复杂的数据结构
    58.在C程序中对所用到的所有数据都必须指定其数据类型
    59.c程序运行过程中,其值不能被改变的量称为常量
    60.在程序运行过程中,其值可以改变的量称为变量
    61.C语言可以用一个标识符代表一个常量,称为符号常量
    62.C语言规定标识符只能由字母、数字和下划线三种字符组成
    63.C语言整型常量可用十进制整数、八进整数和十六进制整数三种形式表示
    64.在现微机上使用的C编译系统,每一个整型变量在内存中占2个字节
    65.整型变量的基本类型符为int
    66.在微机上,一个长整型变量在内存中占4个字节(float型变量在内存中占4个字节)
    67.一个int型变量的最大允许值为32767
    68.在一个整常量后面加一个字母“L”或“1”.则认为该常量是longint 型常量
    69.C语言实型常量可用二进制小数和指数二种形式表示
    70.C语言实型变量分为:float型、double型、long double型三类
    71.C语言doule型一个变量的数值有效数字是16位
    72.C语言的字符常量是用单引号括起来的一个字符
    73.C语言的转义字符是以一个“\”开头的一种特殊形式的字符常量
    74.C语言中换行符使用’\n’,这是一个转义字符
    75.转文字符\r的含义是回车。
    76.C语言的字符型变量只能存放一个字符
    77.C语言允许字符数据与整数直接进行算术运算
    78.C语言允许在定义变量的同时使变量初始化
    79.C语言允许整型、实型、字符型数据间可以混合运算
    80.C语言规定两个整数相除的结果为整数
    81.用求余运算符“%”作运算,运算符两侧均应为整型数据
    82.用算术运算符和括号将运算对象按C语法规则组成的式子,称为C算术表达式
    83.算术运算符的结合方向为“自左至右”
    84.强制类型转换时,原来变量的类型未发生变化
    85.自增、自减运算符的结合方向为“自右至左”
    86.自增运算符只能用于变量,不能用于常量或表达式
    87指针.自增(减)运算符也可以用于指针变量,使指向下一个地址
    88.运算符“=”的作用是将一个数据赋给一个变量
    89.运算符“”的作用是将两侧数据是否相等
    90.赋运算符的结合方向是“自右向左”
    91.凡是二目运算符,都可以与赋值运算符一起组合成复合赋值运算符
    92.运算符“
    ”的作用是将一个数据赋给一个变量
    93.C语言不允许将实型数据赋给整型变量
    94.一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式
    95.一个C程序可以由若干个源程序文件组成
    96.一个源文件可以由若千个函数和预处理命令以及全局变量声明部分组成
    97.空语句是C语言的一种语句
    98.复合语句中最后一个语句中最后的分号不能省略不写
    99.putchar函数的作用是向终端输出一个字符
    100.getchar函数的作用是从终端输入一个字符
    101.格式输出函数(print)一次可以输出多个数据
    102.printf函数的%ld格式参数,用来输入出长整型数据
    103.printf函数的%o格式参数,用来以8进制数形式输出整数
    104.printf函数的%f格式参数,用来以小数形式输出实数
    105.printf函数的%x格式参数,可以输出指定参数的16进制形式
    106.printf函数的%s格式参数,用来输出一个字符串
    107.C语言不是面向对象的程序设计语言
    108.printf函数的%e格式参数,以指数形式输出实数
    109.C语言单精度数的有效数一般为7位
    110.printf函数的%g格式参数
    111.%g是C语言printf()函数的一个输出格式类型,它表示以%f%e中较短的输出宽度输出单、双精度实数,在指数小于-4或者大于等于精度时使用%e格式
    112.p++是指下一个地址。
    (p)++是指将p所指的数据的值加一。
    C编译器认为
    和++是同优先级操作符,且都是从右至左结合的,所以p++中的++只作用在p上,和(p++)意思一样;在(p)++中,由于()的优先级比和++都高,所以++作用在()内的表达式*p上。比如有:
    int x,y,a[]={1,2,3,4,5},*p=a,*q=a;
    x=*p++;//执行这一句后x=a[0]=1,p=a+1
    y=(*q)++;//执行这一句后,y=a[0]+1=2,q仍然=a
    113. printf函数的附加格式说明字符“m”的含义是指输出数据的最小宽度
    114.scanf函数中的“格式控制”后面应当是变量地址(不是变量符)
    115.逻辑运算符>算术运算符>关系运算符>条件运算符>赋值运算符(罗算管调幅)
    116.条件运算符的结合方向是“自右向左"
    117.if语中又包含文可以转在电百度网点电 平句的嵌套
    118.条件运算符要求有3个操作对象,称为三目运算符
    119.条件表达式中三个表达式的类型可以不同
    120.switch语句是多分支选择语句
    121.switch语句中每一个case的常量表达式的值必须互不相同
    122.switch语句执行完一个case后面的语句后,流程控制转移到下一个case继续执行
    123.switch语句中多个case可以共用组执行语句
    124.goto语句为无条件转向语句
    125.C语句的循环语句中循环体如果包含一个以上的语句,必须以复合语句形式出现bre
    126.for循环语句中的3个表达式都可以省略
    127.C语句的一个循环体内允许又包含另一个完整的循环结构
    128.break语句不能用于循环语句和switch语句之外的任何其它语句中
    129.continue语句的作用是结束本次循环(而不是终止整个循环)
    130.C数组中的每一个元素都必须属于同一个数据类型
    131.C数组必须先定义,然后使用
    132.C语言规定只能逐个引用数组元素而不能一次引用整个数组
    133.在定义一维数组时可以只给一部分元素赋初值
    134.对二维数组初始化,可以分行给数组赋初值
    135.可以对二维数组的部分元素赋初值
    136.字符数组中的一个元素只存放一个字符
    137.如果一个字符数组中包含一个以上结束符’\0”,则遇第一个’\0’时输出就结束
    138.puts函数的作用是将一个字符串输出终端
    139.gets丽数的作用是从终端输入一个字符串到字符数组
    140.strlen 函数是测试字符串长度的函数
    141
    strcat函数是“字符串复制函数”。X
    strcpy函数是“字符串连接函数”。X
    strcmp函数是“字符串复制函数”。X
    strlwr函数是测试字符串长度的函数。X
    strupr函数是测试字符串长度的函数。X
    142.C程序一个函数可以被一个或多个函数调用多次
    143.一个C程序可由一个主函数和若干个其它函数构成
    144.C程序以源程序为单位进行编译(而不是函数)
    145.C程序由一个或多个源程序文件组成
    146.C语言在定义函数时是互相独立的,不能嵌套定义
    147.在调用有参函数时,主调函数和被调用函数之间有数据传递关系
    148.在调用一个函数的过程中又出现直接或间接地调用该函数本身称为函数的递归调用
    149.在一个函数内部定义的变量是内部变量,称为局部变量
    150.在函数之外定义的变量称为外部变量,是全局变量
    151.从变量的作用域角度来分,可以分为全局变量和局部变量(而不是静态和动态变量)
    152.静态存储方式是指在程序运行期间分配固定的存储空间的方式
    153.存储方法分为两大类:静态存储类和动态存储类
    154.C语言允许将局部变量的值放在CPU中的寄存器中,这种变量称为“寄存器变量”
    155.局部静态变量不能定义为寄存器变量
    156.如果一个函数只能被本文件中其它函数所调用,称为内部函数
    157.C源程序中的预处理命令,它不是C语言本身的组成部分
    158.宏定义不是C语句,在行末不加分号
    159.宏定又是用宏名代替一个字符串,只作简单的置换,不作正确性检查
    160.在进行宏定义时,可以引用已定义的宏名
    161.宏替换不占程序运行时间,只占编译时间
    162.文件包含处理是指个源文件可以将另一个的全部内容含进来源文件包
    163.一个include命令只能指定一个被包含文件
    164.存放变量地址的变量是指针变量
    165.C语言中变量的指针就是变量的地址
    166.函数的参数也可以是指针变量
    167.指针变量可以指向变量,也可以指向数组和数组元素
    168.引用数组元素可以用下标法,也可以用指针法
    169.用指针变量可以指向一维数组,也可以指向多维数组,用指针变量也可以指向一个函数
    170.一个函数可以带回一个整型值、字符值或实型值,也可以带回指针型的数据
    171.指针数组中的每一个元素都相当于一个指针变量
    172.指针数组中的每一个元素都相当于一个整型变量
    173.指针变量可以有空值,即该指针变量不指向任何变量
    174.若两个指针指向同一个数组的元素。则两指针变量可以进行比较
    175.用户自己定义一个结构教型后们其中并无具体数据
    176.在程序中使用的可和百网时 定义结构体类型的变量
    177.结构体类型的成员也可以是一个结构体变量
    178.结构体成员名可以与程序中的变量名相同
    179.不能将一个结构体变量作为一个整体进行输入和输出
    180.对结构体变量的成员可以像普通变量一样进行各种运算
    181.可以引用结构体变量的地址
    182.可以引用结构体变量成员的地址
    183.结构体数组的每个元素都是一个个结构体类型的数据
    184.对结构体数组可以初始化,即赋初值
    185.可以定义一个指针变量,用来指向一个结构体变量
    186.指针可以用结构体变量作链表中的结点
    187.malloc函数的返回值是一个指向分配域起始地址的指针
    188.建立动态链表是指在程序执行过程中从无到有地建立起一个链表
    189.使几个不同的变量共占同一段内存的结构,称为共用体类型的结构
    190.共用体变量所占的内存长度等于最长的成员长度
    191.定义了共用体变量,只能引用共用体变量中的成员(不能引用公用体变量)
    192.共用体变量的地址和它的各成员的地址都是同一地址
    193.共用体类型可以出现在结构体类型定义中
    194.结构体类型可以出在共用体类型定义中
    195.在C编译中,对枚举元素按常量处理
    196.一个整数不能直接赋给一个枚举变量
    枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型 。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
    枚举可以根据Integer、Long、Short或Byte中的任意一种数据类型来创建一种新型变量。这种变量能设置为已经定义的一组之中的一个,有效地防止用户提供无效值。该变量可使代码更加清晰,因为它可以描述特定的值。
    197.可以用typedef声明新的类型名来代替已有的类型名
    198.位运算的运算量只能是整型或字符型的数据
    200.位运算符与赋值运算符可以组成复合赋值运算符
    在 C 语言中, 一种方法是用叫做位段的构造类型来定义一个压缩信息的结构。
    201.已有定义int (*p)( );指针p可以指向函数的入口地址
    202.C语言中运算对象必须是整型的是%=
    203.int *p 表达的是p是指向int型数据的指针。
    204函数rewind的功能是将文件指针重新指向一个流的开头(即使文件指针重新返回文件的开始位置),int rewind(FILE *stream);并且无返值。
    205.如果函数值的类型与返回值类型不一致,以函数值类型为准
    206.c语言中形参和实参类型不一致时以形参的类型为准
    207.形参应该是函数声明的时候就已经定义好
    208.若有定义int t[3][2],能正确表达t数组元素地址的是–t[2]+1
    209.int[]={1,2};
    210.C语言中的循环语句有for,while,do-while和goto,,***不是if、switch、break
    211.不正确的赋值语句是—ch‘a+b’,正确的是ch=‘\0’ ch=‘7’+‘9’ ch=7+9
    212.正确的赋值语句x3=12;
    213.C语言逻辑运算时,0为假,非0为真
    214.字符串常量是以双引号扩起来的字符序列“a”(其他C语言常量‘\n’ 012)(e-2不是C语言常量----实数的指数形式中,e后面必须有一个整数)

    301.一个位段必须存储在同一存储单元中
    302.位段的长度不能大于存储单元的长度
    303.一个c程序由若干个函数构成,其中有且仅有一个主函数
    304.指针变量中存放的是它所指对象的地址
    305.在C语言中,分号是语句的必然组成部分
    306.结构体变量所占空间是各成员所占空间之和
    307.数据文件可顺序读取,也可借助文件的定位操作实现随机读取
    308.从用户的角度上讲,类型的含义是规定了该类型变量的取值范围和运算范围
    309.c语言中,变量和函数均具有类型和存贮类别两个属性
    340.顺序结构>选择结构>循环结构
    341.函数返回值的类型是由函数定义时指定的类型
    342.*与s[]相等
    343.当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数和整型数值等。
    344. getchar函数没有参数
    345.静态储存方式是在程序运行期间分配固定的储存方式的方式
    356.局部静态变量不能定义为寄存器变量
    357.不能把共用体变量作为函数的参数
    358.一个整数不能直接赋给一个枚举变量
    359.int *p=a 是对指针变量p的正确定义和初始化。
    360.Char s[]=”china”;
    Char p;
    P=s;
    p与s[]相等
    有int [],*p=a
    则p+5表示元素a[]的地址
    361.C语言中,退格符是\b
    362.C语言中,变量的隐含储存类别是auto
    363.实际参数和形式参数可以同名
    364.函数调用可以作为一个函数的形参
    365.结构化程序设计的3中结构是-顺序结构、选择结构、循环结构
    366.当从键盘输入数据时整型变量可以输出整型值和字符,对于实型变量可以输入实型数和整型数值
    367.C语言中逗号运算符的优先级最低,指针最优,单目运算优于双目运算。如正负号。
    先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.
    逻辑运算最后结合。
    368.C语言区分定义变量名的大小写
    369.设有如下定义:
    struck sk
    { int a;
    float b;
    } data;
    int *p;
    若要使P指向data中的a域,正确的赋值语句是(C)A、 p=&a; B、 p=data.a; C、 p=&data.a; D、 *p=data.a;
    370.double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。
    371.设有以下说明语句:
    struct stu
    {
    int a;
    float b;
    }
    stutype;
    则下面叙述不正确的是( )。
    A) struct是结构体类型的关键字
    B) structstu是用户定义的结构体类型
    C) stutype是用户定义的结构体类型名
    D) a和b都是结构体成员名
    答案解析
    定义一个结构的一般形式为:
    struct结构体名
    {
    成员列表
    }变量名列表;
    本题中的stutype是在声明结构体类型structstu的同时定义的该结构体变量,而不是用户定义的结构体类型名。类型与变量是不同的概念; 2)对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量;3)成员也可以是一个结构体变量; 4)成员名可以与程序中的变量名相同,二者不代表同一对象。
    372.C语言中的数据类型是指-函数返回值的数据类型
    373.C程序设计语言的基本成分是数据成分、运算成分、控制成分、传输成分。
    374.while(t=1)循环控制表达式的值为1。
    375.printf(++x);表示地址所连接的数值加1.
    376.int[3][4]; 表示a为3行
    4列的数组,它可用的最大行下标为2,列下标最大为3;
    若是引用a[0][4],则超过了数组的范围
    377.若有如下说明和定义
    struct test
    {
    int ml; char m2; float m3;
    union uu
    {
    char ul[5]; int u2[2];
    }
    ua;
    } myaa;
    则sizeof(struct test)
    的值是A.12 B.16 C.14 D.9
    正确答案:A
    在本题中,首先定义了一个结构体。在该结构体中,定义了一个整型变量成员、一个字符型变量成员和一个浮点型变量成员,并在结构体中定义了一个联合体变量成员,联合体变量成员中又包含两个联合体成员数组。题目最后要求计算该结构体变量所占的存储空间。
    在C语言中,联合体变量中的所有成员共享存储空间,联合变量的长度等于各成员中最长的长度,因此,本题的联合体部分所占的长度为5,但是结构体与联合体不一样的是,结构体不能共享空间,一个结构体变量的总长度是各成员长度之和,因此,该结构体所需的存储空间为5+1+2+4=12。本题的正确答案选A。
    378.静态储存类别的关键词是static
    379.C语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块是被建立,它在该程序块活动时存在,退出该程序块时撤销。
    380.fseek(文件指针,位移量,起始点)
    “起始点”用0,1或2代替,0代表“文件开始”,1为“当前位置”,2为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据。这样当文件的长度大于 64k时不致出现问题。ANSI C标准规定在数字的末尾加一个字母L,就表示long型。
    381.若有定义:int (*p)[4];则标识符p ,是一个指针指向一个含有四个整形元素的一维数组。
    382.基本数据类型:整型、实型、字符型
    383.EOF是指向文本文件的结束标志,NULL是打开文件错误时的返回值。feof(fp)用来判断文件是否在文件末尾,文本文件和二进制文件均可以使用此函数,如果遇到文件结束就返回1,否则返回0。
    384.C语言的函数可以嵌套调用
    385.标准库函数fgets(s,n,f)的功能是什么–从文件f中读取长度不超过n-1的字符串存入指针s所指的内存。
    从流中读一行或指定个字符,
    原型是char *fgets(char *s, int n, FILE *stream);
    从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。
    形参注释:*string结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针
    说得简单一点就是从f这个文件输入流中读取n-1个字符,存到s中。
    如果一行的字符数小于n-1,那么就是一行的字符数,所以应该理解为不超过n-1,如果一行的长度大于n-1,就是n-1个字符
    386.
    1、数据计算类型不同。基本数据类型分为三类:整数型(定点型)、实数型(浮点型)和字符型。除了基本数据类型,还有构造类型(数组、结构体、共用体、枚举类型)、指针类型、空类型void。
    2、各种数据类型的关键词不同。short、long、int、float、double、char六个关键词表示C语言里六种基本数据类型。
    3、不同数据类型占用内存的大小不同。short占2byte,int占4byte,long占4byte,float占2byte,double占8byte,char占1byte(不同的平台可能占用内存大小不一样,具体的可以用sizeof 测试下)。
    387.一个可以没有变量定义和执行部分,例如空函数

    展开全文
  • VB中数据类型及其运算

    千次阅读 2014-10-08 18:54:20
    运算符执行顺序 常用的数值型格式说明字符 常用的时间日期型格式说明字符 常用的字符型格式说明字符 常用的窗体属性 窗体和控件的默认事件 ...
  • 输入一串字符,分别算出英文字母、空格、数字、其他字符的个数(C) 抛砖引玉,先看一下这两个小题目: 将China加密 单引号:字符 字符进行加减时,内部进行了数学运算(先转化为ASCII码,进行加减后,根据输出格式%...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    OnePerson虽然存储的是Person类对象地址,但不是C中的指针,不能象指针那样可以进行加减运算,也不能转换为其它类型地址,它是引用型变量,只能引用(代表)Person对象,具体意义参见以后章节。和C、C++不同,C#只能用...
  • R

    千次阅读 2018-02-27 16:22:13
    向量和向量相加,在相同的序列位置上,对两个向量的元素相加,返回的结果是向量,向量和向量做运算,推荐两个向量具有相同的长度(length): > a= 1 : 3 > b= 4 : 6 > a+ b [ 1 ] 5 7 9 六,向量的排序和...
  • vb学习之四

    2016-02-11 20:56:53
     一个表达式可能含有多种运算,计算机按一定的顺序对表达式求值。一般顺序如下: 首先进行函数运算; 接着进行算术运算, 其次序为: 幂(^)→取负(-)→乘、浮点除(*、/)→整除(\)→取模(Mod)→加、减(+、-)→...
  • end   代码中的译码顺序是从H矩阵的第一行顺序译码,事实上可以根据码的结构调整译码顺序,合理的安排译码顺序会提高误码性能。 IDS类算法   在SPA或者LBP的迭代过程中,一些节点产生的信息可能在少量迭代时即...
  • VB.NET 教程_01_基础语法

    万次阅读 多人点赞 2018-08-08 00:48:58
    VB.Net是一种简单,现代,面向对象的计算机编程语言,由微软开发,将.NET Framework和公共语言运行库的强大功能与作为Visual Basic标志的生产力优势相结合。 Visual Basic .NET(VB.NET)是在.NET Framework上...
  • VB 异或(Xor)字符串的方法

    千次阅读 2020-09-28 22:36:20
    VB 异或(Xor)字符串的方法 关键字:VB,VBA,异或,Xor,字符串 文章目录VB 异或(Xor)字符串的方法前言一、方法一,比较笨。二、方法二,感觉轻松多了。三、说一说关于UltraISO的部分算法 前言 简介:大家都...
  • 2.5 VB编程基础--运算符和表达式

    千次阅读 2017-02-12 08:03:55
    运算符:VB中数据参与运算的符号。 表达式:由运算符和数据连接而成的式子。 2.5.1 运算符 VB运算符有4大类:1.算术运算符:+、-、*、/、^、Mod、/等。  2.关系运算符:=、>、 、  3.连接运算符:+、&。  4.逻辑...
  • 1.编写程序:实现输入一个任意位的整数,输出该数的位数及倒序数。如:输入1234567,则输出“该数的位数为7,其倒序数为7654321”。 2. 代码如下: Private Sub Command1_Click() ...Dim shu As Long, dshu As ...
  • VB学习记录

    千次阅读 多人点赞 2017-11-25 16:47:56
    一、什么是VB VB程序设计是要干什么? 1.添加、设置对象; 2.对对象添加功能。 编程的基本要素 - 对象object - 类class - 属性property - 方法method - 事件event 事件过程的一般格式: ...
  • vb.net方法重载

    2018-07-25 13:49:44
    每一个类型成员都有一个唯一的签名,方法的签名由方法的名称,参数的数目、类型和顺序,类型参数(适用于泛型),返回类型(仅适用于转换运算符)组成。 只要签名不同,就可以在一种类型内定义具有相同名称的多种...
  • 用于学习vb.net的程序。 不包含运算顺序判断的最基本的四则运算器。 (例如,1+2*3会先计算1+2=3,再计算3*3) 开源,转载请保留作者信息。 (使用VS2008 开发)
  • 使用VB重写日历控件
  • VB运算符总结

    2019-09-04 10:46:24
    由高到低(关系运算符具有相同的优先级别),可以通过小括号()改变运算的优先顺序。                   * 求积 50*2.1...
  • 的主要因素是单目运算符“-”的运算级和连续乘幂的运算顺序。详细分析如下:  1. 对于表达式 2^-2^-2 , VB 的计算步骤是 2^(-2^-2)= .840896415253715 ,这时它的计算顺序是从右到左,而 Excel 则严格按照从左到...
  • 算法四则运算 任务描述 通过对求两数之和这个算法的描述以及用VB实现的方法了解顺序结构算法的特征掌握顺序结构的程序设计方法 ? 任务分析 伴随着人类社会的进步人们的计算工具也在不断的变化从远古时期的结绳计数到...
  • vb.net教程

    2019-03-21 11:20:27
    VB.Net教程简介: VB.Net是一种简单,现代,面向对象的计算机编程语言,由微软开发,将.NET Framework和公共语言运行库的强大功能与作为Visual Basic标志的生产力优势相结合。 Visual Basic .NET(VB.NET....
  • VB 计算24点 益智游戏

    2013-01-18 12:04:38
    随机四个0-9大小范围的数字,随便变换顺序和加运算规则使结果为24
  • VB讲课笔记04:数据类型、运算符与表达式、常用函数一、标识符VB6.0中,标识符分两类,一类是系统内部定义的标识符, 一类是用户定义的标识符。 系统内部定义的标识符又称关键字或保留字,主要用于标识内部符号常量、...
  • VB.NET简介

    2017-08-24 14:48:22
    Visual Basic.NET是基于微软.NET Framework之上的面向对象的编程语言。 其在调试时是以解释型语言方式运作,而输出为EXE程序是是以编译型...大多的VB.Net程序员使用Visual Studio .Net作为IDE(integrated develop...
  • vb.net控件

    2020-04-28 14:49:22
    vb.net 的 Label 控件 label(标签)控件用于显示文本,是设计应用程序界面时经常要用到的控件之一, 主要是用于显示其他控件名称,描述程序运行状态或标识程序运行的结果信息等 等,响应程序的事件或跟踪程序运行的...
  • OpenCV矩阵运算

    千次阅读 2014-12-15 15:14:26
    注意在进行叉乘运算时,Va, Vb, Vc 必须是仅有3个元素的向量. (4)   单一矩阵的运算: CvMat *Ma, *Mb; cvTranspose(Ma, Mb);   // 转置:transpose(Ma) -> Mb (注意转置阵不能返回给Ma本身) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,458
精华内容 2,583
热门标签
关键字:

vb的运算顺序