合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
习题7-7 字符串替换
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
原字母 | 对应字母 |
---|---|
A | Z |
B | Y |
C | X |
D | W |
… | … |
X | C |
Y | B |
Z | A |
输入格式:
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
输出格式:
输出在一行中给出替换完成后的字符串。
输入样例:
Only the 11 CAPItaL LeTtERS are replaced.
输出样例:
Lnly the 11 XZKRtaO OeGtVIH are replaced.
二、代码(C语言)⭐️
#include <stdio.h> // 包含标准输入输出库,用于使用输入输出函数(如 scanf 和 printf)
#include <string.h> // 包含字符串处理函数库,用于使用字符串相关函数(如 strlen 和 strcspn)
int main() {
char strs[82]; // 定义字符数组 strs,用于存储输入的字符串
fgets(strs, sizeof(strs), stdin); // 从标准输入读取一行字符串,存储到 strs 中
strs[strcspn(strs, "\n")] = '\0'; // 去掉字符串末尾的换行符
int len = strlen(strs); // 获取字符串的长度
// 定义大写字母数组 capitalArr,包含所有大写字母
char capitalArr[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
// 遍历字符串中的每个字符
for (int i = 0; i < len; i++) {
char ch = strs[i]; // 获取当前字符
// 如果当前字符是大写字母
if (ch >= 'A' && ch <= 'Z') {
int index = 0; // 定义变量 index,用于存储字母在 capitalArr 中的索引
// 遍历 capitalArr,找到当前字符对应的索引
for (int j = 0; j < 26; j++) {
if (ch == capitalArr[j]) { // 如果当前字符等于 capitalArr 中的某个字母
index = 25 - j; // 计算反转后的索引(例如,A -> Z,B -> Y,...,Z -> A)
}
}
ch = capitalArr[index]; // 将当前字符替换为反转后的字母
}
printf("%c", ch); // 输出当前字符
}
return 0; // 程序正常结束
}