Lua练习题集嚢

Lua练习题集嚢,第1张

概述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.冒泡排序的另外一种
  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 =1105     if n <1 then 106         return 1107     end108     repeat i = n*i 109     n = n-1110     until n ==0111     print(i)112 end113 print(t(5))114 115 --9.斐波那契数列116 function fb(i)117     if i<= 2 and i>0 then 118         return 1119     else120         local j = fb(i-1)+fb(i-2)121         return j 122     end123 end124 i = 1125 while i<=20 do 126 print("想得到的斐波那的第"..i.. "个数是:"..fb(i))127  i = i+1128 end 129 130 --10.输出三角形的形状131 for x = 1,7,1 do 132     local j =""133     for y = 1,1 do 134         if y<=x then        --y>=x 变成倒三角了135             j = j.."<>"136         end137     end138     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*i147             if n <=9 then 148                 n = "0"..n 149             end150             s = s..j.."x"..i.."="..n.." "151         end152     end153     print(s)154 end155 156 --12.function 可以以“匿名函数”的方式通过参数传递157 function testFun(tab,fun)158     for k,v in pairs(tab) do 159         print(fun(k,v))160     end161 end162 tab = {key1 = "value1",key2 ="value2",key3 = "value3",key4 = "value4"}163 testFun(tab,function(key,value)164 return key.."="..value165 end 166 )167 168 --13.冒泡排序法  排列数组的10个元素(从大到小进行排列)169 sz = {56,52,32,78,55,41,12,36,75,99}170 i = 1171 j = 1172 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         end177         j = j+1178     end179     j = 1   --一轮比较完,进行 第二轮的比较180     i = i + 1181 end182 for k,v in pairs(sz) do 183     print(k.."键的值为:"..v)184 end185 186 --14.用table.sort() 进行排序187 am = {"b","f","c"}188 array = function()189     for i =1,#am do 190         print(i..","..am[i])191     end192 end193 table.sort(am)194 array()195 --***********另外一种************196 am = {"b","c"}197 table.sort(am)198 for k,v in pairs(am) do 199     print(k.."对应的值为:"..v)200 end201   --按降序进行pail202 tab1={"a","b","p"}203 sortFunc = function(a,b)204     return b<a 205 end206 table.sort(tab1,sortFunc)207 print(table.concat(tab1,")) --p,g,b,a208 209 --15.lua中我们可以将“函数作为参数”传递给“函数”>> 函数可以作为数据赋值,也可以作为参数进行传递210 PrintMy = function(parm)211     print("打印函数-print",parm,"????")212 end213 function add(num1,num2,functionP)214     re = num1+num2215     functionP(re)216 end217 PrintMy(10)218 add(5,10,PrintMy)219 220 221 --16.求几个数的平均值(将可变参数赋值给一个变量)222 function average(...)223     resule = 0224     local arg={...}  --这个地方一定要添加(这个参数是 "不带" 个数 )225     for i,v in ipairs(arg) do 226         result = resule+v227     end228     print("总共传入"..#arg.."个数")229     print("平均值为",result/#arg)230 end231 average(10,20,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     end243     return Cn244 end245 print(NumToCn(7788555789))  --竟然不能写很多函数,如果是很多的话,会报错   246 247 --18.求阶乘的另外一种写法248 function fb(n)249     if n == 1 then 250         return 1251     else252         return n *fb(n-1)253     end254 end255 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=    9261 s =string.gsub("hello*Js","=")262 print(s)                                 --=h=e=l=l=o=*=j=s=263 264 --20.table 中的元素 去重  *** 作265 tableA = {8,9,1,8,6,2,4}266 function table_unique(t)267     local check ={} --定义一个空表268     local n ={}  --在定义一个空表269     for k,v in pairs(t) do270         if not check[v] then  271             n[k] = v272             check[v]=v273         end274     end275     return n 276 end277 for k,v in pairs (table_unique(tableA)) do 278     print("value is:",v)279 end280 281 --21.return 关键字的作用就是在函数中返回某些值282 function ha(a,b)283     x=a*b 284     y=b*b 285     return x,y286 end287 i = 10288 j =5289 d,c = ha(i,j)290 print(d..""..c)291 292 --22.一个数90-100代表优秀,80-90代表良好,以此类推293 local mathscore = 80294 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 else301     print("不及格")302 end303 304 --23.写一个脚本判断两个数是否都为小于或等于200的奇数(不能被2整除的数)305 local a,b = 200,101306 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 then309     print("a为小于等于200的奇数")310 elseif b%2==0 and b<200 then311     print("b为小于等于200的奇数")312 else313     print("ab 两个数不是小于等于200的奇数")314 end315 316 --24.循环语句的嵌套使用317 --有 1,2,3,4四个数字,能组成多少个互不相同且无重复数字的 三位数,并输出在屏幕上面318 for i = 1,4,1 do319     for j = 1,1 do320         for p = 1,1 do321             if  i ~= j and i ~= p and j ~= p then322                 print(i..j..p)323             end324         end325     end326 end327 --结果 太多读者自己打印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 --]]
总结

以上是内存溢出为你收集整理的Lua练习题集嚢全部内容,希望文章能够帮你解决Lua练习题集嚢所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1234805.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存