Lua程序设计第4版第3章课后答案

3.1
0x12 = 18,0xA = 10,0xFFFFFFFF = 4294967295,0x1P10 = 1024,0x0.1p1 = 0.125
0xABFG中不能有G,剩下的都是错误的

3.2 设maxinteger=max,mininteger = min

  • max+max-1 = -1-1 = -2
  • min-1+1+min = -1+1 = 0
  • maxmax = (min-1)(min-1) = 0-2*min+1 = 1
  • min*min = 偶数个min相加= 0

3.3
在这里插入图片描述
负数求余和正数求余

3.4
指数从右往左运算
2^指数3指数4 =2指数81
下一个一样

3.5
12.7可以表示成以10为底的幂作为分母的分数,你能把12.7表示为以2为底的幂作为分母的分数吗?再试试5.5?
只需找到一个 2^n * 12.7 结果是一个整数

function exercise3_5(num)
  local base,sp,cnt=1,num,0
  while math.tointeger(sp)==nil do   --sp%1~=0 也可以
    base=base*2
    cnt=cnt+1
    if cnt==63 then
      io.write("Huge Number,Can Not Solve!\n")
      return
    end
    sp=num*base
  end
  sp=math.tointeger(sp)
  io.write("Got It , 2^",cnt,"\n");
  io.write(sp,"/",base,"=",sp/base);
  return
end

5.5同样用这个求

3.6

function exercise3_6(h,p)
  return 1.0/3.0*((math.tan(math.rad(p))*h)^2.0*math.pi)*h
end

3.7
在这里插入图片描述

function exercise3_7()
  local rand1,rand2=math.random(),math.random()
  rand1=rand1==0 and (1) or (rand1)
  rand2=(rand2==0) and (1) or (rand2)
  return math.sqrt(-2.0*(math.log(rand1)))*math.sin(2*math.pi*rand2);	
end
发布了77 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Icecoldless/article/details/104073779
今日推荐