字符串的左旋转操作,c字符串旋转编程

  字符串的左旋转操作,c字符串旋转编程

  前言,请看这个问题。需要自己旋转字符串,旋转几个字符自己指定。这是一个基本的题型。我这里有三个解决方案。接下来,我将通过绘图和编码来解释第一种解决方案。标题如下:

  正如你所看到的,字符ABCD在旋转后变成了BCDA。

  如图所示:

  这是第一种解法的一般过程。接下来,我将向你解释如何练习串交换:

  #include stdio.h //字符串字符旋转# includeassert.h void冒泡(char * arr,intsz,intn){ assert(arr);int I=0;int j=0;for(I=0;I I){ char tmp=0;for(j=0;j SZ-1;j){ tmp=arr[j];arr[j]=arr[j 1];arr[j 1]=tmp;} } } void print(char * arr){ printf( % s \ n ,arr);} int main(){ char arr[]= ABCD ;int SZ=sizeof(arr)/sizeof(arr[0])-1;int n=0;Printf(请输入兑换次数\ n );while (~scanf(%d ,n)) { bubbling(arr,sz,n);//使用冒泡交换实现字符旋转打印(arr);Printf(请输入兑换次数\ n );}返回0;}这是我写的一个交换代码,用数组交换。你可以看看。下面是一个一个交换数组的方法。其实原理和冒泡排序一样,就是一个外循环,一个内循环。外部循环负责控制旋转的字节数。如果我们的n输入为1,则旋转一次,如果为2,则旋转两次。接下来,我们将解释内部循环。

  如你所见,我们的arr[0]首先与arr[1]交换,然后是arr[1]和arr[2]的相互交换。你会觉得冒泡排序也是一个一个交换的,但是冒泡排序比这个多了一个判断条件。如果是升序的话,只有第一个元素大于第二个元素的时候才能交换,但这不是必须的。你只需要完成交换,如图。

  这里的第一个参数是字符串第一个元素的地址,第二个参数是字符串中的字符数(不包括/0),第三个参数是我们自己输入的要旋转的字符数。

  大家可以看到,紫框是外圈,用来判断交换了多少字符,内圈是红框。我们设置一个变量tmp来接收我们arr[j]的值,然后我们把arr[j]的值换成arr[j 1]的值,这样循环交换。因为我们有四个字符,所以需要交换三次,如图。

  所以我们的判断条件是sz-1。(我们注意到sizeof(arr)在计算字符串大小时会再次计算 \0 ,所以最后要进行-1运算,这样我们的sz就是我们的字符数。)因为sz-1表示我们受制于这个抽签,当我有四个字符时,我们需要交换三次,因为J从0开始。

  当我输入1时,旋转一次,就变成了如图所示的字符串。当然,我之前说过,交换的字符数是由N控制的,如果N为2,则交换两个字符,如图所示:

  你可以看到ab已经旋转到后面了,从abcd到cdab。

  好了,这大概就是第一种解法的解释了。接下来我会在后续补充第二种写法。我个人推荐第二种写法,所以这次就这样了。可以给个赞,作为对新人的支持!

  谢谢大家!

  ,

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: