在C語言中,大小寫字母轉換是基于ASCII碼表的特性實現的。ASCII碼中,小寫字母從’a’到’z’的ASCII碼值是連續的(97到122),而大寫字母從’A’到’Z’的ASCII碼值也是連續的(65到90)。它們之間有固定的差值:小寫字母對應的ASCII碼值比相同的大寫字母的ASCII碼值大32。
因此,可以使用以下方式來轉換:
- 將小寫字母轉換為大寫字母:
char lower_case = 'a'; // 假設是要轉換的小寫字母
char upper_case = lower_case - 32;
// 現在upper_case就是轉換后的大寫字母
- 將大寫字母轉換為小寫字母:
char upper_case = 'A'; // 假設是要轉換的大寫字母
char lower_case = upper_case + 32;
// 現在lower_case就是轉換后的小寫字母
下面是一個簡單的函數示例,用于演示如何實現任意大小寫字母的轉換:
#include <stdio.h>// 轉換函數聲明
char to_upper(char c);
char to_lower(char c);int main() {char input, output;printf("請輸入一個字符:");scanf(" %c", &input); // 注意這里的空格,用于跳過空白字符// 調用轉換函數if (input >= 'a' && input <= 'z') {output = to_upper(input);} else if (input >= 'A' && input <= 'Z') {output = to_lower(input);} else {printf("輸入的不是字母。\n");return 0;}printf("轉換結果:%c -> %c\n", input, output);return 0;
}// 小寫轉大寫函數
char to_upper(char c) {if (c >= 'a' && c <= 'z') {return c - 32;}return c; // 如果不是小寫字母,則返回原字符
}// 大寫轉小寫函數
char to_lower(char c) {if (c >= 'A' && c <= 'Z') {return c + 32;}return c; // 如果不是大寫字母,則返回原字符
}
這段代碼首先接收用戶輸入的一個字符,然后通過判斷字符是否在字母范圍內進行相應的轉換,并輸出轉換后的結果。如果輸入的字符不是字母,則會提示并保持原樣輸出。