C语言-->>左旋字符串

问题描述:

假设有字符串:                    ABCDE

左旋一个字符得到新字符串   BCDEA

左旋两个字符得到新字符串   CDEAB

代码实现:

#include <stdio.h>
#include <string.h>
void reverse(char *left,char *right)
{
 while(left<right)
 {
  char tmp=*left;
  *left=*right;
  *right=tmp;
  left++;
  right--;
 }
}
void left_move(char *str,int k,int len)
{
 reverse(str,str+k-1);
 reverse(str+k,str+len-1);
 reverse(str,str+len-1);
}
int main()
{
 char str[]="ABCDE";/*原字符串:ABCDE*/
 int k=0;
 int len=strlen(str);
 printf("请输入旋转几个字符:");
 scanf("%d",&k);
 while (k>len)
 {
  printf("数字太大,请重新输入:");
  scanf("%d",&k);
 }
 left_move(str,k,len);
 printf("%s\n",str);
 return 0;
}

结果:

时间: 2024-10-14 22:53:09

C语言-->>左旋字符串的相关文章

C语言--左旋字符串中的K个字符

问题: 3.实现一个函数,可以左旋字符串中的k个字符. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA #include<stdio.h> #include<assert.h> #include<string.h> void reserve(char* str, int len) { assert(str); char* start = str; char* end = str + len - 1; while (start < end

【C语言】 左旋字符串

实现一个函数,可以左旋字符串中的k个字符 方法一:开辟另一个数组,先把第k+1后面的字符写入这个数组中,再把要左旋的k个字符写进去 实现如下: #include<stdio.h> #include<assert.h> #include<string.h> void left_Relvove(char *str,char *arr,int k) { char *pcur = str+k;     //先让指针从第k+1个字符开始,存进arr数组里     assert (

c语言中字符串操作的工具类

 1.编写头文件 #define _CRT_SECURE_NO_WARNINGS //#pragmawarning(disable:4996) #include <stdio.h> #include <stdlib.h> #include <string.h> struct CString { char *p;        //保存字符串首地址 int reallength; //实际长度 }; typedef struct CString mystring;//

C语言中字符串如何转换为二进制、八进制、十进制、十六进制

在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现 相关函数: atof, atoi, atol, strtod, strtoul表头文件: #include <stdlib.h>定义函数: long int strtol(const char *nptr, char **endptr, int base):函数的解释说明 这个函数会将参数nptr字符串根据参数base来转换成长整型数.参数base

iOS开发入门 ? C语言(字符串、字符串数组、命令行参数)

字符串 1. 概念 用双引号引起来的就是字符串 "a string" //C语言编译器会将两个并列的字符串自动拼接成一个字符串 "a string""another a string" // \是换行连接的标记(一行不够写) "a looooooooooong \ string" 常见ASCII编码: 'A' == 65    'a' == 97    '0' == 48    '\0' == 0 int a[10]; //表

C语言之字符串处理函数

C语言中字符串处理函数介绍 下面介绍8种基本的常用的字符串处理函数,在数值数组中也常常用到(部分函数).所有的C语言编译系统中一般都提供这些函数. 1.puts函数——输出字符串的函数 一般的形式为puts(字符串组) 作用:将一个字符串输出到终端.如,char一个string,并赋予初值.调用puts(string);进行字符串的输出. 2.gets函数——输入字符串的函数 一般的形式:gets(字符数组) 作用:从终端输入一个字符串到字符数组,并且得到一个函数值成为字符数组的起始地址. ge

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

实现一个函数,可以左旋字符串中的k个字符. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA #include<stdio.h>  #include<stdlib.h>  void spin(char arr[],int num) //spin函数用以完成旋转字符的功能  {  char arr1[5] = {0};  char *str = arr; //创建两个指针都指向原字符数组的首地址  char *start = arr;  char *mov 

D语言中字符串的操作

字符串的操作在软件开发中是特别重要的一个事情,因为基本上的编程都会使用到字符串,字符串操作的好坏决定着一个语言的好与差.在我做过的一个项目中曾经就出现过字符串操作性能问题. D语言字符串有 string,wstring,dstring三种类型,在D语言中字符串是使用字符数组定义的,三种类型分别对应char,wchar,dchar.char只有一个字节,wchar为双字节,dchar为三字节.对字符串的操作也相当于是对数组的操作,这跟其它语言不一样,C++中字符串是以string类来进行封装,它的

编写一个函数,可以左旋字符串中k个字符

题目: 实现一个函数,可以左旋字符串中的k个字符. 例如: abcdef左旋一个字符得到bcdefa abcdef左旋两个字符得到cdefab 题目分析: 对于这个问题,可以用很多种方法求解,这里介绍两种方法: 算法一: 左旋字符串的k个字符,我们可以先将剩下的n-k个字符移动最前面,然后将左旋的k个字符移动到字符串的最后面的位置,这就完成了字符串左旋k个字符的功能.其中,对于n-k个字符的移动,可以利用while循环,将后面的字符逐一进行拷贝.下面是具体的程序: #define _CRT_SE