九九の表示
動的にサイズを変えられるようにしてみました。
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
see: C言語-書式付入出力関数(printf文・scanf文)の書式
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;
}
|





にしお
#3418()
Rating0/2=0.00
なお、この問題は掛け算をどうやるかではなく、 どうやって右端がそろうようにレイアウトするかに重点を置いているので、 下のようなへこんだ出力は禁止です。
2 replies [ reply ]