简单编码
时间: 1ms 内存:64M
描述:
将一串文本译成密码,密码的规律是: 将原来的小写字母全部翻译成大写字母,大写字母全部翻译成小写字母,数字的翻译规律如下:
0——>9
1——>8
2——>7
3——>6
4——>5
5——>4
6——>3
7——>2
8——>1
9——>0
然后将所有字符的顺序颠倒。
输入:
输入一串文本,最大字符个数不超过100。
输出:
输出编码后的结果。
示例输入:
china
示例输出:
ANIHC
提示:
参考答案(内存最优[752]):
#include <stdio.h>
#include<string.h>
int main()
{
char s[100];
int i,l;
char t;
gets(s);
l=strlen(s);
for(i=0;i<l;i++)
{
if(s[i]>='0'&&s[i]<='9')
s[i]=48+57-s[i];
else if(s[i]>='a'&&s[i]<='z')
s[i]=s[i]-32;
else
s[i]=s[i]+32;
}
for(i=0;i<l/2;i++)
{
t=s[i];s[i]=s[l-1-i];s[l-1-i]=t;
}
puts(s);
}
参考答案(时间最优[0]):
#include <iostream>
using namespace std;
int main()
{
char str[101],c;
int i=0,j,a,b,v;
while((cin>>c)&&c!=-1)
{str[i]=c;
i++;}
for(j=0;j<i;j++)
{a=str[j];
if(a>='a'&&a<='z') a=a-32;
else if(a>='A'&&a<='Z') a=a+32;
else if(a>='0'&&a<='9')
{switch(a)
{case 48:a=57;break;
case 49:a=56;break;
case 50:a=55;break;
case 51:a=54;break;
case 52:a=53;break;
case 53:a=52;break;
case 54:a=51;break;
case 55:a=50;break;
case 56:a=49;break;
case 57:a=48;break;
}
}
str[j]=a;}
for(b=i-1;b>(i-1)/2;b--)
{char p;
p=str[b];
str[b]=str[i-b-1];
str[i-b-1]=p;
}
for(v=0;v<i;v++)
cout<<str[v];
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。