level 7
JI疾风
楼主
求n的平方根:Sqr(n)
手动求平方根:穷举法
用两种方法(1.Slow是手动穷举,2.Quick是用函数)
没有在子程序前加End,也有三个子程序没有RETURN,不过程序能正常运行。
CLS
LOCATE 12
PRINT TAB(37); "1.Slow"
PRINT TAB(37); "2.Quick"
PRINT TAB(30); "Please Input 1 or 2:";
INPUT "", s
CLS
IF s = 2 THEN GOSUB Choose2
GOSUB Inputn1
GOSUB Sqrtn
GOSUB PrintSqrtn
Inputn1:
LOCATE 12
PRINT TAB(22); "Victor edition square root calculator"
PRINT "Note: If the input digital not completely square that counts time may be longer,"
PRINT TAB(31); "please be patient."
d$ = INPUT$(1)
Inputn2:
CLS
LOCATE 12, 34
INPUT "Input n:", n
CLS
a$ = "Sqrt(" + STRING$(ABS(n < 1), "0") + LTRIM$(STR$(n)) + ")="
LOCATE 12, 33: PRINT "Please wait..."
RETURN
Sqrtn: '此段为手动穷举阶段
x = 1: a = 1
DO
a = a - x * 10 '为了优化程序,使a不每次为0,从上次失败的部分更精确地查起
IF x = 1 THEN a = a + x * 9 '第一次只要减去x,而一开始减去了10*x,所以要补上9*x
DO
a = a + x
IF a * a >= n THEN EXIT DO
LOOP
f = a * a
IF f = n THEN a$ = a$ + STRING$(ABS(a < 1), "0") + LTRIM$(STR$(a)): RETURN
x = x * .1
LOOP
RETURN
PrintSqrtn:
CLS
LOCATE 12, 40 - LEN(a$) \ 2
PRINT a$
END
Choose2:
GOSUB Inputn2
x = SQR(n)
a$ = "Sqrt(" + STRING$(ABS(n < 1), "0") + LTRIM$(STR$(n)) + ")="
a$ = a$ + STRING$(ABS(x < 1), "0") + LTRIM$(STR$(x))
LOCATE 12, 40 - LEN(a$) \ 2
PRINT a$
END
因为在输入输出部分动了大工夫,所以程序显得很长很长,以下给出手动求平方根的不考虑输入输出格式的程序:
CLS
INPUT n
x = 1: a = 1
DO
a = a - x * 10
IF x = 1 THEN a = a + x * 9
DO
a = a + x
LOOP UNTIL a * a >= n
f = a * a
IF f = n THEN PRINT a: END
x = x / 10
LOOP
2010年12月29日 08点12分
1
手动求平方根:穷举法
用两种方法(1.Slow是手动穷举,2.Quick是用函数)
没有在子程序前加End,也有三个子程序没有RETURN,不过程序能正常运行。
CLS
LOCATE 12
PRINT TAB(37); "1.Slow"
PRINT TAB(37); "2.Quick"
PRINT TAB(30); "Please Input 1 or 2:";
INPUT "", s
CLS
IF s = 2 THEN GOSUB Choose2
GOSUB Inputn1
GOSUB Sqrtn
GOSUB PrintSqrtn
Inputn1:
LOCATE 12
PRINT TAB(22); "Victor edition square root calculator"
PRINT "Note: If the input digital not completely square that counts time may be longer,"
PRINT TAB(31); "please be patient."
d$ = INPUT$(1)
Inputn2:
CLS
LOCATE 12, 34
INPUT "Input n:", n
CLS
a$ = "Sqrt(" + STRING$(ABS(n < 1), "0") + LTRIM$(STR$(n)) + ")="
LOCATE 12, 33: PRINT "Please wait..."
RETURN
Sqrtn: '此段为手动穷举阶段
x = 1: a = 1
DO
a = a - x * 10 '为了优化程序,使a不每次为0,从上次失败的部分更精确地查起
IF x = 1 THEN a = a + x * 9 '第一次只要减去x,而一开始减去了10*x,所以要补上9*x
DO
a = a + x
IF a * a >= n THEN EXIT DO
LOOP
f = a * a
IF f = n THEN a$ = a$ + STRING$(ABS(a < 1), "0") + LTRIM$(STR$(a)): RETURN
x = x * .1
LOOP
RETURN
PrintSqrtn:
CLS
LOCATE 12, 40 - LEN(a$) \ 2
PRINT a$
END
Choose2:
GOSUB Inputn2
x = SQR(n)
a$ = "Sqrt(" + STRING$(ABS(n < 1), "0") + LTRIM$(STR$(n)) + ")="
a$ = a$ + STRING$(ABS(x < 1), "0") + LTRIM$(STR$(x))
LOCATE 12, 40 - LEN(a$) \ 2
PRINT a$
END
因为在输入输出部分动了大工夫,所以程序显得很长很长,以下给出手动求平方根的不考虑输入输出格式的程序:
CLS
INPUT n
x = 1: a = 1
DO
a = a - x * 10
IF x = 1 THEN a = a + x * 9
DO
a = a + x
LOOP UNTIL a * a >= n
f = a * a
IF f = n THEN PRINT a: END
x = x / 10
LOOP