实现一个函数,可以左旋字符串中的k个字符。

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

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

//交换函数
int Swap(char* start, char* end){
	char temp;
	if (start == end){  //若字符串为空
		printf("字符串为空.\n");  //输出提示信息
		return 0;
	}
	--end;  //使end指向字符串最后一个有效字符
	while (start < end){  //当start小于end
		//交换start和end指向的内容
		temp = *start;
		*start = *end;
		*end = temp;
		++start;  //start向后移
		--end;  //end向前移
	}
	return 1;
}

//用户输入数据函数
int input_breakpoint(int len){
	int breakpoint;
	printf("请输入您想左旋字符个数(0-%d):\n", len - 1);  //提示用户输入信息
	while (1){  //当条件为真
		scanf("%d", &breakpoint);  
		if (breakpoint >= 0 && breakpoint < len){  //判断断点是否合格
			break;  //断点合格跳出循环
		}
		printf("输入有误,请重新输入(0-%d):\n", len - 1);  //提示用户重新输入信息
	}
	return breakpoint;  //返回断点
}

//实现函数
void Function(char str[],int len){
	char* start = str;  //start指向字符串开头
	char* end = str + len - 1;  //end指向'\0'
	Swap(start, end);
	int breakpoint = input_breakpoint(len);
	end = end - breakpoint;  //end向左移end减breakpoint位(即将breakpoint个字符左旋)
	Swap(start, end);
	start = end;  //start指向end
	while (*end != '\0'){  //当end指向不为空
		++end;  //end向后移
	}
	Swap(start, end);
	printf("%s", str);
	
}

//主函数
int main(){
	char str[] = "ABCD";  //定义字符串,并初始化
	int len = sizeof(str);
	Function(str,len);  //调用实现函数
	system("pause");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值