您好,欢迎访问一九零五行业门户网

如何只用一次循环输出完整的九九表?

只用一次循环输出如下的内容
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
回复内容: 只用一次循环输出如下的内容
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
这算是初级的算法题么 ... 很久不写极限简单的代码 ... 我试试看好了 ...
(dorun (for [o (range 1 10) i (range 1 (+ o 1))] (do (print (str o x i = (* o i) )) (when (= i o) (println)))))1x1=1 2x1=2 2x2=4 3x1=3 3x2=6 3x3=9 4x1=4 4x2=8 4x3=12 4x4=16 5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81 nil
虽然我没看出来在这个很自然的“2层循环”的逻辑中非得用“一次循环”有什么好处(省计算?没有啊?),就当蛋疼吧,来个一次循环的:
(loop [o 1 i 1] (do (print (str o x i = (* o i) )) (cond (and (= o i) (= o 9)) nil (= o i) (do (println) (recur (+ 1 o) 1)) true (recur o (+ 1 i)))))
repl中输出:
user=> (loop [o 1 i 1] #_=> (do #_=> (print (str o x i = (* o i) )) #_=> (cond (and (= o i) (= o 9)) nil #_=> (= o i) (do #_=> (println) #_=> (recur (+ 1 o) 1)) #_=> true (recur o (+ 1 i)))))1x1=1 2x1=2 2x2=4 3x1=3 3x2=6 3x3=9 4x1=4 4x2=8 4x3=12 4x4=16 5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81 nil
python中的代码:
print ('\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))
或者:
for i in range(1,10): for j in range(1,i+1): print (str(j),'*',str(i),'=',i*j,end=' ') print ('\n')input()
(arr = ([*1..9].map{|i| array.new(i,i).zip([*1..i])}.flatten)).each_index{|i|puts #{arr[i]}*#{arr[i+1]}=#{arr[i]*arr[i+1]} if i%2 == 0}
ruby1.9.3测试通过,一层循环,一行代码,换行这种小事情就不要计较了
有java么~~我来加个java的~
for (int i = 1, j = 1; i 0; i++) { if (j != 10) { system.out.print(i + x + j + = + (i * j) + \t); } if (i == j) { j++; i = 0; system.out.println(); }}1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
public static void main(string[] args){
print(1,1);
}
public static void print(int i,int j){
if(i>9 || j>9 || j>i)
return ;
if(i==j){
system.out.println(i+*+j+=+(i*j));
print(i+1,1);
}else{
system.out.print(i+*+j+=+(i*j)+ );
print(i,j+1);
}
}
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
(->> (range 1 10) (map (fn [n] (map #(format %sx%s=%s %1 %2 (* %1 %2)) (range 1 (inc n)) (repeat n)))) flatten)
clojure,换行神马的就不要纠结了。
我是来凑热闹的!
void print(int x,int y){ printf(%d x %d = %d ,x,y,x*y); fflush(stdout); if (x == 9 && y == 9) return; if (x == y) { putchar('\n'); return print(1,++y); } return print(++x,y);}
其它类似信息

推荐信息