左旋右旋问题一次搞定!!!

左旋右旋问题的解决

编程思想

  • 1.在左右旋函数中实现该函数功能首先要想好如何存放移位后的字符元素
  • 2.左旋时将字符串首元素赋给临时变量tmp而后将字符串元素依次前移一位
  • 3.将tmp的值再赋给字符串的最后一个元素,实现左旋。右旋函数大体相同。
  • 4.合理运用循环,使得函数功能得以全部实现。

题目要求:实现一个函数,可以左/右旋字符串中的k个字符。
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
AABCD右旋一个字符得到DAABC

#include<stdio.h>
void menu( )
{                                                                        //打印菜单,供操作人员选择。
	printf("************************\n");
	printf("*********1.左旋*********\n");
	printf("*********2.右旋*********\n");
	printf("*********0.退出*********\n");
	printf("************************\n");
}

void LeftSlue(char arr[ ],int sz)
{                                                                           //左旋字数串函数
	int i;
	int k=0;
	printf("请输入要左旋的字符数:");
	scanf("%d",&k);
	k=k%sz;                                             //防止输入的k值超过字符串的长度
			while(k--)
		  {
			char tmp=arr[0];
             for(i=0;i<sz;i++)
			   {
			        arr[i]=arr[i+1];
				}
			 arr[sz-1]=tmp;
		   }
		

}

void RightSule(char arr[],int sz )
{                                                           //右旋字符串函数
	int i;
	int k=0;
	printf("请输入要右旋的字符数:");
	scanf("%d",&k);
	k=k%sz;                                                   //防止输入的k值超过字符串的长度 
	while(k--)
		{
			char tmp=arr[sz-1];
             for(i=sz-1;i>=0;i--)
			   {
			        arr[i]=arr[i-1];
				}
			 arr[0]=tmp;
		}		
}

void print(char arr[ ],int  sz)
{                                                                //打印函数 ,打印字符串。
	int i=0;
	printf("-------------------\n");
	for(i=0;i<sz;i++)
	{
		printf("%c ",arr[i]);
	}
	printf("\n");
	printf("-------------------\n");
}

int main()
 {
	 int input=0;
	 do
	 {
		 char arr[6]="abcdef";                                    //定义字符串,并进行初始化。
		 int sz=sizeof(arr)/sizeof(arr[0]);                       //计算字符串长度
		 menu( );
		 scanf("%d",&input);
		 switch(input)
		 {
		 case 1:
			 LeftSlue(arr,sz);
			 print(arr,sz);
			 break;
		 case 2:
			 RightSule(arr,sz);
			 print(arr,sz);
			 break;
		 case 0:
			 break;
		 default:
			 printf("输入错误!\n");
			 break;
		 }
	 }while(input);
  return 0;
 }

【 总结】

个人觉得在开始写代码前在自己的脑子里应该先有函数的大体框架。不能边敲代码边想函数的功能,如果边敲代码边想的话容易出现大量的错误和警告而且会没有明确的解决思想。出现大量的错误再去改正的话会浪费更多的时间。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值