题目:100元买100只鸡,公鸡一只5元,母鸡一只3元,小鸡1元3只,问各买了几只鸡?
结果截图:
代码如下:
*&---------------------------------------------------------------------*
*& 数据类型
*&---------------------------------------------------------------------*
TYPES: BEGIN OF s_data,
cock_num TYPE i, " 公鸡数量
hen_num TYPE i, " 母鸡数量
biddy_num TYPE i, " 小鸡数量
END OF s_data.
TYPES: t_data TYPE TABLE OF s_data.
*&---------------------------------------------------------------------*
*& 内表
*&---------------------------------------------------------------------*
DATA: gt_data TYPE t_data.
START-OF-SELECTION.
PERFORM program_main.
*&---------------------------------------------------------------------*
*& Form program_main
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM program_main .
DATA: ls_data TYPE s_data.
PERFORM count_chook_quantity CHANGING gt_data.
LOOP AT gt_data INTO ls_data.
WRITE:/ '公鸡数:', ls_data-cock_num,
'母鸡数:', ls_data-hen_num,
'小鸡数:', ls_data-biddy_num.
ENDLOOP.
ENDFORM. " PROGRAM_MAIN
*&---------------------------------------------------------------------*
*& Form COUNT_CHOOK_QUANTITY
*&---------------------------------------------------------------------*
* text 100元买100只鸡,问各买了几只
* 公鸡5元/只
* 母鸡3元/只
* 小鸡1元3只
*----------------------------------------------------------------------*
* <--ct_data text
*----------------------------------------------------------------------*
FORM count_chook_quantity CHANGING ct_data TYPE t_data.
DATA: ls_data TYPE s_data.
DATA: lv_cock TYPE i, " 公鸡数量
lv_hen TYPE i, " 母鸡数量
lv_biddy TYPE i. " 小鸡数量
DATA: lv_num TYPE i,
lv_cash TYPE i.
lv_cock = 0 - 1.
lv_hen = 0 - 1.
lv_biddy = 0 - 1.
DO.
lv_cock = lv_cock + 1.
lv_cash = lv_cock * 5.
IF lv_cash > 100.
EXIT.
ELSEIF lv_cash = 100.
lv_num = lv_cock.
IF lv_num = 100.
CLEAR ls_data.
ls_data-cock_num = lv_cock. " 公鸡数量
ls_data-hen_num = lv_hen. " 母鸡数量
ls_data-biddy_num = lv_biddy. " 小鸡数量
APPEND ls_data TO ct_data.
EXIT.
ENDIF.
EXIT.
ENDIF.
CLEAR lv_hen.
DO.
lv_hen = lv_hen + 1.
lv_cash = lv_cock * 5 + lv_hen * 3.
IF lv_cash > 100.
EXIT.
ELSEIF lv_cash = 100.
lv_num = lv_cock + lv_hen.
IF lv_num = 100.
CLEAR ls_data.
ls_data-cock_num = lv_cock. " 公鸡数量
ls_data-hen_num = lv_hen. " 母鸡数量
ls_data-biddy_num = lv_biddy. " 小鸡数量
APPEND ls_data TO ct_data.
EXIT.
ENDIF.
ENDIF.
CLEAR lv_biddy.
DO.
lv_biddy = lv_biddy + 3.
lv_cash = lv_cock * 5 + lv_hen * 3 + ( lv_biddy / 3 ) * 1.
IF lv_cash > 100.
EXIT.
ELSEIF lv_cash = 100.
lv_num = lv_cock + lv_hen + lv_biddy.
IF lv_num = 100.
CLEAR ls_data.
ls_data-cock_num = lv_cock. " 公鸡数量
ls_data-hen_num = lv_hen. " 母鸡数量
ls_data-biddy_num = lv_biddy. " 小鸡数量
APPEND ls_data TO ct_data.
EXIT.
ENDIF.
ENDIF.
ENDDO.
ENDDO.
ENDDO.
ENDFORM. "count_chook_quantity
注:如有疏漏之处,还请不吝赐教!