ABAP循环结构练习题

    1. 求100以内的所有素数。
DATA: num type i VALUE 2,  "1既不是素数也不是合数
      cyc TYPE i.
WHILE num <= 100.
  cyc = 2.
 WHILE cyc < num.
   IF num mod cyc = 0.
     EXIT.              "跳出while循环,因为他不是素数
   ENDIF.
   cyc = cyc + 1.
 ENDWHILE.

 IF num = cyc.               
   WRITE:/ '100以内的素数有:',num.
 ENDIF.
num = num + 1.
ENDWHILE.
    1. 局部类型,只能本程序使用。
TYPES: BEGIN OF STUDENT,
            NO(14) TYPE N,
            NAME(20) TYPE C,
            BIRTH TYPE D,
       END OF STUDENT.
DATA: LI TYPE STUDENT,
      SI TYPE STUDENT.
LI-NO = '16610413151301'.
LI-NAME = '张三'.
LI-BIRTH = '20190327'.
SI-NO = '26610413151301'.
SI-NAME = '李四'.
SI-BIRTH = '10190327'.
WRITE:/ LI,/ LI-BIRTH,/ SI,/ SI-BIRTH.
    1. 计算自己的实际年龄
REPORT ZABAP1903_07BASIC02.

*parameters :实现用户自己输入
parameters y0 type i.
parameters m0 type i.
parameters d0 type i.
parameters y1 type i.
parameters m1 type i.
parameters d1 type i.
*start-of-selection和end-of-selection是标准的逻辑流,搜索开始和搜索结束
start-of-selection.
  data: day type i,
        month type i,
        year type i.
*日减日,月减月,年减年,日减日为负向月借1,月减月为负也向年借1
  day = d1 - d0.
  if day < 0.
    m1 = m1 - 1.
  endif.
  month = m1 - m0.
  if month < 0.
    y1 = y1 - 1.
  endif.
  year = y1 - y0.
end-of-selection.
  write:/ year.
    1. 输出每月的天数
*能被4整出且不能被400整出或能被400整出的是闰年。
PARAMETERS: year TYPE i,
            month TYPE i.
CASE month.
  WHEN 2.
    IF year mod 4 = 0 and year mod 100 <> 0 or year mod 400 = 0 .
      WRITE:/ '29'.
    ELSE.
        WRITE:/ '28'.
    ENDIF.
   WHEN 4 or 6 or 9 or 11.
      WRITE:/ '30'.
   WHEN 1 or 3 or 5 or 7 or 8 or 10 or 12.
      WRITE:/ '31'.
   WHEN OTHERS.
     WRITE:/ '月份输入误'.
ENDCASE.
    1. 计算最佳情侣身高
REPORT ZABAP1903_07YUJUC07.

PARAMETERS: sex type c,                  "当c类型长度为为1时,可以不用指定,默认值即可
            heigh  type p DECIMALS 2.    "p类型可以不用指定长度
DATA: result type p DECIMALS 2,
     info(30) type c value '请输入正确的身高和性别',
     around type c.
IF sex = 'F' and  1 <= heigh and heigh <= 3 .
  result = heigh * '1.09'.
  WRITE:/ result.
elseif sex = 'M' and 1 <= heigh and heigh <= 3.
  result = heigh / '1.09' .
  WRITE:/ result.
else.
  WRITE:/ info.
ENDIF.
    1. 字符串处理
REPORT ZABAP1903_07STRINGC05.
*大小写转换
PARAMETERS: letter(5) type c.
TRANSLATE letter TO UPPER CASE.
WRITE:/ letter.

* 输出字符串长度
* 当测试输入空格的时候,空格位于字符串后面时,忽略空格。
PARAMETERS: letter_a(10) type c.
DATA: stren type i.
stren = STRLEN( letter_a ).
WRITE:/ stren.

*合并必须是字符类型,例:c、n
PARAMETERS: sh(5) type c,
            ch(5) type c,
            ph(5) type c.
DATA: result(20) type c.
CONCATENATE sh ch ph into result SEPARATED BY '- '.
WRITE:/ result.

*分割字符串
PARAMETERS: ca(15) type c.
DATA: seg(1) type c VALUE '%',
      data1(5) type c,
      data2(5) type c.
SPLIT ca AT seg INTO data1 data2.
WRITE:/ data1, data2.


data: a type f value '2.3'.
WRITE:/ a.
    1. 求出[m,n]的和。
PARAMETERS: m TYPE i,
            n type i.
DATA: v TYPE i,
      sum TYPE i VALUE 0.
"定义变量的目的是为了不改变m的值,即不改变求和范围,防止后面要用到最初的m值。
v = m.
IF m <= n.
  WHILE v <= n.
  sum = sum + v.   "
  v = v + 1.
  ENDWHILE.
  WRITE:/ sum.
ELSE.
  WRITE:/ '输入有误!'.
ENDIF.
    1. 1~100的和
REPORT ZABAP1903_07WHILE.
DATA: num TYPE i VALUE 1,
      sum type i VALUE 0.
WHILE num <= 100.
  sum = sum + num.
  num = num + 1.
ENDWHILE.
WRITE:/ sum.
    1. 求出所有的水仙花数
* 水仙花数:是一个三位数其各位数字的立方和等于该数本身。例如:3^3 + 7^3+ 0^3 = 370
* 1000以内的水仙花数

DATA: num type i value 100,
      g_num type i,
      s_num type i,
      b_num type i.
WHILE num < 1000 and num >= 100.
  b_num = num div 100.
s_num = num mod 100 div 10.
g_num = num mod 100 mod 10.

  IF num = b_num ** 3 + s_num ** 3 + g_num ** 3.
  WRITE:/ num.
  ENDIF.
  num = num + 1.

ENDWHILE.
    1. 求使整数数列1,2,3,……,n的和不大于6000的最大正整数n
*求使整数数列1,2,3,……,n的和不大于6000的最大正整数n.  [1,n]  累加公式 n(n + 1) / 2
*DIV:整除忽略余数
*MOD:取模
*/: 除法

*第一种方法
DATA: n TYPE i VALUE 0,
      sum TYPE i VALUE 0.
WHILE sum <= 6000.
  n = n + 1.
  sum = sum + n.
ENDWHILE.
WRITE:/ n,sum.

*第二种方法
*DATA: n TYPE i VALUE 1,
*      sum TYPE i VALUE 0.
*WHILE n > 0.
*  sum = n * ( n + 1 ) / 2.
*  IF sum > 6000.
*    exit.
*  ENDIF.
*  n = n + 1.
*ENDWHILE.
*WRITE:/ 'n:',n,/ 'sum:', sum.
    1. 求(100,1000)之间所有的能被3整除的偶数的和
求(100,1000)之间所有的能被3整除的偶数的和。
DATA: num TYPE i VALUE 100,
      ou_num TYPE i VALUE 0,
      sum TYPE i VALUE 0.
WHILE: num >= 100 and num <= 1000.
  IF num mod 3 = 0 and num mod 2 = 0.
    WRITE:/ 'num:',num.
   sum = sum + num.
  ENDIF.
num = num + 1.
ENDWHILE.
WRITE:/ 'sum:',sum.
    1. 按照升序显示出小于输入值的所有正偶数
*5、按照升序显示出小于输入值的所有正偶数
PARAMETERS: num TYPE c LENGTH 4.
DATA: con TYPE i VALUE 0.
WHILE con < num.
  IF con > 0 and con mod 2 = 0.
    WRITE:/ con.
  ENDIF.
  con = con + 1.
ENDWHILE.
    1. 显示输入的整数值的所有约数
*显示输入的整数值的所有约数
*如果一个整数能被另一个整数整除,那么第二个整数就是第一个整数的约数
PARAMETERS: num TYPE i.
DATA: con TYPE i VALUE 1.
WHILE con <= num.
  IF num mod con = 0.
      WRITE:/ con.
  ENDIF.
  con = con + 1.
ENDWHILE.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容

  • 真要感谢这个时代,足不出户就能参加心仪的第二期张文质教育写作研修班。回听开班仪式上张老师投入而奔放的第一讲《...
    春华园阅读 1,172评论 0 9
  • 黄沙弥漫了夕阳的余晖 寂寥伴着那个孤独的灵魂 遥望千年之前的塞外 依稀残留着流年的伤逝 独留青冢 画师抹煞了你的美...
    谷雨666阅读 172评论 0 0
  • 苏格兰血统的澳洲人 Ross 这位老外是中国通 我认识Ross在十几年前,他是专门给麦当劳、肯德基做厨具的瑞士公司...
    ChristineWang阅读 1,116评论 0 3
  • 1.Living on credit while trying to save money is counterp...
    63dc75fc5f8a阅读 133评论 0 0