题目:
实现一个函数,可以左旋字符串中的N个字符。 ABCDEF左旋一个字符得到BCDEFA
ABCDEF左旋两个字符得到CDEFAB
思路分析:
首先定义一个字符串的翻转函数,要把左旋的n个字符先逆序翻转,再把n+1后的字符逆序翻转,
最后整体翻转
代码如下:
#include<stdio.h>
#include<stdlib.h>
int length(char *a) //求字符串长度
{
int i=0;
for(i=0;a[i]!='\0';i++)
{
;
}
return i;
}
void change(char *p,char *q) //翻转函数
{
while(p<q)
{
char tmp=*p;
*p=*q;
*q=tmp;
p++;
q--;
}
}
void turn(char *a,int n)
{
change(a,a+n-1); //前n个字符串逆序翻转
change(a+n,a+length(a)-1); //n+1后的字符串逆序翻转
change(a,a+length(a)-1); //整个字符串逆序翻转
}
int main()
{
int i=0;
int n;
char a[]="abcdef";
printf("a=%s:\n",a); //打印原始字符串
printf("请输入要左旋的字符个数:");
scanf("%d",&n);
turn(a,n);
printf("a=%s",a); //打印左旋后的字符串
system("pause");
return 0;
}
运行结果: