ABAP算法题:海盗报数问题。

题目:有一艘海盗船上面有30个海盗,分别为海盗1-30号忽然海盗船撞上了冰山,船上只能留下一个人,船长命令大家循环数数,数到7和7的倍数的人,跳到海里去。

 

分析: 没什么好分析的。

输入海盗人数,输入死亡数字,输出海盗死亡顺序。

 SELECTION-SCREEN BEGIN OF BLOCK b0.
 PARAMETERS: p_number   TYPE i OBLIGATORY DEFAULT 30.
 PARAMETERS: p_keyval   TYPE n OBLIGATORY DEFAULT 7.
 SELECTION-SCREEN END OF BLOCK b0.
*
**
 TYPESBEGIN OF person,
          index(2TYPE n,
          numbr(2TYPE n,
        END OF person.
 DATA :t_person TYPE TABLE OF person.

 DATA last_number TYPE i.

 t_person VALUE #FOR 1 UNTIL i > p_number index ).

 DO.
   IF lines( t_person ) < 2.EXIT.ENDIF.

   LOOP AT t_person ASSIGNING FIELD-SYMBOL(<s_person>).
     <s_person>-numbr = last_number  + .
     last_number = <s_person>-numbr.
     IF <s_person>-numbr MOD p_keyval .
       WRITE: / 'index' ,<s_person>-index,'dead! Number is ', <s_person>-numbr .
       DELETE t_person.
       CONTINUE.
     ENDIF.

     SEARCH <s_person>-numbr FOR p_keyval.
     IF sy-subrc EQ 0.
       WRITE: / 'index' ,<s_person>-index,'dead! Number is ', <s_person>-numbr .
       DELETE t_person.
     ENDIF.

   ENDLOOP.
 ENDDO.

 READ TABLE t_person ASSIGNING <s_person> INDEX 1.
 WRITE :/ 'index', <s_person>-index,'alive '.

 

posted @ 2019-07-31 17:03  以秉  阅读(568)  评论(0编辑  收藏  举报