7-5 字符串替换 (15分)
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
原字母 | 对应字母 |
---|---|
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>
int main()
{
int i,j,c;
char s[82];
char a[27]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
gets(s);
for(i=0;i<=strlen(s);i++)
{
if(s[i]>='A'&&s[i]<='Z')
{
for(j=0;a[j]!='\0';j++){
if(a[j]==s[i]){
s[i]=a[25-j];
break;
}
}
}
}
puts(s);
return 0;
}
第二种方法
#include<stdio.h>
#include<string.h>
void reverse(char *a);
int main()
{
int i,j,c;
char s[82];
char a[27]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
gets(s);
for(i=0;i<=strlen(s);i++)
{
if(s[i]>='A'&&s[i]<='Z')
{
for(j=0;a[j]!='\0';j++){
if(a[j]==s[i]){
reverse(a);
s[i]=a[j];
break;
}
}
}
}
puts(s);
return 0;
}
void reverse(char *a)
{
int i,j,c;
for(i=0,j=strlen(a)-1;i<j;i++,j--){
c=a[i];
a[i]=a[j];
a[j]=c;
}
}