简单编码 SDUT

简单编码
Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description
将一串文本译成密码,密码的规律是:
将原来的小写字母全部翻译成大写字母,大写字母全部翻译成小写字母,数字的翻译规律如下:

0——>9
1——>8
2——>7
3——>6
4——>5
5——>4
6——>3
7——>2
8——>1
9——>0

然后将所有字符的顺序颠倒。
Input
输入一串文本,最大字符个数不超过100。
Output
输出编码后的结果。
Sample Input
china
Sample Output
ANIHC
Hint

Source

#include <stdio.h>
#include <string.h>
int main()
{
    int i,t;
   char a[101];
   gets(a);
   int n=strlen (a);
   for(i=0;i<n;i++)
   {
       if(a[i]>='a'&&a[i]<='z')
          a[i]-=32;
       else if(a[i]>='A'&&a[i]<='Z')
        a[i]+=32;
        else if(a[i]>='0'&&a[i]<='9')
            a[i]=105-a[i];

   }
    for(i=0;i<=(n-1)/2;i++)//字符串的调换
    {
        t=a[i];
        a[i]=a[n-1-i];
        a[n-1-i]=t;
    }
    printf("%s\n",a);
    return 0;
}


调换的方法值得学习。
还有另外一种不会出错的方法。

#include <stdio.h>
#include <string.h>
int main()
{
    int i,t=0;
   char a[101];
   gets(a);
   int n=strlen (a);
   char b[101];
   for(i=0;i<n;i++)
   {
       if(a[i]>='a'&&a[i]<='z')
          a[i]-=32;
       else if(a[i]>='A'&&a[i]<='Z')
        a[i]+=32;
        else if(a[i]>='0'&&a[i]<='9')
            a[i]=105-a[i];

   }
     for(i=n-1;i>=0;i--)
        b[t++]=a[i];
    printf("%s\n",b);
    return 0;
}

发布了26 篇原创文章 · 获赞 0 · 访问量 416

猜你喜欢

转载自blog.csdn.net/weixin_45726784/article/details/103494239