回 帖 发 新 帖 刷新版面

主题:求助:  随机产生50个两位数存入一个数组中,现要求将此数组复制到另一个数组

求助:  随机产生50个两位数存入一个数组中,现要求将此数组复制到另一个数组 
   中,如果原数组中存在相同的数据,只复制一个数据,其他相同的数据被
   舍弃,显示新数组。

回复列表 (共3个回复)

沙发

我DOS里有内存虚拟的文件系统,所以速度比较快.

def seg=varseg(a(1))
    bsave "123.txt",varptr(a(1)),len(a(1))*ubound(a)
def seg=varseg(b(1))
    bload "123.txt",varptr(b(1))
def seg

板凳

随机产生50个两位数存入一个数组中
dim a(50)
randomize
for i = 1 to 50
a(i)=int(ran(0)*9)+10
next
如果原数组中存在相同的数据,只复制一个数据,其他相同的数据被舍弃,
for i = 1 to 50
for j = i to 50
if a(i)=a(j) then a(j)=100
next i,j

现要求将此数组复制到另一个数中
dim b(50)
k=1
for i = 1 to 50
if a(i)<>100 then 
b(k)=a(i):k=k+1
end if
next


这个是最直观最原始的用qbasic语言对题目的翻译

3 楼

应:先排序,再复制,刚好我最近有这个程序

sub qsort (c() as double, a, b)  '排序,注意更改数组类型
if a < b then
 if b - a = 1 then
    if c(a) > c(b) then swap c(a), c(b)
 else
  r = rnd * (b - a + 1) + a
  swap c(b), c(r)
  p = c(b)
  do
   i = a
   j = b
   do while (i < j) and c(i) <= p: i = i + 1: loop
   do while (j > i) and c(j) >= p: j = j - 1: loop
   if i < j then swap c(i), c(j)
  loop while i < j
  swap c(i), c(b)
  if (i - a) < (b - i) then
     qsort c(), a, i - 1
     qsort c(), i + 1, b
  else
     qsort c(), i + 1, b
     qsort c(), a, i - 1
  end if
 end if
end if
end sub

sub add4 (a() as double, c() as double) '自己修改一些细节,上下限之类的
c(1)=a(1)
for i = 2 to ubound(a)
    if a(i)>c(j) then
       j = j + 1
       c(j) = a(i)
    endif
next
end sub

我来回复

您尚未登录,请登录后再回复。点此登录或注册