描述: 将一串文本译成密码,密码的规律是:将原来的小写字母全部翻译成大写字母,大写字母全部翻译成小写字母,数字的翻译规律如下:
0——>9
1——>8
2——>7
3——>6
4——>5
5——>4
6——>3
7——>2
8——>1
9——>0
然后将所有字符的顺序颠倒。
输入:
输入一串文本,最大字符个数不超过100。
输出:
输出编码后的结果。
样例输入: china
样例输出: ANIHC
-------------------------------------------------------------------------------------------------------------
分析:将字符串进行大小写转换,然后逆序输出该字符串。在C语言中将字符大小写转换有两种方法,一种方法是进行算术运算,加32,转换为小写,减32,转换为大写,当然也可以用tolower()函数和toupper()函数。
同样,判断一个字符是否为大写或小写,也可以有两种方法,一种是逻辑表达式,判断大写:c
>=’A’ && c <= ‘Z’,判断小写:c
>=’a’ && c <=’z’。另一种是使用islower()函数与isupper()函数。
数字的处理,你会发现,实际上就是用9减去当前数字即可,当然也可以用开关语句实现。数字的判断可以用逻辑表达式,c
>=’0’ && c <= ‘9’,也可以用isdigit()函数。
(1)函数法:
#include < stdio.h >
#include < ctype.h >
#include < string.h >
int main()
{
char
str[100];
int
i,n;
gets(str);
n=strlen(str);
for(i=0;str[i]!='\0';i++)
{
if(isupper(str[i]))
str[i]=tolower(str[i]);
else
if(islower(str[i]))
str[i]=toupper(str[i]);
else
if(isdigit(str[i]))
str[i]='9'-str[i]+'0';
}
for(i=n-1;i>=0;i--)
printf("%c",str[i]);
printf("\n");
return
0;
}
(2)逻辑表达式法:
#include < stdio.h >
#include < string.h >
int main()
{
char
str[100];
int
i,n;
gets(str);
n=strlen(str);
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='A'&&
str[i]<='Z')
str[i]+=32;
else
if(str[i]>='a'&&str[i]<='z')
str[i]-=32;
else if(str[i]>='0'
&& str[i]<='9')
{
switch(str[i])
{
case '0':
str[i]='9';break;
case '1':
str[i]='8';break;
case '2':
str[i]='7';break;
case '3':
str[i]='6';break;
case '4':
str[i]='5';break;
case '5':
str[i]='4';break;
case '6':
str[i]='3';break;
case '7':
str[i]='2';break;
case '8':
str[i]='1';break;
case '9':
str[i]='0';break;
}
}
}
for(i=n-1;i>=0;i--)
printf("%c",str[i]);
printf("\n");
return
0;
}
---------------------------
python3 代码如下:
s=input()
newstring=str()
for x in s:
if
x.isdigit():
newstring+=chr(ord('9')-ord(x)+ord('0'))
else:
newstring+=x
newstring=newstring.swapcase()
print(newstring[::-1])