challenge 九九の表示

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

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
動的にサイズを変えられるようにしてみました。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
        static void Main(string[] args)
        {
            kuku(9);
            kuku(99);
            kuku(999);
        }

        static void kuku(int n)
        {
            int len = n.ToString().Length;
            int xLen = (n * n).ToString().Length;
            string    format = "{0, " + len + "} * {1, " + len + "} = {2, " + xLen + "}";

            for (int i = 1; i <= n ; ++i)
                for (int j = 1; j <= n ; ++j)
                    Console.WriteLine(format, i, j, i * j);
        }
面白くない答えですが・・・

sayは、printlnだと思ってください。
t_ishida
1
for(var i=1;i<10;i++) for(var j = 1;j<10;j++) say([i,'*',j,'=',''].join(' ') + (i * j > 9 ? '' : ' ') + i * j);

Posted feedbacks - C

2桁の九九も目的どおり動きます。
書式に*をつかうのがポイント。
ただ、答えに余計な空白が入ることがあります。

19の段がこんな感じに
19 *  1 =   19
19 *  2 =   38
19 *  3 =   57
19 *  4 =   76
19 *  5 =   95
19 *  6 =  114
19 *  7 =  133
19 *  8 =  152
19 *  9 =  171
19 * 10 =  190
19 * 11 =  209
19 * 12 =  228
19 * 13 =  247
19 * 14 =  266
19 * 15 =  285
19 * 16 =  304
19 * 17 =  323
19 * 18 =  342
19 * 19 =  361

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>

#define START 1
#define END   19

int main()
{
    int col; /* 段 */
    int row; /* 行 */
    int digit;        /* 段・行の桁数 */
    int answer_digit; /* 答えの桁数   */
    int tmp;

    digit = 1;
    for (tmp = END; tmp/10 != 0; digit++) {
        tmp %= 10; 
    }   
    answer_digit = digit * 2;

    for (col = START; col <= END; col++) {
        for (row = START; row <= END; row++) {
            printf("%*d * %*d = %*d\n", digit, col,
                                        digit, row,
                                        answer_digit, col * row);
        }
    }

    return 0;
}

超ふつう
恥ずかしいくらいふつう
既出じゃないことだけ確かめました
早くアブノーマルになりたい
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include    <stdio.h>

int main() {
    int i, j;
    
    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= 9; j++)
            printf("%d * %d = %2d\n", i, j, i*j);
    }
    
    return 0;
}

初投稿です。
リトルエンディアン(Intel系)で動作します。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include <stdio.h>

int main() {
  long a[3];
  int i, j;
  for (i = 0; i <= 80; i++) {
    j = (i/9 + 1) * (i%9 + 1);
    a[0] = 539631665L + i/9;
    a[1] = 540876849L + i%9;
    a[2] = 12320L + (j%10)*256 + (j>9 ? 16+j/10 : 0);
    puts((char *)a);
  }
  return 0;
}

つまらない答えですが・・

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include <stdio.h>

void kuku(int num1, int num2){
  printf("%d * %d = %2d\n", num1, num2, num1 * num2);
}

int main(){
  int num1, num2;
  for(num1 = 1; num1 <= 9; num1++)
    for(num2 =1; num2 <= 9; num2++)
      kuku(num1, num2);

  return 0;
}

Index

Feed

Other

Link

Pathtraq

loading...