c语言编程实现字符串左旋

这里写图片描述

题目:

实现一个函数,可以左旋字符串中的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;
}

运行结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/sister_wang0712/article/details/80028895