トップページに戻る    次のC#のサンプルへ    前のC#のサンプルへ

11-17 九九の表示

問題

掛け算の九九を下のように表示してください。

1 * 1 =  1
1 * 2 =  2
1 * 3 =  3
(略)
7 * 8 = 56
7 * 9 = 63
8 * 1 =  8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
(略)
9 * 8 = 72
9 * 9 = 81
なお、この問題は掛け算をどうやるかではなく、
どうやって右端がそろうようにレイアウトするかに重点を置いているので、下のようなへこんだ出力は禁止です。

7 * 9 = 63
8 * 1 = 8
8 * 2 = 16


ソース

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        var with1 = Enumerable.Range(1, 9);
        var query = with1.SelectMany(Y => with1,
                                     (X, Y) => string.Format("{0} * {1} = {2,2}", X, Y, X * Y));

        foreach (var each in query)
            Console.WriteLine(each);
    }
}


実行結果

省略
8 * 9 = 72
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


解説

SelectMany拡張メソッドでクロスジョインを行ってから、
stringクラスのFormatメソッドを使ってます。
数値を右詰めや0埋めで文字列化するには?[C#、VB]