回 帖 发 新 帖 刷新版面

主题:编程题

1、数学黑洞6174
    已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。即:7641-1467=6174。将永远出不来。
    求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。

 

2、输入10个学生的姓名,编一程序将它们按字母的顺序排列。

 

3、输入一个十进制数,将其转换成二进制数。

 

4、将字符串中的大写字母转换成小写字母,并反相输出。

     如输入'abcABC234!$',输出为'$!432cbacba'

 

5、从屏幕上输入一个多位自然数,然后将各位重新排列成一个仍由原来的那些数字组成的位数不变的最大数和最小数。

 

回复列表 (共35个回复)

31 楼

你暴露了姜老师的性别

32 楼

不小心挖坟了

33 楼

第一题,既然是求证,就必须计算所有的可能,而不是随机算一个了事。

34 楼

原题意思是输入一个数,然后通过计算得到6174
CLS
GOTO 2
1 PRINT "Data error!"
2 DO
  INPUT n
LOOP UNTIL n > 999 AND n < 10000
n$ = LTRIM$(STR$(n))
FOR i = 1 TO 4
  a$(i) = MID$(n$, i, 1)
NEXT i
k = 0
FOR i = 1 TO 3
  FOR j = i + 1 TO 4
    IF a$(i) <> a$(j) THEN k = 1
NEXT j, i
IF k = 0 THEN 1
DO
  p = p + 1
  FOR i = 1 TO 3
    FOR j = i + 1 TO 4
      IF a$(i) < a$(j) THEN SWAP a$(i), a$(j)
  NEXT j, i
  max = VAL(a$(1) + a$(2) + a$(3) + a$(4))
  e = 4
  DO UNTIL a$(e) <> "0"
    e = e - 1
  LOOP
  SWAP a$(4), a$(e)
  min = VAL(a$(4) + a$(3) + a$(2) + a$(1))
  c = max - min
  PRINT p; max; "-"; min; "="; c
  n$ = LTRIM$(STR$(c))
  FOR i = 1 TO 4
    a$(i) = MID$(n$, i, 1)
  NEXT i
LOOP UNTIL c = 6174
PRINT p
END

35 楼


第一题全验证

[font=宋体]
[code]
DECLARE FUNCTION Ck& (i&)

DEFLNG A-Z
   N = 0
   FOR i = 1 TO 9999
      IF (i \ 1111) * 1111 <> i THEN
         P = Ck(Ck(Ck(Ck(Ck(Ck(Ck(i)))))))
         IF P <> 6174 THEN
            PRINT i; " does't conform to the rules!"
            N = N + 1
         END IF
      END IF
   NEXT i
   IF N = 0 THEN
      PRINT "Everything is OK!"
   END IF
End

FUNCTION Ck (i)
   DIM D(9)
   i1 = i
   Ck = 0
   FOR j = 1 TO 4
      i2 = i1 MOD 10
      D(i2) = D(i2) + 1
      IF D(i2) = 4 THEN EXIT FUNCTION
      i1 = i1 \ 10
   NEXT j
   Pi = 0: Pm = 0
   C = 1
   FOR j = 0 TO 9
      WHILE D(j) > 0
         Pi = Pi * 10 + j
         Pm = Pm + j * C: C = C * 10
         D(j) = D(j) - 1
      WEND
   NEXT j
   Ck = Pm - Pi
END FUNCTION


[/code]
[/font]

我来回复

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