主题:新手,请问这俩题怎么写?
machel
[专家分:0] 发布于 2005-03-24 08:14:00
1.输入一正整数,求出它的各因子.并按这种格式打印:如20=2*2*5
36=2*2*3*3
2.输入M个整数,逐个插入到数组中(数组中数据个数最初为0).使M个数插入完成后,数组中的数已经从小大到排好序.
回复列表 (共5个回复)
沙发
qbqb [专家分:400] 发布于 2005-03-24 20:36:00
第一题是分解质因数问题。http://www.programfan.com/club/showbbs.asp?id=45600
第2题
INPUT "M=";M
DIM A(1 TO M)
DO
INPUT X
I=I+1
A(I)=X
REDIM B(1 TO I)
FOR J=1 TO I
B(J)=A(J)
NEXT J
IF I>1 THEN
FOR J=1 TO I-1
FOR K=J+1 TO I
IF B(K)<B(J) THEN SWAP B(K),B(J)
NEXT K,J
END IF
LOOP UNTIL I=M
FOR J=1 TO I
PRINT B(J)
NEXT
板凳
staa [专家分:3690] 发布于 2005-03-27 00:24:00
下面的程序有三个前提:一、m个数都不为0;二、m个数中没有重数,如果允许重数,那这个程序还要经过一些修改;三、m个数的最大跨度不宜太大。
DEFINT A-Z
m = 20
maxd = -32768
mind = 32767
DIM a(m), b(m)
OPEN "datas.txt" FOR INPUT AS #1
FOR i = 1 TO m
INPUT #1, b(i)
IF b(i) > maxd THEN maxd = b(i)
IF b(i) < mind THEN mind = b(i)
NEXT
CLOSE #1
md = maxd - mind + 1
DIM c(md)
FOR i = 1 TO m
c(b(i) - mind + 1) = b(i)
NEXT
k = 1
FOR i = 1 TO md
IF c(i) <> 0 THEN
a(k) = c(i)
k = k + 1
END IF
NEXT
FOR i = 1 TO m
PRINT i, a(i)
NEXT
END
3 楼
staa [专家分:3690] 发布于 2005-03-27 00:44:00
对上面的程序的说明:
这是我称之为“分发式排序”的基本型,它的原理是将每个数分发到一个充分大的数组中,在数组中的位置跟它的值是对应的,这样,分发完成时,也就排好了序。
它的高效性是显而易见的:仅一次循环完成排序,再一次循环完成输出。
有重数时,这个程序需要修改,现在的想法是将C(MD)设成二维数组C(MD,2),可以保存重数的数量。当然了,这会增大程序的复杂程度。
4 楼
88324837 [专家分:490] 发布于 2005-03-27 15:26:00
我也是新手不过你的第二题也太简单了把,楼上的你的程序也太长了把,不适合初学者哦
input m
dim a(m)
for b=1 to m
input x
a(b)=x
for c=1 to b-1
for d=1 to b-c
if a(d)>a(d+1) then swap a(d),a(d+1)
next d,c,b
for b=1 to m
print a(b);
next b
end
5 楼
staa [专家分:3690] 发布于 2005-03-28 17:05:00
你的程序用了双重循环,还说不复杂,呵呵,我的只用了单层循环。
我来回复