Oracle 练习题 20131021 for 循环练习

--Oracle 练习题 20131021 for 循环练习

--1、用for循环实现一个倒置的乘法表。
begin
  for i in reverse 1 .. 9 loop
    for j in reverse 1 .. i loop
      dbms_output.put(i || 'x' || j || '=' || i * j || ' ');
    end loop;
    dbms_output.put_line('');
  end loop;
end;

--2、打印1-100之间所有的素数。
declare
  v_temp number := 0;
begin
  for i in 2 .. 100 loop
    for j in 1 .. sqrt(i) loop
      if mod(i,j) = 0 then
        v_temp := v_temp + 1;
      end if;
    end loop;
    if v_temp = 1 then
      dbms_output.put_line(i);
    end if;
    v_temp := 0;
  end loop;
end;

--3、输入两个数求它们的最大公约数和最小公倍数。
declare
  v_a number := &inputa;
  v_b number := &inputb;
  v_rsa number;
  v_rsb number;
begin
  for i in 1 .. (v_a+v_b)/2 loop
    if mod(v_a,i)=0 and mod(v_b,i)=0 then
      v_rsa := i;
    end if;
  end loop;
  
  for j in reverse 1 .. v_a*v_b loop
    if mod(j,v_a)=0 and mod(j,v_b)=0 then
      v_rsb := j;
    end if;
  end loop;
  
  dbms_output.put_line('最大公约数:' || v_rsa);
  dbms_output.put_line('最小公倍数:' || v_rsb);
end;

--4、打印如下菱形
--    *
--   ***
--  *****
-- *******
--  *****
--   ***
--    *
begin
  --上半部分
  for i in 1..4 loop
    for j in 1..(5-i) loop
      dbms_output.put(' ');
    end loop;
    
    for k in 1..(2*i-1) loop
      dbms_output.put('*');
    end loop;
    dbms_output.put_line('');
  end loop;
  --下半部分
  for i in 1..3 loop
    for j in 1..i+1 loop
      dbms_output.put(' ');
    end loop;
    
    for k in 1..7-(2*i) loop
      dbms_output.put('*');
    end loop;
    dbms_output.put_line('');
  end loop;
  
end;
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

于大大大洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值