[ACM]n a^o7 !

题目描述

All brave and intelligent fighters, next you will step into a distinctive battleground which is full of sweet and happiness. If you want to win the battle, you must do warm-up according to my instructions, which can make you in the best state preparing to fight. Now please relax yourself and enjoy the good moment. Before you raise your sharp sword to the enemy who guards the battleground, please allow me to tell you a true and romantic story about a samurai like you. 
Samurai hh fell in love with girl ss, who is charming and demure. He realized the truth that he must spend his remaining life with ss, and resolved to pursue the hard-won affection. One day hh wrote a letter to ss, when she opens the letter with excitement her mind was in tangle. She found herself completely not to figure out the meaning about the letter, which said that "n 55!w ! pue n a^o7 ! n paau !". ss also immersed herself in guessing the meaning of that letter for a long time because of her adore to hh. Finally she called hh to ask the meaning of the letter. On the other side of the phone, hh was too nervous to say. Gradually he calmed down himself and told ss to reverse the letter and read it. Then on both ends of the phone comes the voice at the same time "i need u i love u and i miss u".
ss wants to tell each of you however you are Brave And Skilled, you shouldn't forget to express your loyal love and romantic feelings to your prince or princess.
Now the horn sounds for battle,do it by the following input and output. I think each of you will get an "Accepted" in this battle with pleasant mood.

输入

Input contains an integer T in the first line, and then T lines follow .Each line contains a message (only contain 'n5!wpuea^o7!' and 
' '(space)), the message's length is no more than 100.

输出

Output the case number and the message. (As shown in the sample output)

示例输入

2n 55!w ! pue n a^o7 ! n paau !n5!wpuea^o7

示例输出

Case 1: i need u i love u and i miss uCase 2: loveandmisu

解题思路:

本题很有意思,相当于解密,题目中信的内容为密文,我们的任务是求明文,怎样求呢,题目中是把信翻转,对我们来说,1,把原来的字符换成为翻转后我们看到的字符,2,逆序输出。首先输入字符串,然后遍历每一个字符,If 语句判断,把所有的情况都列出来,把该换的字母换掉,最后用reverse()函数颠倒字符串,输出。

代码:

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
    int T,t;
    cin>>T;
    string a;
    for(t=0;t<=T;t++)
    {
        getline(cin,a);//输入字符串
        int i;
        if(t!=0)//把第一次屏蔽掉
        {
            for(i=0;i<a.length();i++)
            {
                if(a[i]=='!')//挨个字符判断,如果If成立,则字符变换
                    a[i]='i';
                else if(a[i]=='u')//记得一定要用else if不要只写if,因为极有可能把需要换掉的字母再换回来
                    a[i]='n';
                else if(a[i]=='a')
                    a[i]='e';
                else if(a[i]=='p')
                    a[i]='d';
                else  if(a[i]=='n')
                    a[i]='u';
                else if(a[i]=='7')
                    a[i]='l';
                else if(a[i]=='^')
                    a[i]='v';
                else if(a[i]=='e')
                    a[i]='a';
                else if(a[i]=='w')
                    a[i]='m';
                else if(a[i]=='5')
                    a[i]='s';

           }
        reverse(a.begin(),a.end());//把字符串颠倒
        cout<<"Case "<<t<<": "<<a<<endl;//逆序输出
        }
    }
    return 0;
}


 

运行截图:

原文地址:https://www.cnblogs.com/sr1993/p/3697857.html