lua 函数练习

  1 --逻辑表达式
  2
  3 --1+2+3+...+n
  4 function fun1(n)
  5     local sum = 0
  6     for i=1,n do
  7         sum = sum + i
  8     end
  9     return sum
 10 end
 11
 12 -- 计算奇数和
 13 function fun2(n)
 14     local sum = 0
 15     for i=1,n,2 do
 16         sum = sum + i
 17     end
 18     return sum
 19 end
 20
 21 -- 计算偶数和
 22 function fun3(n)
 23     local sum = 0
 24     for i=2,n,2 do
 25         sum = sum + i
 26     end
 27     return sum
 28 end
 29
 30 -- 计算n!
 31 function fun4(n)
 32     local sum = 1
 33     for i=1,n do
 34         sum = sum * i
 35     end
 36     return sum
 37 end
 38
 39 -- 计算1+2!+3!+...+n!
 40 function fun5(n)
 41     local sum,t=0,1
 42     for i=1,n do
 43         t = 1
 44         for j=1,i do
 45             t = t * j
 46         end
 47         sum = sum + t
 48     end
 49     return sum
 50 end
 51
 52 -- 计算 1+ 1/1! +1/2! +1/3! + ...+1/n!
 53 function fun6(n)
 54     local sum=1
 55     for i=1,n do
 56         sum = sum + 1/fun4(i)
 57     end
 58     return sum
 59 end
 60
 61 -- 判断n是否为素数(质数)
 62 function fun7(n)
 63     io.write(n)
 64     local t = math.sqrt(n)
 65     for i=2,t do
 66         if n%i==0 then
 67             return false
 68         end
 69     end
 70     return true
 71 end
 72
 73 -- 1000以内的水仙花数 如 153 = 1^3 + 5^3 + 3^3
 74 function fun8()
 75     local sum = 0
 76     local i,j,k=0
 77     for num=101,999 do
 78         i = math.floor(num/100)
 79         j = math.floor(num%100/10)
 80         k = num%10
 81         if num == i^3 + j^3 + k^3  then
 82             print(num)
 83         end
 84     end
 85 end
 86
 87 table_str = ‘0123456789abcdefghijklmnopqrstuvwxyz‘
 88 -- 将10进制数转换为二进制数
 89 function fun9( n )
 90     local ys = n % 2
 91     n = math.floor(n/2)
 92     if n~=0 then
 93         fun9(n)
 94     end
 95     io.write(string.sub(table_str,ys+1,ys+1))
 96 end
 97 -- 将10进制数转换为八进制数
 98 function fun10( n )
 99     local ys = n % 8
100     n = math.floor(n/8)
101     if n~=0 then
102         fun10(n)
103     end
104     io.write(string.sub(table_str,ys+1,ys+1))
105 end
106
107 -- 将10进制数转换为十六进制数
108 function fun11( n )
109     local ys = n % 16
110     n = math.floor(n/16)
111     if n~=0 then
112         fun11(n)
113     end
114     io.write(string.sub(table_str,ys+1,ys+1))
115 end
116
117 -- 将10进制数转换为N进制数
118 function fun12( n ,N)
119     local ys = n % N
120     n = math.floor(n/N)
121     if n~=0 then
122         fun12(n,N)
123     end
124     io.write(string.sub(table_str,ys+1,ys+1))
125 end
126
127
128 function main( )
129     print(fun1(100))
130     print(fun2(10))
131     print(fun3(10))
132     print(fun4(10))
133     print(fun5(4))--1+2+6+24
134     print(fun6(20))
135     print(fun7(20) and ‘是素数!‘ or ‘不是素数‘)
136     print(fun7(13) and ‘是素数!‘ or ‘不是素数‘)
137     fun8() -- 水仙花
138     fun9(100);print(‘‘)--转换为二进制
139     fun10(100);print(‘‘)--转换为八进制
140     fun11(100);print(‘‘)--转换为十六进制
141     fun12(100,36);print(‘‘)--转换为36进制
142 end
143
144 main()

lua 函数练习

时间: 2024-12-05 12:04:39

lua 函数练习的相关文章

C语言调用Lua函数

记得上学时,初中英文课本中,上网叫做surfing the internet,中文叫网上冲浪.那个时期,人们经常称互联网为赛博空间.如今工作了,大量的零碎时间用于上微博,知乎,QQ,这些碎片化的阅读让人读起来轻松,也能获取些粗浅的信息.然而它们是消耗时间的黑洞,时间就这样一分一秒地飞逝,年末的时候,知乎会告诉你回答了多少问题,阅读了相当于一部<红楼梦>那么多的文字.只是当你静下来一想,这些浅阅读并没给你带来有深度,系统的知识.在你的时间线上,两条相邻信息往往是八竿子也打不着的.而且你还时不时去

lua函数精讲(一)

函数的用途: 1.完成指定的任务,这种情况下作为调用语句使用. 2.计算并返回值,这种情况下,函数作为赋值语句的表达式使用. 函数的参数为空,必须使用()表示函数调用.例外:当函数只有一个参数,并且这个参数是字符串或表构造时,()是可选的. lua提供了面向对象调用函数的语法 o:foo(x)与o.f(o,x)是等价的. lua函数的实参与形参的匹配与赋值语句类似,多余部分被忽略,缺少部分nil补足. lua函数可以返回多个值,return后列出要返回值的列表即可返回多值 s, e = stri

C中调用Lua函数

我们先来看一个简单的例子: lua_State* L = NULL; // 内部调用lua函数 double f(double x, double y) { double z; lua_getglobal(L, "f"); // 获取lua函数f lua_pushnumber(L, x); // 压入参数x和y lua_pushnumber(L, y); if(lua_pcall(L, 2, 1, 0) != 0) error(L, "error running functi

Lua函数执行流程及函数延续点问题的研究

第一:Lua函数调用的总体流程 在保护性调用的情况下,lua中函数调用的流程如下,非保护性调用的流程更加简单,请追踪lua_call函数 int docall (lua_State *L, int narg, int nres) | —— int lua_pcallk (lua_State *L, int nargs, int nresults, int errfunc ...) | —— luaD_pcall (lua_State *L, Pfunc func, void *u,ptrdiff

cocos2d-x 3.0 在C++中调用lua函数(2)

个人觉得3.0里面, 在C++下面调用lua函数很不方便, 所以就扩展了一个类, 继承自LuaStack, 代码和使用方式如下: #ifndef __CC_LUA_STACKEX_H_ #define __CC_LUA_STACKEX_H_ #include "CCLuaStack.h" NS_CC_BEGIN class LuaStackEx : public LuaStack { public: void call_script_fun(const char* fun) { exe

c++回调lua函数,实现事件

基于上一篇文章 cocos2dx 导出c++类供lua使用 上一篇主要是因为不能调用lua函数 才那样解决,但是本篇能调用lua函数,那么目的实现也就简单多了 归其原因还是tolua 工具生成的hpp cpp文件的函数不对 虽然在c++中函数参数声明为LUA_FUNCTION 但是还是被当做了int处理 所以我们要手动处理函数的调用 也就是修改生成的 函数 ... 生成的对应 代码 改为以下 if (NULL == tolua_S) return 0; int argc = 0; NetMgr*

lua函数随记

在大多数Lua语法分析中可以获得这些标准Lua函数. 无可争辩, 我们可以查阅Lua网站, 但是一些少了的函数被Blizzard进行了调整. 下面列出了所有Lua函数. WoW API中的Lua注意在WoWAPI没有提供所有标准的Lua函数, 很显然, 操作系统以及文件I/O库是不支持的 Lua函数这些函数都是Lua编程语言的一部分, 点击这里了解更多. ?assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 ?c

C++访问lua函数性能测试结果

 转载请注明,来自:http://blog.csdn.net/skyman_2001 lua版本是5.1 1. windows平台 CPU: Intel Core i5 3.20GHz 3.60GHz 内存: 8G 操作系统:win7 64位 测试数据:执行125次耗时0.067毫秒 2. ios平台 iPhone 4s 测试数据: (1). debug模式:执行125次耗时1.078毫秒 (2). release模式:执行125次耗时0.669毫秒 C++访问lua函数性能测试结果

cocos2d-x 3.0 在C++中调用lua函数

代码用的是<cocos2d-x 3.0 在lua中调用自定义类>中的代码. 在上篇的基础上进行扩充. 写lua函数 local function process_packet(user_data) if user_data then user_data = tolua.cast(user_data, "user_data"); print (user_data:uid()); print (user_data:uname()); end end local ghall =