• Lua练习题集嚢


      1 --1.table.sort()
      2 am = {"cc","nn","ll","dd"}
      3 arr = function ()
      4     for i =1,#am do
      5         print(i..","..am[i])
      6     end
      7 end
      8 table.sort(am)
      9 arr()
     10 
     11 --2.冒泡排序的另外一种写法
     12 function bubble_sort(array)
     13     local tmp = 0
     14     for i =1,#array-1 do 
     15         for j =1,#array-i do 
     16             if array[j]>array[j+1] then 
     17                 tmp = array[j]
     18                 array[j]=array[j+1]
     19                 array[j+1] = tmp
     20             end
     21         end
     22     end
     23 end
     24 function main(...)
     25     local arr = {54,25,66,45,555,666,321,88,665,89}
     26     bubble_sort(arr)
     27     for i,v in pairs (arr) do 
     28         print("排序后的结果为:",i.."->"..v)
     29     end
     30 end
     31 main()
     32 --3.按降序进行排列
     33 tabl={"b", "a", "g", "c"}
     34 sortFunc = function(a,b) return a<b end 
     35 table.sort(tabl,sortFunc)
     36 print(table.concat(tabl,","))
     37 
     38 --4.获得table中最大值的例子
     39 function maxTable(t)
     40     local temp = nil
     41     for k,v in pairs(t) do 
     42         if(temp==nil) then 
     43             temp = v
     44         end
     45         if temp<v then
     46             temp = v
     47         end
     48     end
     49     return temp
     50 end
     51 tab = {[1]=55,[2]=43,[3]=89,[4]=9,[5]=1}
     52 print("该表中的最大值为:",maxTable(tab))
     53 
     54 --5.创建自己的迭代器
     55 array2 = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"}
     56 
     57 function elementIterator2(countTable)
     58     local inde =0 
     59     local coun1 = #countTable  --获得其长度
     60     return function()   --匿名函数
     61         inde = inde+1   
     62         if inde<=coun1 then
     63             return countTable[inde]
     64         end
     65     end
     66 end
     67 
     68 for element in elementIterator2(array2) do 
     69     print(element)
     70 end
     71 
     72 --6.一个简单的例子来实现迭代,实现数字n的平方
     73 function square(iteratorMaxCount,currentNumber)
     74     if currentNumber<iteratorMaxCount then 
     75         currentNumber = currentNumber+1
     76         return currentNumber,currentNumber*currentNumber
     77     end
     78 end
     79 for i ,n in square ,3,0 do 
     80     print(i,n)
     81 end
     82 
     83 --7.定义一个函数,传入两个参数并相加,相减,相乘,相除,取模,返回他们的运行结果
     84 function mathB(a,b)
     85     c1 = a+b 
     86     c2 = a-b 
     87     c3 = a*b 
     88     c4 = a/b 
     89     c5 = a%b 
     90     return c1,c2,c3,c4,c5
     91 end
     92 
     93 i = 5
     94 j = 9
     95 p1,p2,p3,p4,p5 = mathB(i,j)
     96 print(p1)
     97 print(p2)
     98 print(p3)
     99 print(p4)
    100 print(p5)
    101 
    102 --8.定义一个函数利用循环让这个函数能够计算n的阶乘
    103 t = function(n)
    104     local i =1
    105     if n <1 then 
    106         return 1
    107     end
    108     repeat i = n*i 
    109     n = n-1
    110     until n ==0
    111     print(i)
    112 end
    113 print(t(5))
    114 
    115 --9.斐波那契数列
    116 function fb(i)
    117     if i<= 2 and i>0 then 
    118         return 1
    119     else
    120         local j = fb(i-1)+fb(i-2)
    121         return j 
    122     end
    123 end
    124 i = 1
    125 while i<=20 do 
    126 print("想得到的斐波那的第"..i.. "个数是:"..fb(i))
    127  i = i+1
    128 end 
    129 
    130 --10.输出三角形的形状
    131 for x = 1,7,1 do 
    132     local j =""
    133     for y = 1,7,1 do 
    134         if y<=x then        --y>=x 变成倒三角了
    135             j = j.."<>"
    136         end
    137     end
    138     print(j)
    139 end 
    140 
    141 --11.9*9乘法表
    142 for i = 1,9 do 
    143     local s = ""
    144     for j = 1,9 do 
    145         if j<=i then 
    146             n = j*i
    147             if n <=9 then 
    148                 n = "0"..n 
    149             end
    150             s = s..j.."x"..i.."="..n.." "
    151         end
    152     end
    153     print(s)
    154 end
    155 
    156 --12.function 可以以“匿名函数”的方式通过参数传递
    157 function testFun(tab,fun)
    158     for k,v in pairs(tab) do 
    159         print(fun(k,v))
    160     end
    161 end
    162 tab = {key1 = "value1",key2 ="value2",key3 = "value3",key4 = "value4"}
    163 testFun(tab,function(key,value)
    164 return key.."="..value
    165 end 
    166 )
    167 
    168 --13.冒泡排序法  排列数组的10个元素(从大到小进行排列)
    169 sz = {56,52,32,78,55,41,12,36,75,99}
    170 i = 1
    171 j = 1
    172 while i < (#sz) do 
    173     while j <=((#sz)-i) do  
    174         if sz[j]<sz[j+1] then 
    175             sz[j],sz[j+1] = sz[j+1],sz[j]   --实现2个数的交换
    176         end
    177         j = j+1
    178     end
    179     j = 1   --一轮比较完,进行 第二轮的比较
    180     i = i + 1
    181 end
    182 for k,v in pairs(sz) do 
    183     print(k.."键的值为:"..v)
    184 end
    185 
    186 --14.用table.sort() 进行排序
    187 am = {"b","a","f","c"}
    188 array = function()
    189     for i =1,#am do 
    190         print(i..","..am[i])
    191     end
    192 end
    193 table.sort(am)
    194 array()
    195 --***********另外一种************
    196 am = {"b","a","f","c"}
    197 table.sort(am)
    198 for k,v in pairs(am) do 
    199     print(k.."对应的值为:"..v)
    200 end
    201   --按降序进行pail
    202 tab1={"a","g","b","p"}
    203 sortFunc = function(a,b)
    204     return b<a 
    205 end
    206 table.sort(tab1,sortFunc)
    207 print(table.concat(tab1,",")) --p,g,b,a
    208 
    209 --15.lua中我们可以将“函数作为参数”传递给“函数”>> 函数可以作为数据赋值,也可以作为参数进行传递
    210 PrintMy = function(parm)
    211     print("打印函数-print",parm,"????")
    212 end
    213 function add(num1,num2,functionP)
    214     re = num1+num2
    215     functionP(re)
    216 end
    217 PrintMy(10)
    218 add(5,10,PrintMy)
    219 
    220 
    221 --16.求几个数的平均值(将可变参数赋值给一个变量)
    222 function average(...)
    223     resule = 0
    224     local arg={...}  --这个地方一定要添加(这个参数是 "不带" 个数 )
    225     for i,v in ipairs(arg) do 
    226         result = resule+v
    227     end
    228     print("总共传入"..#arg.."个数")
    229     print("平均值为",result/#arg)
    230 end
    231 average(10,20,5,36,5,8)
    232 
    233 
    234 --17.将阿拉佰数字改成汉字形式的数字 
    235 print("^^^^^^^^将阿拉佰数字改成汉字形式的数字^^^^^^^^^^^")
    236 local function NumToCn(num)
    237     local size = #tostring(num)  --先转换为字符串,然后 求其长度
    238     local Cn = ""
    239     local StrCn = {"","","","","","","","",""}
    240     for i =1,size do 
    241         Cn = Cn..StrCn[tonumber(string.sub(tostring(num),i,i))]
    242     end
    243     return Cn
    244 end
    245 print(NumToCn(7788555789))  --竟然不能写很多函数,如果是很多的话,会报错   
    246 
    247 --18.求阶乘的另外一种写法
    248 function fb(n)
    249     if n == 1 then 
    250         return 1
    251     else
    252         return n *fb(n-1)
    253     end
    254 end
    255 print(fb(6))
    256 fb1 =fb    --函数值可以被赋值,赋值的和原来的具有一样的用法
    257 print(fb1(6))
    258 
    259 --19. 看一下下面2个输入法的区别  
    260 print(string.gsub("hello*js",".-","="))  --=h=e=l=l=o=*=j=s=    9
    261 s =string.gsub("hello*js",".-","=")
    262 print(s)                                 --=h=e=l=l=o=*=j=s=
    263 
    264 --20.table 中的元素 去重 操作
    265 tableA = {8,9,1,9,8,7,5,6,3,2,1,2,3,8,9,6,4}
    266 function table_unique(t)
    267     local check ={} --定义一个空表
    268     local n ={}  --在定义一个空表
    269     for k,v in pairs(t) do
    270         if not check[v] then  
    271             n[k] = v
    272             check[v]=v
    273         end
    274     end
    275     return n 
    276 end
    277 for k,v in pairs (table_unique(tableA)) do 
    278     print("value is:",v)
    279 end
    280 
    281 --21.return 关键字的作用就是在函数中返回某些值
    282 function ha(a,b)
    283     x=a*b 
    284     y=b*b 
    285     return x,y
    286 end
    287 i = 10
    288 j =5
    289 d,c = ha(i,j)
    290 print(d..""..c)
    291 
    292 --22.一个数90-100代表优秀,80-90代表良好,以此类推
    293 local mathScore = 80
    294 if 90<=mathScore and mathScore<=100 then 
    295     print("优秀")
    296 elseif 70<=mathScore and mathScore<=90 then 
    297     print("良好")
    298 elseif 60<= mathScore and mathScore<=70 then 
    299     print("及格")
    300 else
    301     print("不及格")
    302 end
    303 
    304 --23.写一个脚本判断两个数是否都为小于或等于200的奇数(不能被2整除的数)
    305 local a,b = 200,101
    306 if a%2 == 1 and a<=200 and b<=200 and b%2 == 1 then 
    307     print("ab 两个数都为小于等于200的奇数")
    308 elseif a%2==1 and a<=200 then
    309     print("a为小于等于200的奇数")
    310 elseif b%2==0 and b<200 then
    311     print("b为小于等于200的奇数")
    312 else
    313     print("ab 两个数不是小于等于200的奇数")
    314 end
    315 
    316 --24.循环语句的嵌套使用
    317 --有 1,2,3,4四个数字,能组成多少个互不相同且无重复数字的 三位数,并输出在屏幕上面
    318 for i = 1,4 ,1 do
    319     for j = 1,4,1 do
    320         for p = 1, 4,1 do
    321             if  i ~= j and i ~= p and j ~= p then
    322                 print(i..j..p)
    323             end
    324         end
    325     end
    326 end
    327 --结果 太多读者自己打印
    328 
    329 --25.9*9乘法表的另外的一种输出方式 
    330 for m=1,9 do                           -- for循环1到9  
    331     local s = ""                       -- 定义一个用来输出的字符串S  
    332     for n=1,9 do                       -- 内层循环1到9  
    333         if n <= m then                 -- 实现乘法表阶梯增打印效果 
    334             s = s..m.."x"..n.."="..m*n.."|"-- ..表示字符串拼接  
    335            
    336         end          
    337     end  
    338     print(s)  
    339 end 
    340 --[[
    341 1x1=1|
    342 2x1=2|2x2=4|
    343 3x1=3|3x2=6|3x3=9|
    344 4x1=4|4x2=8|4x3=12|4x4=16|
    345 5x1=5|5x2=10|5x3=15|5x4=20|5x5=25|
    346 6x1=6|6x2=12|6x3=18|6x4=24|6x5=30|6x6=36|
    347 7x1=7|7x2=14|7x3=21|7x4=28|7x5=35|7x6=42|7x7=49|
    348 8x1=8|8x2=16|8x3=24|8x4=32|8x5=40|8x6=48|8x7=56|8x8=64|
    349 9x1=9|9x2=18|9x3=27|9x4=36|9x5=45|9x6=54|9x7=63|9x8=72|9x9=81|
    350 --]]
    我们什么都没有,唯一的本钱就是青春。梦想让我与众不同,奋斗让我改变命运!
  • 相关阅读:
    JAVA类与对象(十)-----抽象类
    JAVA类与对象(九)------多态
    JAVA类与对象(八)-----重写
    JAVA类与对象(七)------继承
    Mysql与Oracle区别
    redis缓存技术学习
    关于java中B/S架构
    关于java中C/S架构,创建服务器和客户端
    JQuery 轮播图片
    Kendo中ListView 无分页控件显示和有分页控件显示
  • 原文地址:https://www.cnblogs.com/mengmengxia/p/9354612.html
Copyright © 2020-2023  润新知