本題要求編寫程式,将給定字元串中的大寫英文字母按以下對應規則替換:
原字母 | 對應字母 |
---|---|
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;
}