本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
原字母 | 对应字母 |
---|---|
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.
#include <stdio.h>
#include <string.h>
//本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
//原字母 对应字母
///A Z
//B Y
//C X
//D W
//… …
//X C
//Y B
//Z A
// 规律 大写字母之和是一个常数,根据此关系编写程序即可。
int main()
{ //输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
char a[80],b[26];//b数组储存26个大写字母
int d,i,j,k,p;
i=0;
while((d=getchar())!='\n'){
a[i]=(char)d;
i++;
}
a[i]='\0';
p=i;
int l=65;
for(i=0;i<26;i++){
b[i]=l;
l++;
}
//输出在一行中给出替换完成后的字符串。
k=0;
for(j=0;j<p;j++){ //,,学的有点傻 i 在for循环中的反复使用 会导致i的数变化 以前不知道为什么 总以为不改变
for(i=0;i<26;i++){ //这里的P保留了最先的i的值
if(a[j]>='A'&&a[j]<='Z'&&(a[j]+b[i])==155){
a[j]=b[i];
break; //善待break 哈哈哈 跳出最接近的循环
}
}
}
for(j=0;j<p;j++){
printf("%c",a[j]);
}
return 0;
}