輸入 n=5,輸出:
12345
23451
34512
45123
51234
for (int i = 0; i < n; i++) { // 行
for (int j = 0; j < n; j++) { // 列
int val = (i + j) % n + 1; // 關鍵公式
printf("%d", val);
}
printf("\n");
}
#include <stdio.h>
int main() {
int n;
printf("輸入 n: ");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d", (i + j) % n + 1);
}
printf("\n");
}
return 0;
}
// 右移
printf("%d", (i - j + n) % n + 1);
// 起始數字 start
printf("%d", (i + j) % n + start);
| 需求 | 公式 |
|---|---|
| 循環左移 k 位 | (i + j + k) % n |
| 循環右移 k 位 | (i - j - k + n*100) % n (加大倍數保證非負) |
| 1~n 循環 | (x - 1) % n + 1 |
| 0~n-1 循環 | x % n |