由于本人水平有限,博文目的在于分享与交流,共同进步,欢迎拍砖。在此感谢xujuan0815。
//输入一个字符串;
//字符串的前半部分-1,如b,将会变为a;当为a时,输出z;
//字符串的后半部分+1,如b,将会变为c;当为z时,输出a;
//字符串的长度若为奇数,中间的那个字符不做变化;
#include <stdio.h>
#include <string.h>
void invert(int len,char *a)
{
int i=0;
if(len%2==0)
{
while(i<len/2)
{ if(*(a+i)=='a')
{
*(a+i)='z';
i++;
}
else
{
*(a+i)=*(a+i)-1;
i++;
}
}
while((len/2<=i)&&(i<len))
{
if(*(a+i)=='z')
{
*(a+i)='a';
i++;
}
else
{
*(a+i)=*(a+i)+1;
i++;
}
}
}
else
{
while(i<len/2)
{
if(*(a+i)=='a')
{
*(a+i)='z';
i++;
}
else
{
*(a+i)=*(a+i)-1;
i++;
}
}
i++;
while((len/2<i)&&(i<len))
{
if(*(a+i)=='z')
{
*(a+i)='a';
i++;
}
else
{
*(a+i)=*(a+i)+1;
i++;
}
}
}
}
int main()
{
int len=0;
int i=0;
char a[100]={'0'};
printf("Please input the string length:\n");
scanf("%d",&len);
printf("length=%d\n",len);
printf("Please input the string input string:\n");
scanf("%s",&a);
invert(len,a);
printf("result:\n");
for(i=0;i<len;i++)
printf("%c",*(a+i));
getchar();
getchar();
}