作者yauhh (哟)
看板Programming
标题Re: [问题] 关於九九乘法的小变形..想不出来..
时间Sun Dec 5 08:09:16 2010
※ 引述《shinmeteor (shin)》之铭言:
: ※ [本文转录自 java 看板 #1C-bBl1v ]
: 作者: shinmeteor (shin) 看板: java
: 标题: [问题] 关於九九乘法的小变形..想不出来..
: 时间: Sat Dec 4 22:40:43 2010
: 不知道plsql可以在这里发问吗?有专版吗?有误po请跟我说一下,会马上删除,谢谢。
: 请问一下@@
: DECLARE
: v_m number(5):=0;
: v_col number(5):=9;
: v_String VARCHAR2(100):='';
: v_z number(5):=9;
: BEGIN
先看清楚结构,第一层回圈对应输出的每一列,第二层回圈对应第一个乘数,
第二个回圈控制第二个乘数,并且产生结果.
: LOOP
: FOR v_i IN 1 .. v_z
: LOOP
: FOR v_j IN (1+v_m) ..(v_col+v_m)
: LOOP
: IF v_j <= v_z THEN
: v_String:=v_String||'
: '||v_j||'*'||v_i||'='||LPAD((v_i*v_j),2,'0');
: END IF;
: END LOOP;
: DBMS_OUTPUT.PUT_LINE(v_String);
: v_String:='';
: v_z := v_z-1;
: END LOOP;
: DBMS_OUTPUT.PUT_LINE(v_String);
: v_m:=v_m+v_col;
: EXIT WHEN v_m >=9;
: END LOOP;
: END;
: 她显示是..
: 1*1=01 2*1=02 3*1=03 4*1=04 5*1=05 6*1=06 7*1=07 8*1=08 9*1=09
: 1*2=02 2*2=04 3*2=06 4*2=08 5*2=10 6*2=12 7*2=14 8*2=16
: 1*3=03 2*3=06 3*3=09 4*3=12 5*3=15 6*3=18 7*3=21
: 1*4=04 2*4=08 3*4=12 4*4=16 5*4=20 6*4=24
: 1*5=05 2*5=10 3*5=15 4*5=20 5*5=25
: 1*6=06 2*6=12 3*6=18 4*6=24
: 1*7=07 2*7=14 3*7=21
: 1*8=08 2*8=16
: 1*9=09
这情况分二步骤看比较简单. 首先是把输出行数推移成
1*1=01 2*1=02 3*1=03 4*1=04 5*1=05 6*1=06 7*1=07 8*1=08 9*1=09
1*2=02 2*2=04 3*2=06 4*2=08 5*2=10 6*2=12 7*2=14 8*2=16
1*3=03 2*3=06 3*3=09 4*3=12 5*3=15 6*3=18 7*3=21
1*4=04 2*4=08 3*4=12 4*4=16 5*4=20 6*4=24
1*5=05 2*5=10 3*5=15 4*5=20 5*5=25
1*6=06 2*6=12 3*6=18 4*6=24
1*7=07 2*7=14 3*7=21
1*8=08 2*8=16
1*9=09
想想看,做这件事情要改哪里?
要在什麽位置加入一段程式码,随着每一列列数而加入相对长度的空格?
是在第一层回圈内前面,还是第二层回圈内前面,还是第三层?
. . . . . .
第二步是,如果已经把每一列推移过去,看每一行, v_j 没有改变,
而 v_i 要做一些调整. 第二列每个 v_i 加一,第三列每个 v_i 加二等等.
这里要加的不是一段程式而已,在 FOR v_i IN 1 .. v_z 范围要改变,
而范围改变必须参考到第一步每一列平移了多少段空格的资讯.
所以你要在第一层回圈控制一个变数,然後让第二层回圈参考到那个变数.
: 如果我想要这样,该怎麽做呢...请大家提点一下迷津@@a
: 1*1=01 2*1=02 3*1=03 4*1=04 5*1=05 6*1=06 7*1=07 8*1=08 9*1=09
: 2*2=04 3*2=06 4*2=08 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
: 3*3=09 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27
: 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36
: 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45
: 6*6=36 7*6=42 8*6=48 9*6=54
: 7*7=49 8*7=56 9*7=63
: 8*8=64 9*8=72
: 9*9=81
: 头快搞混了...谢谢各位><
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.160.210.220
1F:推 yoco315:<(_ _)> y大永远都有办法不顾众议标新立异203.160.254.105 12/07 11:28
2F:→ yauhh:对啊,跟大家相同有什麽好玩的?就是要不同啊 59.112.225.18 12/07 19:57