对应字符的相会转换 随机定

现在给出了字母的替换规则,如下所示,A被E替换,B被C替换,依次类推。
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
E C F A J K L B D G H I V W Z Y M N O P Q R S T U X
a b c d e f g h i j k l m n o p q r s t u v w x y z
e r w q t y g h b n u i o p s j k d l f a z x c v m
每组测试数据为一行:为仅由字母和空格组成的字符串(空格不变)。 输入以单行“#”结束。

Input

Ilttabaje zaujljg#

Output

Different meaning
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char *ul="ECFAJKLBDGHIVWZYMNOPQRSTUX";
char *ll="erwqtyghbnuiopsjkdlfazxcvm";
int main()
{
    char buf[512],*p;
    while(1){
        gets(buf);
        if(!strcmp(buf,"#"))break;
        p=buf;
        while(*p){
            if(islower(*p))*p=ll[*p-'a'];
            if(isupper(*p))*p=ul[*p-'A'];
            p++;
        }
        puts(buf);
    }
    return 0;
}
islower和isupper是判断是否是小写或大写字母的库函数, 自己写条件也行
gets(buf);取得1行字符
		if(!strcmp(buf,"#"))break; 如果是"#"就退出循环
		p=buf;
		while(*p){ //循环每个字符,  字符串末尾是0就退出循环
			if(islower(*p))*p=ll[*p-'a'];
如果是小写的,  就按照char *ll="erwqtyghbnuiopsjkdlfazxcvm"; 修改
a b c d e f g h i j k l m n o p q r s t u v w x y z
e r w q t y g h b n u i o p s j k d l f a z x c v m
比如a应该改成e,   e的下标0的元素里,   但字符a的ascii码不是0, 所以减去'a'(*p-'a')
用这个当下标从ll中取要转换成的字符,大写的同样
			if(isupper(*p))*p=ul[*p-'A'];
			p++;
		}
		puts(buf);

第二种 
#include <iostream>
#include <cstdio>
using namespace std;
char a[26]={'E','C','F','A','J','K','L','B','D','G','H','I','V','W','Z','Y','M','N','O','P','Q','R','S','T','U','X'};
char b[26]={'e','r','w','q','t','y','g','h','b','n','u','i','o','p','s','j','k','d','l','f','a','z','x','c','v','m'};
int main()
{
    char c;
    while ((c=getchar())!='#')
    {
        if (c>='A'&&c<='Z')
            putchar(a[c-'A']);
        else if(c>='a'&&c<='z')
            putchar(b[c-'a']);
        else if(c==' ')
            putchar(' ');
        else if (c=='\n')
            cout<<endl;
    }
    return 0;
}
来自网络
原文解析:http://zhidao.baidu.com/link?url=moZZeRCLkTEJN95Jx4Xc6uCR4PPLvBvfcRAtLHDFQHaBVsVTkueZMKX_wqsSMvlk2USCfoVYJlj-FkyNMxVV0q
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值