学习目标:使用Oracle 打印三角形(正三角、反三角、逆三角等)
提示:这里可以添加学习目标
- 编写PL/SQL代码块
- 使用多种循环结构(for、while、loop)
- 打印不同形状的星型三角形
- 掌握循环语句
学习内容一:打印星型正三角
*
**
***
****
*****
提示:这里是示例代码内容
--方法1 采用字符串拼接输出方法
declare
s varchar2(50):='';
begin
for i in 1..5 loop
s:=s||'*';
dbms_output.put_line(s);
end loop;
end;
----while 循环版本--------------
declare
s varchar2(50):='';
i number;
begin
i:=0;
while i<5 loop
s:=s||'*';
dbms_output.put_line(s);
i:=i+1;
end loop;
end;
-----loop 循环版本---------------
declare
s varchar2(50):='';
i number;
begin
i:=0;
loop
i:=i+1;
exit when i>5; --当i大于5的时候退出循环
s:=s||'*';
dbms_output.put_line(s);
end loop;
end;
--方法2 --采用字符串截取方法
declare
s varchar2(50):='*****';
begin
for i in 1..5 loop
--s:=s||'*';
--dbms_output.put_line(substr(s,6-i,i));
dbms_output.put_line(substr(s,1,i));
end loop;
end;
--方法3 采用双重循环不换行输出方法
begin
for i in 1 .. 5 loop
for j in 1 .. i loop
dbms_output.put('*');
end loop;
--dbms_output.put_line('');
dbms_output.new_line();-- 换新行
end loop;
end;
学习内容二:打印星型反三角
*
**
***
****
*****
提示:这里是示例代码内容
declare
s varchar2(50):=' *****'; --左边四个空格
begin
for i in 1..5 loop
dbms_output.put_line(substr(s,i,5)); --字符截取方法处理
end loop;
end;
----------------------------------------------
declare --采用不换行拼接方式输出
s varchar2(50):='*****';
y varchar2(50):=' ';
begin
for i in 1..5 loop
dbms_output.put(substr(y,1,5-i));--substr(y,i)
dbms_output.put_line(substr(s,6-i,i));
end loop;
end;
-----------------------------------------
declare
begin --采用不换行双重循环输出
for i in 1..5 loop
for j in 1..5-i loop
dbms_output.put(' ');
end loop;
for j in 1..i loop
dbms_output.put('*');
end loop;
dbms_output.put_line('');
end loop;
end;
学习内容三:打印星型倒三角
*****
****
***
**
*
提示:这里是示例代码内容
--方法1
declare
s varchar2(50):='*****';
begin
for i in 1..5 loop
--dbms_output.put_line(substr(s,6-i,i));
dbms_output.put_line(substr(s,1,6-i));--substr(s,i)
end loop;
end;
--方法2
begin
for i in 1 .. 5 loop
for j in 1 .. 6-i loop
dbms_output.put('*');
end loop;
--dbms_output.put_line('');
dbms_output.new_line();-- 换新行
end loop;
end;
学习内容四:打印星型 逆三角
*****
****
***
**
*
提示:这里是示例代码内容
declare
s varchar2(50):=' *****';
begin
for i in 1..5 loop
dbms_output.put_line(substr(s,6-i,5));
end loop;
end;
------------------------
declare
s varchar2(50):='*****';
y varchar2(50):=' ';
begin
for i in 1..5 loop
dbms_output.put(substr(y,1,i-1));
dbms_output.put_line(substr(s,1,6-i));
end loop;
end;
---------------------------------------------
declare
begin
for i in 1..5 loop
for j in 1..i-1 loop
dbms_output.put(' ');
end loop;
for j in 1..6-i loop
dbms_output.put('*');
end loop;
dbms_output.put_line('');
end loop;
end;