一般解法
#include<iostream>
#include<stdlib.h>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string s,t;
char str[210];
while(cin>>s&&s!="ENDOFINPUT")
{
getchar();
gets(str);
cin>>t;
for(int i=0;i<strlen(str);i++)
{
if(str[i]>=65&&str[i]<=90)
str[i]=(str[i]+21-'A')%26+'A';
}
cout<<str<<endl;
}
system("pause");
return 0;
}
map解法:
#include<stdlib.h>
#include<string>
#include<algorithm>
#include<iostream>
#include<map>
using namespace std;
int main()
{
char b[]={'V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U'};
string s,t;
char a[210];
map<char,char>charmap ;
while(cin>>s&&s!="ENDOFINPUT")
{
getchar();
gets(a);//不能用cin和scanf;
cin>>t;
for(int i=0;i<26;i++)
{
charmap['A'+i]=b[i];
}
for(int i=0;i<strlen(a);i++)
{
if(!isalpha(a[i]))
cout<<a[i];
else
cout<<charmap[a[i]];
}
cout<<endl;
}
system("pause");
return 0;
}