回 帖 发 新 帖 刷新版面

主题:又一个题目请教

顺序文件CODE.DAT中有20个由不同数字组成的4位数.编程实现对这些数据作如下处理,并将处理后的新的20个5位数保存到顺序文件RES.DAT中.
(1)若数据的奇数位上的数字为奇数则减1,并在次数据前添加变化标志9;
(2)对不满足(1)的数据,求出其最大数字在该数据中的位置,并将该位置值添加到此数据.            
            
                
            
        
            

回复列表 (共1个回复)

沙发

****下面代码未经测试,请自行测试改正

顺序文件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

我来回复

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