主题:编程题
幽灵密码
[专家分:3510] 发布于 2010-05-25 14:11:00
1、数学黑洞6174
已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。即:7641-1467=6174。将永远出不来。
求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。
2、输入10个学生的姓名,编一程序将它们按字母的顺序排列。
3、输入一个十进制数,将其转换成二进制数。
4、将字符串中的大写字母转换成小写字母,并反相输出。
如输入'abcABC234!$',输出为'$!432cbacba'
5、从屏幕上输入一个多位自然数,然后将各位重新排列成一个仍由原来的那些数字组成的位数不变的最大数和最小数。
回复列表 (共35个回复)
21 楼
独手编程 [专家分:360] 发布于 2010-11-08 19:57:00
2
cls
dim a$(10)
for i = 1 to 10
input a$(i)
next i
for i = 1 to 9
for j = i to 10
if a$(i)< a$(j) then swap a$(i),a$(j)
next j,i
for i = 1 to 20
print a$(i)
next i
22 楼
幽灵密码 [专家分:3510] 发布于 2010-11-20 12:27:00
正确答案公布:
1.
Cls
Randomize Timer
Do
1 n = Fix((Rnd * 8999) + 1000)
Gosub SZ
If a$ = b$ Or a$ = c$ Or a$ = d$ Then 1
Loop Until n > 999 And n < 10000
Gosub DX
Print n
Do
p = p + 1
n = max - min
Gosub SZ
Print max; "-"; min; "="; n
max = 0
Gosub DX
If n = 6174 Then Print p: End
Loop Until p = 99
Print "No!"
End
DX:
a$(1) = a$
a$(2) = b$
a$(3) = c$
a$(4) = d$
min = VAL(a$ + b$ + c$ + d$)
For i = 1 TO 4
For j = 1 TO 4
For k = 1 TO 4
For l = 1 TO 4
If i <> j And i <> k And i <> l And j <> k And j <> l And l <> k Then
If a$(i) = "0" Then 2
z = Val(a$(i) + a$(j) + a$(k) + a$(l))
If z > max Then max = z
If z < min Then min = z
End If
2 Next l
Next k
Next j
Next i
Return
SZ:
n$ = Ltrim$(Str$(n))
a$ = Mid$(n$, 1, 1): a = Val(a$)
b$ = Mid$(n$, 2, 1): b = Val(b$)
c$ = Mid$(n$, 3, 1): c = Val(c$)
d$ = Mid$(n$, 4, 1): d = Val(d$)
Return
23 楼
幽灵密码 [专家分:3510] 发布于 2010-11-20 12:30:00
2.
Cls
Dim a$(10)
For i = 1 To 10
Input a$(i)
Next i
For i = 1 To 9
For j = i + 1 To 10
If a$(i) > a$(j) Then Swap a$(i),a$(j)
Next j
Next i
For i = 1 To 10
Print a$(10);Spc(3);
Next i
End
24 楼
幽灵密码 [专家分:3510] 发布于 2010-11-20 12:35:00
3.
Cls
Input n
Dim a(10000)
Do
i = i + 1
a(i) = n Mod 2
n = n \ 2
Loop Until n = 0
For j = i To 1 Step -1
Print Ltrim$(Str$(a(j)));
Next j
End
25 楼
幽灵密码 [专家分:3510] 发布于 2010-11-20 12:37:00
4.
Cls
Input a$
a$ = Lcase$(a$)
For i = Len(a$) To 1 Step -1
Print Mid$(a$,i,1);
Next i
End
26 楼
幽灵密码 [专家分:3510] 发布于 2010-11-20 12:40:00
5.
Cls
Input n$
ln = Len(n$)
Dim a$(ln), b$(ln)
For i = 1 TO ln
a$(i) = Mid$(n$, i, 1)
b$(i) = Mid$(n$, ln + 1 - i, 1)
Next i
For i = 1 TO ln - 1
For j = i + 1 TO ln
If a$(i) < a$(j) Then Swap a$(i), a$(j)
If b$(i) > b$(j) Then Swap b$(i), b$(j)
Next j, i
For i = 1 TO ln
Print a$(i);
Next i
Print
For i = 1 TO ln
If b$(i) = "0" Then 1
p = i
Exit For
1 Next i
Print b$(p); String$(p - 1, "0");
For i = p + 1 TO ln
Print b$(i);
Next i
End
行了,反正都没人知道,我就把答案公布了
27 楼
幽灵密码 [专家分:3510] 发布于 2010-11-24 19:54:00
第五题要判断首位不能为0,所以加了很多语句!
28 楼
qb12345 [专家分:620] 发布于 2010-11-25 12:41:00
这是你老师出的题目吧!
29 楼
qb12345 [专家分:620] 发布于 2010-11-25 12:51:00
你的老师的blog上有
1、数学黑洞6174
已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。即:7641-1467=6174。将永远出不来。
求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。
2、输入10个学生的姓名,编一程序将它们按字母的顺序排列。
3、输入一个十进制数,将其转换成二进制数。
4、将字符串中的大写字母转换成小写字母,并反相输出。
如输入'abcABC234!$',输出为'$!432cbacba'
5、从屏幕上输入一个多位自然数,然后将各位重新排列成一个仍由原来的那些数字组成的位数不变的最大数和最小数。
30 楼
幽灵密码 [专家分:3510] 发布于 2010-11-25 16:05:00
是我老师出的,不过她没给正确答案
我来回复