主题:打逗号
007bond
[专家分:540] 发布于 2007-04-08 16:36:00
编写一个程序,接受任意五个实数,按下列格式输出。
例如:输入 2754.4365,983.4,15000,0.145,6.003
输出:
2,754.44
983.40
15,000.00
0.15
6.00
回复列表 (共13个回复)
沙发
GGbond [专家分:60] 发布于 2007-04-08 16:39:00
CLS
DIM n AS DOUBLE
FOR i = 1 TO 5
INPUT n
n = INT(n * 100 + .5) / 100: a(i) = n - INT(n)
b$ = LTRIM$(STR$(INT(n)))
FOR j = 1 TO LEN(b$)
c$(i) = c$(i) + MID$(b$, j, 1): w = LEN(b$) - j
IF w MOD 3 = 0 AND w > 2 THEN c$(i) = c$(i) + ","
NEXT j
IF LEN(c$(i)) > x THEN x = LEN(c$(i))
NEXT i
FOR i = 1 TO 5
PRINT TAB(x + 1 - LEN(c$(i))); c$(i); USING ".##"; a(i)
NEXT i
板凳
hhhchy [专家分:300] 发布于 2007-04-10 16:45:00
CLS
DIM n AS DOUBLE
FOR i = 1 TO 5
INPUT n
n = INT(n * 100 + .5) / 100: a(i) = n - INT(n)
b$ = LTRIM$(STR$(INT(n)))
FOR j = 1 TO LEN(b$)
c$(i) = c$(i) + MID$(b$, j, 1): w = LEN(b$) - j
IF w MOD 3 = 0 AND w > 2 THEN c$(i) = c$(i) + ","
NEXT j
IF LEN(c$(i)) > x THEN x = LEN(c$(i))
NEXT i
FOR i = 1 TO 5
PRINT TAB(x + 1 - LEN(c$(i))); c$(i); USING ".##"; a(i)
NEXT i
end
[em2][em1][em11][em10][em13][em14][em15][em16][em1]
3 楼
Matodied [专家分:7560] 发布于 2007-04-20 18:15:00
这个题目别人也出过的。
CLS
DIM a1 AS DOUBLE
DIM a$(5)
FOR i = 1 TO 5
INPUT a1
b = a1 - FIX(a1): b$ = LTRIM$(STR$(b))
dw = LEN(b$) - 1
IF dw < 2 THEN
b$ = LTRIM$(STR$(a1))
IF dw = 0 THEN b$ = b$ + ".00" ELSE b$ = b$ + "0"
ELSEIF dw > 2 THEN
a1 = INT(a1 * 100 + .51) / 100: b$ = LTRIM$(STR$(a1))
ELSE
b$ = LTRIM$(STR$(a1))
END IF
a$(i) = b$
NEXT i
CLS
FOR i = 1 TO 5
p = INSTR(a$(i), "."): k = 0: m$ = ""
IF p = 1 THEN a$(i) = "0" + a$(i)
IF p = 0 OR LEN(a$(i)) - p < 2 THEN
IF p = 0 OR LEN(a$(i)) - p = 0 THEN
a$(i) = a$(i) + ".00"
ELSE
a$(i) = a$(i) + "0"
END IF
END IF
n$ = "": FOR j = p + 1 TO LEN(a$(i)): n$ = n$ + MID$(a$(i), j, 1): NEXT j
FOR j = p - 1 TO 1 STEP -1
k = k + 1
IF k >= 4 AND k MOD 3 = 1 THEN m$ = "," + m$
m$ = MID$(a$(i), j, 1) + m$
NEXT j
IF m$ <> "" THEN a$(i) = m$
IF n$ <> "" AND INSTR(a$(i), ".") = 0 THEN a$(i) = a$(i) + "." + n$
NEXT i
t = INSTR(a$(1), ".") - 1
FOR i = 1 TO 5
IF MID$(a$(i), 2, 1) = "," AND LEFT$(a$(i), 1) = "-" THEN
a$(i) = "-" + MID$(a$(i), 3)
END IF
IF (INSTR(a$(i), ".") - 1) > t THEN t = INSTR(a$(i), ".") - 1
NEXT i
FOR i = 1 TO 5
s = INSTR(a$(i), ".") - 1
PRINT TAB(t - s + 1); a$(i)
NEXT i
END
我的程序是可以,但太长了,GGbond的程序最好。
4 楼
moz [专家分:37620] 发布于 2007-04-23 01:27:00
建议多参考 HELP 内容
print using "########[color=FF00FF],.[/color]##";123455.33
5 楼
007bond [专家分:540] 发布于 2007-05-07 16:31:00
moz 你丢不丢脸呀,还版副呢
就想得经验值吧
编的乱七八遭的,趁早回家卖菜!!!!
6 楼
moz [专家分:37620] 发布于 2007-05-07 19:17:00
哦,不好意思,我去卖菜的时候总是给老婆骂我样子吓人,菜都卖不出去.实在是丢脸.
除了卖菜丢脸外,在这里我倒是没明白哪丢脸了,还请楼主多多指点.
7 楼
老大徒伤悲 [专家分:29120] 发布于 2007-05-07 19:47:00
[quote]建议多参考 HELP 内容
print using "########[color=FF00FF],.[/color]##";123455.33[/quote]
这里使用的using确实可以简化编程阿
楼主是不是说应该
print using "##,##.##";数据
?
8 楼
moz [专家分:37620] 发布于 2007-05-07 21:41:00
我们小学老师的一句口头禅是:
“难道要我画公仔画出肠吗?”
(广东方言,不能理解我也没办法)
9 楼
007bond [专家分:540] 发布于 2007-05-08 15:10:00
老大徒伤悲的讲法不是不可以,但是,我输一个12345678979779879797979.1234787978你怎么办?还有,moz你看没看题目啊!根本不对,趁早回家卖茶!!!!
10 楼
小精灵LS [专家分:580] 发布于 2007-05-08 15:14:00
CLS
DIM n AS DOUBLE
FOR i = 1 TO 5
INPUT n
n = INT(n * 100 + .5) / 100: a(i) = n - INT(n)
b$ = LTRIM$(STR$(INT(n)))
FOR j = 1 TO LEN(b$)
c$(i) = c$(i) + MID$(b$, j, 1): w = LEN(b$) - j
IF w MOD 3 = 0 AND w > 2 THEN c$(i) = c$(i) + ","
NEXT j
IF LEN(c$(i)) > x THEN x = LEN(c$(i))
NEXT i
FOR i = 1 TO 5
PRINT TAB(x + 1 - LEN(c$(i))); c$(i); USING ".##"; a(i)
NEXT i
END
我来回复