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包中,它提供了许多用来设计 ...
随机推荐
- 百度开放云java+tomcat部署web项目-小皇帝詹姆斯
加入部署 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...
- cocos2d-x之android编译环境搭建(第二篇)[版本号:cocos2d-x-3.1.1]
基于 Android NDK 的学习之旅-----环境搭建 工欲善其事 必先利其器 , 以下介绍下 Eclipse SDK NDK Cygwin CDT 集成开发环境的搭建. 1.Android 开发 ...
- Linux下的应用程序开机自启动
Linux下的应用程序开机自启动,目前我知道的有2种: 1.将启动语句写到/etc/rc.local 2.在init.d放置启动脚本 第一种,很简单,直接写进去就行,比如说: /db/mongodb/ ...
- Codeforces Round #325 (Div. 2) B. Laurenty and Shop 前缀+后缀
B. Laurenty and Shop ...
- UVA1601 The Morning afther Halloween
题目大意 w h (w, h <= 16)的网格有 n ( n <= 3) 个小写字母(代表鬼)其余的是‘#’(代表障碍格) 或 ‘ ’(代表空格. 要求把他们移动到对应的大写字母里.每步 ...
- visual studio推荐的插件
https://marketplace.visualstudio.com/items?itemName=EricLebetsamer.BootstrapSnippetPack https://mark ...
- 2017 nodeJS
一.版本迅速更新 Chrome浏览器已经蹦到57版本了,是名副其实的版本帝,作为兄弟的Node.js也一样,1.0之前等了6年,而从1.0到8.0,只用了2年时间,现在已到9以上了 我们就数一下 从v ...
- robotframework - 介绍&应用
一.参考简书链接 :https://www.jianshu.com/p/c3a9d20db4e5 二.介绍 Robot Framework是一个基于Python的,可扩展的关键字驱动的测试自动化框架, ...
- 《Akka应用模式:分布式应用程序设计实践指南》读书笔记9
性能 这也是一个比较大的问题,因为性能不一定是Akka本身的问题,还可能是你代码写的有问题. 优化的第一步就是找出性能的瓶颈,隔离出应用程序里面比较耗时的部分,然后尝试对其优化,减少需要耗费的时间成本 ...
- 不定长数组 Vector的 应用
#include<cstdio> #include<vector> using namespace std; vector<int>a; int main() { ...