首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言打印移位數字矩陣:模運算實現循環左移

     編輯:程式設計綜合問答

需求

輸入 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
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved