1.获得数组中最大值的例子
local arr = {1,2,3,4,5,5,5,5,8,9,1}
-- 定义数组
local max = math.max(unpack(arr))
-- math.max取得参数中最大值;
-- unpack接收一个数组(table)参数,默认从下标1开始返回数组所有元素
print(max)
2.一个简单的例子来实现数字n的几次方
function my(x,n)
local sum
if n == 1 then
sum = x
else
sum = my(x, n - 1) * x
end
return sum
end
print('请输入数字')
num = io.read()
print('请输入该数的次方')
n = io.read()
print(num.."的"..n.."次方是:"..my(num,n))
3.定义一个函数,传入两个参数并相加,相减,相乘,相除,取余,返回他们的运行结果
function my(x,y)
local xy1 = x + y
print(userNumberOne..'+'..userNumberTwo..'='..xy1)
local xy2 = x - y
print(userNumberOne..'-'..userNumberTwo..'='..xy2)
local xy3 = x * y
print(userNumberOne..'*'..userNumberTwo..'='..xy3)
local xy4 = x / y
print(userNumberOne..'/'..userNumberTwo..'='..xy4)
local xy5 = x % y
print(userNumberOne..'%'..userNumberTwo..'='..xy5)
end
print("请输入第一个数")
userNumberOne = io.read()
print("请输入第二个数")
userNumberTwo = io.read()
print(my(userNumberOne,userNumberTwo))
4.定义一个函数利用循环让这个函数能够计算n的阶乘
--~ function my(n)
--~ local i = 1
--~ if n < 1 then
--~ return 1
--~ end
--~ repeat i = n * i
--~ n = n - 1
--~ until n == 0
--~ print(i)
--~ end
--~ print(my(5))
5.斐波那契数列
function my(n)
if n == 0 or n == 1 then
return 0
elseif n == 2 then
return 1
elseif n == 3 then
return 2
else
return my(n - 1) + my(n - 2)
end
end
print(my(5))
6.输出三角形的形状
a = 10
for i = 1, a, 1 do
for j = 1, a - i, 1 do
io.write(' ')
end
for k = 1, 2 * i - 1, 1 do
io.write('*')
end
print()
end
7.9*9乘法表
for a = 1,9 do
local s = ""
for b=1,9 do
if b <= a then
s = s..a.."X"..b.."="..a*b
if a ~= b then
s = s.."\t"
end
end
end
print(s)
end
8.要求用户输入一个年份,判断并输出该年份是闰年还是平年。
--~ year = io.read()
--~ if(year%4==0 and year%100~=0) then
--~ print("闰年")
--~ else
--~ print("平年")
--~ end
9.要求用户输入两个整数,判断第一个整数是否是第二个整数的倍数。
--~ num1 = io.read()
--~ num2 = io.read()
--~ if(num2%num1 == 0) then
--~ print("Ok")
--~ else
--~ print("No")
--~ end
10.要求用户输入一个年份和一个月份,判断(要求使用嵌套的if…else和switch分别判断一次)该年该月有多少天。
print("请输入年份")
year = io.read();
print("请输入月份")
month = io.read();
if(year%4 == 0 and year%100 ~= 0) then
print(year.."是闰年:366天")
local month = tonumber(month)
if(month == 2) then
print(month.."月是28天")
end
else
print(year.."是平年:365天")
local month = tonumber(month)
if(month == 2) then
print(month.."月是29天")
end
end
monthMax = {1,3,5,7,8,10,12}
months = {4,6,9,11}
for i,m in ipairs(monthMax)do
local lable = tonumber(month)
if m == lable then
print(lable.."月是31天")
end
end
for i,m in ipairs(months)do
local lable = tonumber(month)
if m == lable then
print(lable.."月是30天")
end
end
11.要求用户输入一个学生的分数(1~100),使用switch结构判断该分数属于什么等级(A、B、C、D、F)。
userScore = io.read()
numberScore = tonumber(userScore)
if (numberScore <= 20 and numberScore > 0) then
print("A")
end
if (numberScore <= 40 and numberScore > 20) then
print("B")
end
if (numberScore <= 60 and numberScore > 40) then
print("C")
end
if (numberScore <= 80 and numberScore > 60) then
print("D")
end
if (numberScore <= 100 and numberScore > 80) then
print("F")
end
if (numberScore <= 0) then
print("会好好输吗?")
end
12.使用while循环求1~100以内所有奇数的和。
i = 1;
J = 1;
while(i < 99)
do
local num = i + 2
i = num
J = J + i
end
print(J)
--]]
13.使用while循环求式子2+22+222+2222+22222的和。p=p*10+2;
i = 0
j = 0
while(i < 22222)
do
i = i * 10 + 2
j = j + i
end
print(j)
14.请编程验证一下“角谷猜想”:对任意的自然数,若是奇数,就对它乘以3加1;若是偶数就对它除以2;这样得到一个新数,再按上述奇数、偶数的计算规则进行计算,一直进行下去,最终将得到1。
userScore = io.read()
numberScore = tonumber(userScore)
while(numberScore ~= 1) do
if(numberScore % 2 == 1) then
numberScore = numberScore * 3 + 1
else
numberScore = numberScore / 2
end
print(numberScore)
end