lua学习过程中的练习

 遍历数组

--遍历数组
table={1,4,5,23,6}
function displaytable(t)
    local s=""
    for i,v in ipairs(t) do
    s=s..v.." "
    end
    return "数组:"..s
end
print(displaytable(table))

 

 1.查找数组最大值

--1.查找数组最大值
arr = {1,2,3,4,5,5,5,5,8,9,1}--定义数组
function maxnum(arr)
    print("数组为:"..displaytable(arr))
    local max=0;
    for i,v in ipairs(arr)
    do
        if (max<v) 
        then
            max=v;
        end
    end
    return max;
end

print("数组中最大值是:",maxnum(arr));

 2.计算数的n次方

--2.数字的n次方
function fn(num,n)
    number=num
    for i=2,n do
        number=number*num
    end
    return "数"..num.."的"..n.."次方是"..number
end

-- print("输入基数:")
-- local num=io.read()
-- print("输入次方数:")
-- local n=io.read()
print(fn(2,3))

 3.两个数的加、减、乘、除

-- --3.两个数的加减乘除
function mymath(num1,num2)
    print("数字:"..num1.."和"..num2.."的加减乘除")
    print(num1.."+"..num2.."="..num1+num2)
    print(num1.."-"..num2.."="..num1-num2)
    print(num1.."*"..num2.."="..num1*num2)
    print(num1.."/"..num2.."="..num1/num2)
end
mymath(5,10)

4.数的阶乘(递归)

--4.数的阶乘(递归)
number=5
function myfun(num)
    if num==0
    then
        return 1
    else
        return num*myfun(num-1)
    end
end
print("数"..number.."的阶乘为"..myfun(number))

5.数的阶乘(repeat..until) 

--5.数的阶乘(repeat..until)
number=5
function myfun(n)
    local i = 1
    if n < 1 then
        return 1
    end
    repeat i = n * i
    n = n - 1
    until n == 0
    return i

end
print("数"..number.."的阶乘为"..myfun(number))

6.九九乘法口决

--6.九九乘法口决
function myfun()
    for a=1,9 do         --循环一从1到9
        local s=""       --记录
        for b=1,a do     --循环二从1到a
            s=s..b.."X"..a.."="..a*b.."\t"
        end
        print(s)
    end
end
print("九九乘法口诀")
myfun()

7.表翻转 

--7.表翻转
arr={1,2,3,4,5,6,7} --自定义初始表
function fun1(arr)
    local s1=""
    for j,val in ipairs(arr) do
        s1=s1..val.." "
    end
    print("初始数组:"..s1)
end
fun1(arr)

function fun2(arr)              --翻转函数
    b={}                        --空table记录数据
    arrlen=#arr                 --数组长度
    for i,v in ipairs(arr) do
        b[i]=arr[arrlen+1-i]    --翻转
    end
    
    local s2=""                 --连接数据
    for j,val in ipairs(b) do
        s2=s2..val.." "
    end
    print("翻转数组:"..s2)
end
fun2(arr)

8.__sub表相减 

--8.__sub表相减
arr1={a=5,b=6,c=7}                  --表一
arr2={a=2,b=6,c=8}                  --表二
setmetatable(arr1,{             --设置元表
    __sub=function(table1,table2)   --设置__sub键逻辑
        local s={}
        s.a=table1.a-table2.a
        s.b=table1.b-table2.b
        s.c=table1.c-table2.c
        return s
    end
})
s=arr1-arr2                     --执行表的相减操作
print(s.a,s.b,s.c)

 9.__index查找表

--9.__index查找表
arr1={x=1,y=2}
arr2={z=3,q=4}
setmetatable(arr1,{
    __index=arr2
})
print(arr1.q)       --在arr1中查找q,因为arr1本身没有,所以会在arr2中继续找

 10.模块

--10.模块
--lua require模块加载机制:http://www.daileinote.com/computer/lua/06

package.path = 'D:/code/module.lua;'..package.path  --添加自定义搜索路径,即要引用的文件的地址
m=require('module')                                 --加载模块,需要存在于相关路径中了才可找到
print(m.funC(3,4))
print(m.funS(3,4))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值