本題要求實作一種自訂加密演算法:將明文密碼轉換為易記憶的密文。規則結合了手機按鍵字母對應與大寫字母位移。
abc→2, def→3, ghi→4, jkl→5, mno→6, pqrs→7, tuv→8, wxyz→9Z→a,A→b...Y→z)。gets() 逐行讀取(注意:gets 不安全,現代建議用 fgets)。'A'~'Y':ch + 32 + 1(轉小寫 + 位移)'Z':直接變 'a''a'~'z':用 switch 對應數字#include <stdio.h>
#include <string.h>
int main()
{
int n, i;
char t, a[101];
while(gets(a) != NULL)
{
n = strlen(a);
for(i = 0; i < n; i++)
{
if(a[i] >= 'A' && a[i] <= 'Y')
{
a[i] = a[i] + 32 + 1;
}
else if(a[i] == 'Z')
{
a[i] = 'a';
}
else if(a[i] >= 'a' && a[i] <= 'z')
{
t = a[i];
switch(t)
{
case 'a': case 'b': case 'c': a[i] = '2'; break;
case 'd': case 'e': case 'f': a[i] = '3'; break;
case 'g': case 'h': case 'i': a[i] = '4'; break;
case 'j': case 'k': case 'l': a[i] = '5'; break;
case 'm': case 'n': case 'o': a[i] = '6'; break;
case 'p': case 'q': case 'r': case 's': a[i] = '7'; break;
case 't': case 'u': case 'v': a[i] = '8'; break;
case 'w': case 'x': case 'y': case 'z': a[i] = '9'; break;
}
}
}
puts(a);
}
return 0;
}

輸入:zvbo941987
- z→9, v→8, b→2, o→6, 9→9, 4→4, 1→1, 9→9, 8→8, 7→7
輸出:9826941987(但題目範例說明輸出為 YUANzi1987,似乎範例為反向說明「把真密碼變成易記密碼」,實際題目要求輸入易記密碼輸出真密碼。程式碼邏輯為「易記→真密碼」符合題目輸出要求。)
gets() 有緩衝區溢位風險,實務請用 fgets(a, sizeof(a), stdin)。