Lua练习题集嚢
--1.table.sort()
am = {"cc","nn","ll","dd"}
arr = function ()
for i =,#am do
print(i..","..am[i])
end
end
table.sort(am)
arr() --2.冒泡排序的另外一种写法
function bubble_sort(array)
local tmp =
for i =,#array- do
for j =,#array-i do
if array[j]>array[j+] then
tmp = array[j]
array[j]=array[j+]
array[j+] = tmp
end
end
end
end
function main(...)
local arr = {,,,,,,,,,}
bubble_sort(arr)
for i,v in pairs (arr) do
print("排序后的结果为:",i.."->"..v)
end
end
main()
--3.按降序进行排列
tabl={"b", "a", "g", "c"}
sortFunc = function(a,b) return a<b end
table.sort(tabl,sortFunc)
print(table.concat(tabl,",")) --4.获得table中最大值的例子
function maxTable(t)
local temp = nil
for k,v in pairs(t) do
if(temp==nil) then
temp = v
end
if temp<v then
temp = v
end
end
return temp
end
tab = {[]=,[]=,[]=,[]=,[]=}
print("该表中的最大值为:",maxTable(tab)) --5.创建自己的迭代器
array2 = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"} function elementIterator2(countTable)
local inde =
local coun1 = #countTable --获得其长度
return function() --匿名函数
inde = inde+
if inde<=coun1 then
return countTable[inde]
end
end
end for element in elementIterator2(array2) do
print(element)
end --6.一个简单的例子来实现迭代,实现数字n的平方
function square(iteratorMaxCount,currentNumber)
if currentNumber<iteratorMaxCount then
currentNumber = currentNumber+
return currentNumber,currentNumber*currentNumber
end
end
for i ,n in square ,, do
print(i,n)
end --7.定义一个函数,传入两个参数并相加,相减,相乘,相除,取模,返回他们的运行结果
function mathB(a,b)
c1 = a+b
c2 = a-b
c3 = a*b
c4 = a/b
c5 = a%b
return c1,c2,c3,c4,c5
end i =
j =
p1,p2,p3,p4,p5 = mathB(i,j)
print(p1)
print(p2)
print(p3)
print(p4)
print(p5) --8.定义一个函数利用循环让这个函数能够计算n的阶乘
t = function(n)
local i =
if n < then
return
end
repeat i = n*i
n = n-
until n ==
print(i)
end
print(t()) --9.斐波那契数列
function fb(i)
if i<= and i> then
return
else
local j = fb(i-)+fb(i-)
return j
end
end
i =
while i<= do
print("想得到的斐波那的第"..i.. "个数是:"..fb(i))
i = i+
end --10.输出三角形的形状
for x = ,, do
local j =""
for y = ,, do
if y<=x then --y>=x 变成倒三角了
j = j.."<>"
end
end
print(j)
end --11.9*9乘法表
for i = , do
local s = ""
for j = , do
if j<=i then
n = j*i
if n <= then
n = ""..n
end
s = s..j.."x"..i.."="..n.." "
end
end
print(s)
end --12.function 可以以“匿名函数”的方式通过参数传递
function testFun(tab,fun)
for k,v in pairs(tab) do
print(fun(k,v))
end
end
tab = {key1 = "value1",key2 ="value2",key3 = "value3",key4 = "value4"}
testFun(tab,function(key,value)
return key.."="..value
end
) --13.冒泡排序法 排列数组的10个元素(从大到小进行排列)
sz = {,,,,,,,,,}
i =
j =
while i < (#sz) do
while j <=((#sz)-i) do
if sz[j]<sz[j+] then
sz[j],sz[j+] = sz[j+],sz[j] --实现2个数的交换
end
j = j+
end
j = --一轮比较完,进行 第二轮的比较
i = i +
end
for k,v in pairs(sz) do
print(k.."键的值为:"..v)
end --14.用table.sort() 进行排序
am = {"b","a","f","c"}
array = function()
for i =,#am do
print(i..","..am[i])
end
end
table.sort(am)
array()
--***********另外一种************
am = {"b","a","f","c"}
table.sort(am)
for k,v in pairs(am) do
print(k.."对应的值为:"..v)
end
--按降序进行pail
tab1={"a","g","b","p"}
sortFunc = function(a,b)
return b<a
end
table.sort(tab1,sortFunc)
print(table.concat(tab1,",")) --p,g,b,a --15.lua中我们可以将“函数作为参数”传递给“函数”>> 函数可以作为数据赋值,也可以作为参数进行传递
PrintMy = function(parm)
print("打印函数-print",parm,"????")
end
function add(num1,num2,functionP)
re = num1+num2
functionP(re)
end
PrintMy()
add(,,PrintMy) --16.求几个数的平均值(将可变参数赋值给一个变量)
function average(...)
resule =
local arg={...} --这个地方一定要添加(这个参数是 "不带" 个数 )
for i,v in ipairs(arg) do
result = resule+v
end
print("总共传入"..#arg.."个数")
print("平均值为",result/#arg)
end
average(,,,,,) --17.将阿拉佰数字改成汉字形式的数字
print("^^^^^^^^将阿拉佰数字改成汉字形式的数字^^^^^^^^^^^")
local function NumToCn(num)
local size = #tostring(num) --先转换为字符串,然后 求其长度
local Cn = ""
local StrCn = {"一","二","三","四","五","六","七","八","九"}
for i =,size do
Cn = Cn..StrCn[tonumber(string.sub(tostring(num),i,i))]
end
return Cn
end
print(NumToCn()) --竟然不能写很多函数,如果是很多的话,会报错 --18.求阶乘的另外一种写法
function fb(n)
if n == then
return
else
return n *fb(n-)
end
end
print(fb())
fb1 =fb --函数值可以被赋值,赋值的和原来的具有一样的用法
print(fb1()) --19. 看一下下面2个输入法的区别
print(string.gsub("hello*js",".-","=")) --=h=e=l=l=o=*=j=s= 9
s =string.gsub("hello*js",".-","=")
print(s) --=h=e=l=l=o=*=j=s= --20.table 中的元素 去重 操作
tableA = {,,,,,,,,,,,,,,,,}
function table_unique(t)
local check ={} --定义一个空表
local n ={} --在定义一个空表
for k,v in pairs(t) do
if not check[v] then
n[k] = v
check[v]=v
end
end
return n
end
for k,v in pairs (table_unique(tableA)) do
print("value is:",v)
end --21.return 关键字的作用就是在函数中返回某些值
function ha(a,b)
x=a*b
y=b*b
return x,y
end
i =
j =
d,c = ha(i,j)
print(d.."和"..c) --22.一个数90-100代表优秀,80-90代表良好,以此类推
local mathScore =
if <=mathScore and mathScore<= then
print("优秀")
elseif <=mathScore and mathScore<= then
print("良好")
elseif <= mathScore and mathScore<= then
print("及格")
else
print("不及格")
end --23.写一个脚本判断两个数是否都为小于或等于200的奇数(不能被2整除的数)
local a,b = ,
if a% == and a<= and b<= and b% == then
print("ab 两个数都为小于等于200的奇数")
elseif a%== and a<= then
print("a为小于等于200的奇数")
elseif b%== and b< then
print("b为小于等于200的奇数")
else
print("ab 两个数不是小于等于200的奇数")
end --24.循环语句的嵌套使用
--有 1,2,3,4四个数字,能组成多少个互不相同且无重复数字的 三位数,并输出在屏幕上面
for i = , , do
for j = ,, do
for p = , , do
if i ~= j and i ~= p and j ~= p then
print(i..j..p)
end
end
end
end
--结果 太多读者自己打印 --25.9*9乘法表的另外的一种输出方式
for m=, do -- for循环1到9
local s = "" -- 定义一个用来输出的字符串S
for n=, do -- 内层循环1到9
if n <= m then -- 实现乘法表阶梯增打印效果
s = s..m.."x"..n.."="..m*n.."|"-- ..表示字符串拼接 end
end
print(s)
end
--[[
1x1=1|
2x1=2|2x2=4|
3x1=3|3x2=6|3x3=9|
4x1=4|4x2=8|4x3=12|4x4=16|
5x1=5|5x2=10|5x3=15|5x4=20|5x5=25|
6x1=6|6x2=12|6x3=18|6x4=24|6x5=30|6x6=36|
7x1=7|7x2=14|7x3=21|7x4=28|7x5=35|7x6=42|7x7=49|
8x1=8|8x2=16|8x3=24|8x4=32|8x5=40|8x6=48|8x7=56|8x8=64|
9x1=9|9x2=18|9x3=27|9x4=36|9x5=45|9x6=54|9x7=63|9x8=72|9x9=81|
--]]
Lua练习题集嚢的更多相关文章
- lua练手基础
lua的库文件地址: http://luaforge.net/projects/lua官网 http://lua.org --[[ print string. multiple line commen ...
- pat 团体赛练习题集 L2-007. 家庭房产
给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式给出一个人的房产: ...
- pat 团体赛练习题集 L2-008. 最长对称子串
对给定的字符串,本题要求你输出最长对称子串的长度.例如,给定"Is PAT&TAP symmetric?",最长对称子串为"s PAT&TAP s&quo ...
- pat 团体赛练习题集 L2-006. 树的遍历
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(<=30),是二叉树中结点的个数.第二行给出其后序遍历序 ...
- python程序练习题集
1.#输入a,b,c,d4个整数,计算a+b-c*d的结果 a=input("please input a nimber:") b=input("please input ...
- Lua知识备忘录
最近对Lua很感兴趣,以下是本阶段学习的总结,包含三部分,一部分是基础语法,一部分是扩展和解释器嵌入,最后一部分是Lua小练习. 知识涉及:Lua语言编程基础:Lua&C++:Lua扩展.嵌入 ...
- PTA中提交Java程序的一些套路
201708新版改版说明 PTA与2017年8月已升级成新版,域名改为https://pintia.cn/,官方建议使用Firefox与Chrome浏览器. 旧版 PTA 用户首次在新版系统登录时,请 ...
- 201771010126 王燕《面向对象程序设计(Java)》第十二周学习总结
实验十二 图形程序设计 实验时间 2018-11-14 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: 创建空框架 . 在Java中,常采用框架(Frame) ...
- 201771010118 马昕璐《面向对象程序设计java》第十二周学习总结
第一部分:理论知识学习部分 用户界面:用户与计算机系统(各种程序)交互的接口 图形用户界面:以图形方式呈现的用户界面 AET:Java 的抽象窗口工具箱包含在java.awt包中,它提供了许多用来设计 ...
随机推荐
- 【翻译自mos文章】注意: ASMB process exiting due to lack of ASM file activity
注意: ASMB process exiting due to lack of ASM file activity 參考原文: NOTE: ASMB process exiting due to la ...
- 解决myeclipse中struts2 bug问题包的替换问题
由于struts2的bug问题,手工替换还是比較麻烦.但即便是最新的myeclipse2014也没有替换最新的struts2包,研究了一天,最终找到了解决的方法.下面就解决方法与大家分享一下. 1.在 ...
- 桌面系统集成WEB认证系统方案
最近做的一个项目,有WEB版.WPF版.手机版.领导想集成集团的一个现成的认证系统,姑且称这个认证系统名为 W4认证系统. W4认证系统有如下特点: 1.现成的 2.是个单点登录系统 3.不支持oAu ...
- oc75--不可变字典NSDictionary
// // main.m // NSDictionary // // #import <Foundation/Foundation.h> int main(int argc, const ...
- [模板]平衡树splay
气死我了,调了一个下午+两节课,各种大大小小的错误,各种调QAQ,最后总之是调出来了. 其实就是一个双旋操作,然后其他就是左儿子<当前节点<右儿子,剩下就是细节了. 题干: 题目描述 您需 ...
- STM32:TIMER输出比较模式-PWM
在自己小板子上移植PWM时候又重新学习了一下,加入两点:1,对各种输出比较模式的学习:2,输出模式时加入中断 先写出函数: //TIM4 PWM部分初始化 //PWM输出初始化 //period:输出 ...
- linux_bash_shell_cheat_sheet(自译)
[说明] 发现错误或不足请务必联系我!!! linux_bash_shell_cheat_sheet.pdf (英文原本以及译本下载,链接失效请私信或邮箱联系)
- java将JSON字符串转换为实体类对象,基于net.sf.json实现
@SuppressWarnings("unchecked") public static <T> T jsonToObject(String jsonString, C ...
- P2420 让我们异或吧(倍增)
题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能 ...
- C/C++常用头文件 以及简单应用介绍
C/C++头文件一览 C #include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> ...