Problem Link:点击打开链接
题目描述
一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。如果这是一个小写字符,则它和字符'a’的距离与它的反码和字符'z’的距离相同;如果是一个大写字符,则它和字符'A’的距离与它的反码和字符'Z’的距离相同;如果不是上面两种情况,它的反码就是它自身。 举几个例子,'a’的反码是'z’;'c’的反码是'x’;'W’的反码是'D’;'1’的反码还是'1’;'$'的反码还是'$'。 一个字符串的反码定义为其所有字符的反码。我们的任务就是计算出给定字符串的反码。
输入描述:
输入每行都是一个字符串,字符串长度不超过 80 个字符。如果输入只有!,表示输入结束,不需要处理。
输出描述:
对于输入的每个字符串,输出其反码,每个数据占一行。
输入例子:
Hello JLU-CCST-2011 !
输出例子:
Svool QOF-XXHG-2011
AC code:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<map>
#include<math.h>
#include<string.h>
#include<queue>
#include<vector>
#include<set>
#define LL long long
#define exp 1e-9
#define MAXN 1000010
using namespace std;
int main()
{
// freopen("D:\\in.txt","r",stdin);
int i,l1;
while(1)
{
char s1[88],s2[88];
gets(s1);
if(s1[0]=='!') break;
l1=strlen(s1);
for(i=0;i<l1;++i)
{
if(s1[i]>='a'&&s1[i]<='z')
s2[i]='z'-(s1[i]-'a');
else if(s1[i]>='A'&&s1[i]<='Z')
s2[i]='Z'-(s1[i]-'A');
else
s2[i]=s1[i];
}
s2[i]='\0';
puts(s2);
}
return 0;
}