|
> 処理内容は、
> (1)第1行目の中央に1を入れる。
> (2)次に入れる数を5で割る。
> ・余りが1の場合、次の数を下のますめに入れる。
> ・それ以外は斜め上に入れる。
> (3)上にはみ出した場合は、その列の1番下のますめに入れる。
> (4)右にはみ出した場合は、その行の1番左のますめに入れる。
そこまで詳しく処理内容がわかっているということは、
プログラムはできたも同然です。
#include <stdio.h>
int main(void)
{
int b[5][5], n = 1, i = 0, j = 2;
b[i][j] = n; /* 第1行目の中央に1を入れる */
for (n = 2; n <= 25; n++) {
if (n % 5 == 1) /* 次に入れる数を5で割り、余りが1の場合 */
i++; /* 下のますめに */
else /* それ以外は */
i--, j++; /* 斜め上に */
if (i < 0) /* 上にはみ出した場合 */
i = 4; /* その列の1番下のますめに */
if (j == 5) /* 右にはみ出した場合は */
j = 0; /* その行の1番左のますめに */
b[i][j] = n; /* 入れる */
}
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++)
printf("%3d", b[i][j]);
puts("");
}
return 0;
}
|