> 1. 实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDA ,ABCD左旋两个字符得到CDAB

实现一个函数,可以左旋字符串中的k个字符。
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB

方法1:

#include<stdio.h>
/*
> 1. 实现一个函数,可以左旋字符串中的k个字符。
>    ABCD左旋一个字符得到BCDA
>    ABCD左旋两个字符得到CDAB */


void left(char* a,int valus)
{
	while (valus)
	{
		char tmp = a[0];
		int i = 0;
		for (i = 0; ; i++)
		{
			if (a[i] == '\0')
			{
				break;
			}
			else
			{
				a[i] = a[i + 1];
			}
		}
		a[i - 1] = tmp;

		valus--;
	}
}


int main()
{
	char a[] = "ABCD";
	left(a, 1);
	printf("%s", a);
}

方法2:

没用main主函数调用,还请自己调用

// 第一题第二种方法
/*
 将前k个字符串反转,将后面的字符串反转,然后将整个字符串反转
 */
void fun(char str[], int left, int right)
{
	while (left < right)
	{
		char tmp = str[left];
		str[left] = str[right];
		str[right] = tmp;
		left++;
		right--;
	}
}
void t1_2()
{
	char str[100] = "ABCD";
	int len = strlen(str);
	int k = 0;
	scanf("%d", &k);

	while (k > len)    // 这里处理了一下k>字符串长度的情况
	{               // 这样就可以循环下去了
		k -= len;
	}

	fun(str, 0, k - 1);
	fun(str, k, len - 1);
	fun(str, 0, len - 1);
	printf("%s\n", str);
}
发布了61 篇原创文章 · 获赞 97 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44840572/article/details/102994100