题目没有说串的大小,我还在担心呢,但提交后,正确了:
#include <iostream>
using namespace std;
char characterPlusOne(char c)
{
if('z' == c)
return 'a';
return c + 1;
}
char characterMinusOne(char c)
{
if('a' == c)
return 'z';
return c - 1;
}
int main()
{
char str[100];
int i, len;
while(cin >> str)
{
len = strlen(str);
if(0 == len % 2)
{
for(i = 0; i < len/2; i++)
{
str[i] = characterMinusOne(str[i]);
}
for(i = len/2; i < len; i++)
{
str[i] = characterPlusOne(str[i]);
}
}
else
{
for(i = 0; i < len/2; i++)
{
str[i] = characterMinusOne(str[i]);
}
for(i = len/2 + 1; i < len; i++)
{
str[i] = characterPlusOne(str[i]);
}
}
cout << str << endl;
}
return 0;
}
上面的程序还可以进一步优化,for的个数可以继续减少,在此就不多罗嗦了.