[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

n的阶乘计算 ---本页最终完成√k的编程

  1. echo 阶乘计算
  2. set /p n=输入n值---
  3. set r=1
  4. for /l %%i in (1 1 !n!) do (
  5.         set /a "r=!r!*%%i"
  6. )
  7. echo !n!的阶乘=!r!
  8. pause>nul
复制代码
sin(x)=1-(1/3!)x^3+(1/5!)x^5-......
编出sinx的计算程序要分离1/3!的整数部分和小数部分。有意思那天试试看能不能成功。
我猜应要用到bat的 运算---“/和%%”

求平方根的递推公式
  1. f(n)={f(n-1)+k/f(n-1)}/2  ,其中n=1 ,2 ,3.。。
  2. 这是k的平方根公式
复制代码
  1. @echo off &setlocal enabledelayedexpansion &cls &color 1a
  2. echo -----判断小数位数----
  3. :00
  4. set /p x=输入数字--
  5. set x1=a%x%
  6. :01
  7. set /a bit+=1
  8. set num=!x1:~-1!
  9. set x1=!x1:~,-1!
  10. if !num! equ a (set bit=1 &goto end)
  11. if !num! neq . goto 01
  12. :end
  13. call set v=%%x:~-!bit!%%
  14. call set u=%%x:~0,-!bit!%%
  15. if %bit%==1 (set "v=0" &set "u=%x%")
  16. set /a bit=%bit%-1
  17. echo ┌─────────────┐
  18. echo     小数位数=%bit% 整数部分=%u% 小数部分=%v%
  19. echo └─────────────┘
  20. set /p choice=输入r--从新开始,输入其它字符--结束--?
  21. set bit=0
  22. if %choice%==r goto 00
  23. pause
复制代码
分数化小数方法
http://bbs.bathome.net/thread-3832-1-1.html



两个正小数相加
  1. @echo off &setlocal enabledelayedexpansion &cls &color 1a
  2. echo  ~~~~~~~~~~~~~小数加法~~~~~~~~~~~~~~~~~by myzwd 2009 3 23
  3. echo  ──────────────────────────────────
  4. :main
  5. set /p a=输入第一个小数---
  6. set /p b=输入第二个小数---
  7. rem 可以使用参数%1 %2 调用
  8. call:sub %a%
  9. set "a.bit=%bit%" &set "a.x=%v%" &set "a.z=%u%"
  10. call:sub %b%
  11. set "b.bit=%bit%" &set "b.x=%v%" &set "b.z=%u%"  
  12. set /a "t=%a.bit%-%b.bit%"
  13. if %t% geq 0 ( for /l %%i in (1 1 %t%) do (set b.x=!b.x!0)
  14. ) else (set /a t=-%t%
  15.           for /l %%i in (1,1,!t!) do (set a.x=!a.x!0)
  16.           set "a.x=!a.x: =!"
  17.        )
  18. :end
  19. set /a "sumazbz=%a.z%+%b.z%"
  20. set a.x=%a.x:.=1% &set b.x=%b.x:.=1%
  21. set /a "sum=%a.x%+%b.x%"
  22. set /a "sum.z=%sum:~0,1%-2" &set "sum.x=%sum:~1%"
  23. set /a "sum.z=%sumazbz%+%sum.z%"
  24. set sum=%sum.z%.%sum.x%
  25. echo 结果是----%a%+%b%=%sum%
  26. set /p choice=输入r重新开始,输入其它字符结束--?
  27. if %choice%==r goto main
  28. exit /b
  29. --------- 程序结束-----------------
  30. ------z符号代表整数部分,x符号代码小数部分
  31. :sub
  32. :00
  33. set x=%1
  34. set x1=a%x%
  35. set bit=0
  36. :01
  37. set /a bit+=1
  38. set num=!x1:~-1!
  39. set x1=!x1:~,-1!
  40. if !num! equ a (set bit=1 &goto end)
  41. if !num! neq . goto 01
  42. :end
  43. call set v=%%x:~-!bit!%%
  44. call set u=%%x:~0,-!bit!%%
  45. if %bit%==1 (set "v=0" &set "u=%x%")
  46. set /a bit=%bit%-1
  47. echo ┌─────────────────────┐
  48. echo     小数位数=%bit% 整数部分=%u% 小数部分=%v%
  49. echo └─────────────────────┘
  50. goto:eof
复制代码
利用递推数列开方,本来收敛速度是最快的了,一般迭代4,5次就有很高的精度了。但是关键的一点是要解决两个有理数的除法运算如2.5/1.23 ,这最终又归结到小数点的移动上去。看来得多弄几个子程序。工作量有点大。有时间再说吧。我真不明白微软的bat在设计上为什么不直接设计来可以进行小数运算呢?

[ 本帖最后由 myzwd 于 2009-3-23 20:58 编辑 ]

TOP

利用注册表修改cmd的属性

cmd的属性可以利用注册表修改
hkcu\console -----cmd的属性都记录在这个键下
添加值名windowposition 再添加 d_word值可以改变cmd在屏幕中的位置。如(十进制)10551000,10551048  .把值设置为0就是恢复默认。

[ 本帖最后由 myzwd 于 2009-3-22 13:09 编辑 ]

TOP

vbscript脚本实例

  1. msgbox("Hello from VBScript!")
  2. msgbox "123456789"
复制代码
  1. dim name
  2. name="Jan Egil"
  3. msgbox(name)
复制代码
  1. dim name
  2. name="Jan Egil"
  3. msgbox("My name is: " & name)
复制代码
  1. dim fname(5)
  2. fname(0) = "George"
  3. fname(1) = "John"
  4. fname(2) = "Thomas"
  5. fname(3) = "James"
  6. fname(4) = "Adrew"
  7. fname(5) = "Martin"
  8. for i=0 to 5
  9.   msgbox(fname(i) & " 123")
  10. next
复制代码
  1. sub mySub()
  2.   msgbox("This is a sub procedure")
  3. end sub
  4. call mySub()
复制代码
  1. function myFunction()
  2. myFunction = "BLUE"
  3. end function
  4. msgbox("My favorite color is " & myFunction())
复制代码
  1. function greeting()
  2. i=hour(time)
  3. if i < 10 then
  4. msgbox("Good morning!")
  5. else
  6. msgbox("Have a nice day!")
  7. end if
  8. end function
  9. call greeting()
复制代码
  1. function greeting()
  2. i=hour(time)
  3. If i = 10 then
  4.         msgbox("Just started...!")
  5. elseif i = 11 then
  6.         msgbox("Hungry!")
  7. elseif i = 12 then
  8.         msgbox("Ah, lunch-time!")
  9. elseif i = 16 then
  10.         msgbox("Time to go home!")
  11. else
  12.         msgbox("Unknown")
  13. end if
  14. end function
  15. greeting()
  16. rem elseif 不是else if
  17. '注释
复制代码
  1. d=weekday(date)
  2. select case d
  3.   case 1
  4.     msgbox("Sleepy Sunday")
  5.   case 2
  6.      msgbox("Monday again!")
  7.   case 3
  8.      msgbox("Just Tuesday!")
  9.   case 4
  10.      msgbox("Wednesday!")
  11.   case 5
  12.      msgbox("Thursday...")
  13.   case 6
  14.      msgbox("Finally Friday!")
  15.   case else
  16.      msgbox("Super Saturday!!!!")
  17. end select
  18. rem 这是select 语句
复制代码
  1. for i = 0 to 5
  2. msgbox("The number is " & i & "
  3. ")
  4. next
复制代码
  1. dim names(2)
  2. names(0) = "George"
  3. names(1) = "John"
  4. names(2) = "Thomas"
  5. for each x in names
  6.   msgbox(x & "这句相当于bat的for in语句")
  7. next
复制代码
  1. i=0
  2. do while i < 10
  3.   msgbox(i & "     ")
  4.   i=i+1
  5. loop
复制代码
  1. i=0
  2. do
  3.   msgbox(i & "     ")
  4.   i=i+1
  5. loop  while i < 10
复制代码
  1. do
  2.   msgbox("123456")
  3.   i=i+1
  4. loop until i > 5
复制代码
  1. msgbox("Today's date is " & date())
  2. msgbox("The time is " & time())
  3. rem  也可以这样,这是调用函数的一种方法
  4. msgbox "今天的时间是" & time()
  5. '日期和时间
复制代码
  1. msgbox(WeekDayName(1))
  2. msgbox(WeekDayName(2))
  3. msgbox("Get the abbreviated name of a weekday:")
  4. msgbox(WeekDayName(1,true))
  5. msgbox(WeekDayName(2,true))
  6. msgbox("Get the current weekday:")
  7. msgbox(WeekdayName(weekday(date)))
  8. msgbox(WeekdayName(weekday(date), true))
复制代码
出于易读和一致性的目的,请在 VBScript 代码中使用以下变量命名约定:
子类型 前缀 示例
Boolean bln blnFound
Byte byt bytRasterData
Date (Time) dtm dtmStart
Double dbl dblTolerance
Error err errOrderNum
Integer int intQuantity
Long lng lngDistance
Object obj objCurrent
Single sng sngAverage
String str strFirstName

变量应定义在尽量小的作用域中。VBScript 变量的作用域如下所示:
作用域 声明变量处 可见性
过程级 事件、函数或子过程 在声明变量的过程中可见
Script 级 HTML 页面的 HEAD 部分,任何过程之外 在 Script 的所有过程中可见


变量作用域前缀
随着 Script 代码长度的增加,有必要快速区分变量的作用域。在类型前缀前面添加一个单字符前缀可以实现这一点,而不致使变量名过长。
作用域 前缀 示例
过程级 无 dblVelocity
Script 级 s sblnCalcInProgress

对象命名约定
下表列出了 VBScript 中可能用到的对象命名约定(推荐):
对象类型 前缀 示例
3D 面板 pnl pnlGroup
动画按钮 ani aniMailBox
复选框 chk chkReadOnly
组合框、下拉列表框 cbo cboEnglish
命令按钮 cmd cmdExit
公共对话框 dlg dlgFileOpen
框架 fra fraLanguage
水平滚动条 hsb hsbVolume
图像 img imgIcon
标签 lbl lblHelpMessage
直线 lin linVertical
列表框 lst lstPolicyCodes
旋钮 spn spnPages
文本框 txt txtLastName
垂直滚动条 vsb vsbRate
滑块 sld sldScale

[ 本帖最后由 myzwd 于 2009-3-24 20:59 编辑 ]

TOP

start 的2个例子

  1. rem 这是用windows图片查看器打开图片
  2. start  e:\test\a.jpg
复制代码
  1. rem 这是在网页中打开图片,vb中就常用这句话
  2. start explorer e:\test\a.jpg
复制代码
系统在默认状态下打开文件是按上述方法打开。请看31楼batcher的说明。

如在vb中(不是vbs),要打开网页就可以用下面的代码:
shell "explorer http:\\www.hao123.com"
vbs是vb的简化版(轻量级别)的vb
在dos中插上两句vbs效果挺不错的。
vbs中常用的两句话是
msgbox 和inputbox
  1. x=msgbox ("提示信息",48,"窗口标题")
复制代码
x是运行函数msgbo的返回值,为1-7的值。这个返回值可以用于编程时的条件判断语句。
48是提示框样式(style)数字,可以查表查找比如说可以输入0,1,2,4,32,等等
如果只需要提示信息,代码可以按如下的方法写
  1. msgbox “提示"&"自己想添加的字符串"
复制代码
inputbox函数就的用法是
  1. y=inputbox ("提示信息","","默认值")
复制代码
同常了解这两句就够了。

[ 本帖最后由 myzwd 于 2009-4-13 20:36 编辑 ]

TOP

回复 32楼 的帖子

是这样的?我从没试过。谢谢。我有长进了。呵呵。

[ 本帖最后由 myzwd 于 2009-4-13 20:18 编辑 ]

TOP

返回列表