輸入 4 位整數(0-9 各一位),加密規則:
(digit + 5) % 10)。#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 向中間逼近交換,通用於任意偶數長度陣列反轉。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 語言用陣列與雙指標交換即可簡潔實現。