方法一:一个一个翻转,但有循环嵌套,效率比较低。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void revovle(char *str,int n)
{
int len=strlen(str);
int i;
char temp;
while(n)
{
temp=str[0];
for(i=0;i<len-1;i++)
{
str[i]=str[i+1];
}
str[len-1]=temp;
n--;
}
}
int main()
{
char a[]="abcdef";
revolve(a,2);
printf("%s",a);
system("pause");
return 0;
}
方法二:三步翻转法。先把abcdef变为ba fedc 再整个翻转为cdefab.
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void reverse(char *str,int left,int right)
{
while(left<right)
{
char temp;
temp=str[left];
str[left]=str[right];
str[right]=temp;
left++;
right--;
}
}
void revolve(char *str,int count)
{
int len=strlen(str);
reverse(str,0,count-1);
reverse(str,count,len-1);
reverse(str,0,len-1);
}
int main()
{
char a[]="abcdef";
revolve(a,2);
printf("%s",a);
system("pause");
return 0;
}