主题:又一个题目请教
梧桐秋雨1229
[专家分:0] 发布于 2006-01-14 16:53:00
顺序文件CODE.DAT中有20个由不同数字组成的4位数.编程实现对这些数据作如下处理,并将处理后的新的20个5位数保存到顺序文件RES.DAT中.
(1)若数据的奇数位上的数字为奇数则减1,并在次数据前添加变化标志9;
(2)对不满足(1)的数据,求出其最大数字在该数据中的位置,并将该位置值添加到此数据.
回复列表 (共1个回复)
沙发
QB71 [专家分:1300] 发布于 2006-01-15 13:21:00
****下面代码未经测试,请自行测试改正
顺序文件CODE.DAT中有20个由不同数字组成的4位数.编程实现对这些数据作如下处理,并将处理后的新的20个5位数保存到顺序文件RES.DAT中.
--------------------------------------------------------------------------
open "code.dat"for input as #1 '假设20个数据在文件中是每行放一个数据
open "res.dat"for output as #1 '输出文件也按同样处理
dim Dig(20) as string '取数据暂存到此数组
for I%=0 to 19
line input #1,Dig(I%)
Dig(I%)=ltrim$(rtrim$(Dig(I%)))
next
close 1
--------------------------------------------------------------------------
(1)若数据的奇数位上的数字为奇数则减1,并在次数据前添加变化标志9;
(2)对不满足(1)的数据,求出其最大数字在该数据中的位置,并将该位置值添加到此数据.
****第二个条件不是很明白,我把它当做是将最大数插入到最大数的位置
--------------------------------------------------------------------------
for i%=0 to 19 '检查20个数据是否符合(1)条件,不符合则按(2)处理
Tmp$=""
for J%=1 to 4 '处理第一个条件
T$=mid$(Dig(I%),J%,1)
Bit%=val(T$)
if Bit% mod 2=1 then
T$=Ltrim$(str$(Bit%-1))
Tmp$=Tmp$+T$
endif
next
if Tmp$=Dig(I%) then '处理第二个条件
Max%=val(mid$(Dig(I%),1,1))
This%=0
for J%=2 to 4 '取最大者的位置
N%=val(mid$(Dig(I%),J%,1))
if Max%<N% then
Max%=N%
This%=J%
endif
next
if This%<>0 then '如果四个位不是全相同或全为0,则有最大者
Dig(I%)=left$(Dig(i%),This%)+Mid$(Dig(I%),This%,1)+right$(Dig(I%),4-This%)
endif
else
Dig(I%)="9"+Tmp$ '最后处理第一个条件
endif
print #2,Dig(I%)
next
close #2
我来回复