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

C 語言四位數加密:每位加 5 取模 10 後首尾對調

     編輯:程式設計疑難解答

題目需求

輸入 4 位整數(0-9 各一位),加密規則:

  1. 每位數字加 5,取個位數(即 (digit + 5) % 10)。
  2. 交換第 1 位與第 4 位,第 2 位與第 3 位(即完全反轉)。
  3. 輸出加密後的 4 位數字。

完整 C 程式碼

#include <stdio.h>

void encrypt(int digits[4]) {
    // 步驟 1:每位 +5 取模 10
    for (int i = 0; i < 4; i++) {
        digits[i] = (digits[i] + 5) % 10;
    }
    // 步驟 2:首尾對調 (0↔3, 1↔2)
    for (int i = 0, j = 3; i < j; i++, j--) {
        int tmp = digits[i];
        digits[i] = digits[j];
        digits[j] = tmp;
    }
}

int main() {
    int digits[4];
    printf("請輸入 4 個數字 (空格分隔):");
    for (int i = 0; i < 4; i++) {
        if (scanf("%d", &digits[i]) != 1) return 1;
    }
    encrypt(digits);
    printf("加密結果:");
    for (int i = 0; i < 4; i++) printf("%d", digits[i]);
    printf("\n");
    return 0;
}

執行範例

輸入:1 2 3 4
步驟1:6 7 8 9  (1+5=6, 2+5=7, 3+5=8, 4+5=9)
步驟2:9 8 7 6  (反轉)
輸出:9876

關鍵點說明

  • 使用陣列 int digits[4] 存放 4 位數字,方便索引操作。
  • (x + 5) % 10 等價於「加 5 取個位」,適用於 0-9 範圍。
  • 雙指標 i=0, j=3 向中間逼近交換,通用於任意偶數長度陣列反轉。
  • 輸入建議加入範圍檢查(0-9),避免非預期值。

擴展:字串版本

void encryptStr(char *str) {  // str 長度至少 5 含結束符
    for (int i = 0; i < 4; i++) {
        str[i] = '0' + (str[i] - '0' + 5) % 10;
    }
    for (int i = 0, j = 3; i < j; i++, j--) {
        char tmp = str[i];
        str[i] = str[j];
        str[j] = tmp;
    }
}

總結

四位數加密核心為「逐位 (x+5)%10」與「陣列反轉」,C 語言用陣列與雙指標交換即可簡潔實現。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved