回 帖 发 新 帖 刷新版面

主题:[讨论]重排数

题四 重排数 
【问题描述】
读入二个数据文件,然后程序要完成如下的操作:
第一步  将2个文件的数合并在一起,
第二步  将合并好的数由大到小排序,
第三步  重新排列,从第一个数起开始编号,然后将奇数号上的数(样例中的13,9,5)从前向后排,偶数号上的数(样例中的12,7,4)从后往前排。
第四步  计算,将排好的数,第一个+第二个数的2倍+第三个数的3倍+…
第五步:输出计算的结果。
【输  入】:输入2个文件名(文件名后缀.IN),读入二个文本文件,文件的格式为:
  第一行是一个整数 n(1≤n≤10),
第二行有n个整数,整数范围在1~100之间,数与数之间有一个“,”号。
【输  出】:输出到屏幕 。一个整数(最后计算的结果)。
【样  例】:
  输入:w1,w2
文件读入:                         
4
12, 4, 5, 9
2
13, 7
输出:
169

                                  
  
                                         
 

                             
 

回复列表 (共5个回复)

沙发

INPUT "File1 Path = ", a$
OPEN a$ FOR INPUT AS #1
  INPUT #1, n
  DIM a(n)
  FOR i = 1 TO n
    INPUT #1, a(i)
  NEXT i
CLOSE
INPUT "File2 Path = ", b$
OPEN b$ FOR INPUT AS #1
  INPUT #1, m
  DIM b(m)
  FOR i = 1 TO m
    INPUT #1, b(i)
  NEXT i
CLOSE
zh = n + m
DIM s(zh)
FOR i = 1 TO zh
  IF i <= n THEN s(i) = a(i) ELSE s(i) = b(i - n)
  PRINT USING "######"; s(i);
NEXT i
FOR i = 1 TO zh - 1
  FOR j = i + 1 TO zh
    IF s(i) < s(j) THEN SWAP s(i), s(j)
NEXT j, i
FOR i = 1 TO zh - 1
  IF s(i) MOD 2 = 1 THEN
    os = s(i): s(i) = 0
    FOR j = i TO zh - 1
      s(j) = s(j + 1)
    NEXT j
    s(n + m) = os
  END IF
NEXT i: PRINT
FOR i = 1 TO zh
  ss = ss + s(i) * i
NEXT i
PRINT ss

板凳

注释:用空格分隔,不是用逗号

3 楼

楼上复杂了

4 楼

简化未必是好事

5 楼

哈哈,为何?

我来回复

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