练习6-3 英文字母替换加密(大小写转换+后移1位)
本题要求编写程序,将英文字母替换加密。为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:将明文中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母。例如,字母a->B、b->C、…、z->A、A->b、B->c、…、Z->a。输入一行字符,将其中的英文字母按照以上规则转换后输出,其他字符按原样输出。
输入格式:
输入一行字符,以回车符 '\n’作为 结束符。
输出格式:
将输入的一行字符中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母后输出,其他字符按原样输出。
输入样例:
在这里给出一组输入。例如:
Reold Z123?
输出样例:
在这里给出相应的输出。例如:
sFPME a123?
#include<stdio.h>
#include<string.h>
int main()
{
char st[100] = { '0' };
int i = 0;
while (1) {
st[i] = getchar();
if (st[i] == '\n') {//如果输入的是回车则停止循环,结束输入
break;
}
i++;
}
// 大小写字母之间,ascll值相差的是32
//a-z大小写转换
for (int j = 0; j < strlen(st); j++) {
if (st[j] >= 'a' && st[j] <= 'z') {
if (st[j] == 'z') {
st[j] = 'a';
st[j] -= 32;
}
else {
st[j] += 1;
st[j] -= 32;
}
}
//A-Z大小写转换
else if (st[j] >= 'A' && st[j] <= 'Z') {
if (st[j] == 'Z') {
st[j] = 'A';
st[j] += 32;
}
else {
st[j] += 1;
st[j] += 32;
}
}
else {
continue;
}
}
for (int k = 0; k < strlen(st); k++) {//strlen计算字符串数组的长度
printf("%c", st[k]);
}
return 0;
}