>for(int i=1; i<=9; i++){
のループと
>for(int j=1; j<=9; j++){
のループの役割を意識することが重要。

>for(int i=1; i<=9; i++){
のループはi*jの通り、九九の左辺を1〜9まで変化させる。と、同時に1行の表示(の末尾で改行)を行う役割がある。

>for(int j=1; j<=9; j++){
のループはi*jの右辺を1〜9まで変化させる。
このループはfor(int i=1; i<=9; i++)のループの入れ子(ネスト)構造になっているから、
for(int i=1; i<=9; i++)が1回ループするごとに9回ループする。

つまり、
1*1、1*2、1*3、…、1*9、2*1、2*2、2*3、…、2*9、…、9*1、9*2、9*3、…、9*9
の順で処理されるわけだ。

そして表示は左辺が変わるごとに改行するのだから、改行位置は
1*1、1*2、1*3、…、1*9、(改行)、2*1、2*2、2*3、…、2*9、(改行)、…、9*1、9*2、9*3、…、9*9、(改行)
となる必要がある。
よって改行はfor(int j=1; j<=9; j++)のループではなくfor(int i=1; i<=9; i++)のループで別に表示しなければならないわけだ。

これでわかる?(\tがタブのエスケープシーケンスだってことはわかってるよな?)
もし分からなければ、>>124がどうなるから駄目だと予想していたのか、予想していた実行結果を書いてくれ。



おまい…フローチャートかけるようにならんと、本気でこの先きついぞ。