程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 循環移位

循環移位

編輯:C++入門知識

將字符串進行循環移位

abcdefg-----defgabc

 

[cpp]
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#define MAX_LEN 100  
 
//方法1  
void LoopMove1(char *pStr, int steps) 

    int n = strlen(pStr)-steps; 
    char tmp[MAX_LEN];  
    strcpy (tmp, pStr+steps);  
    strcpy (tmp+n, pStr);  
    *(tmp+strlen(pStr)) = '\0'; 
    strcpy( pStr, tmp ); 

 
 
//方法2  
void LoopMove2(char *pStr, int steps) 

    int n = strlen( pStr )-steps; 
    char tmp[MAX_LEN];  
    memcpy(tmp, pStr+steps, n);  
    memcpy(tmp+n, pStr, steps );  
    memcpy(pStr, tmp, strlen(pStr));  
}  
 
 
//方法3  
void reverse(char *begin, char *end) 

    char tmp=0; 
    while(begin < end) 
    { 
        tmp = *begin; 
        *begin = *end; 
        *end = tmp; 
        begin++; 
        end--; 
    } 

 
void LoopMove3(char *pStr, int step) 

    int n=strlen(pStr); 
    reverse(pStr,pStr+step-1); 
    reverse(pStr+step,pStr+n-1); 
    reverse(pStr,pStr+n-1); 

 
 
 
void main() 

    char src[] = "abcdefg"; 
    LoopMove1(src,1); 
    puts(src); 
    LoopMove2(src,2); 
    puts(src); 
    LoopMove3(src,3); 
    puts(src); 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100

//方法1
void LoopMove1(char *pStr, int steps)
{
 int n = strlen(pStr)-steps;
 char tmp[MAX_LEN];
 strcpy (tmp, pStr+steps);
 strcpy (tmp+n, pStr);
 *(tmp+strlen(pStr)) = '\0';
 strcpy( pStr, tmp );
}


//方法2
void LoopMove2(char *pStr, int steps)
{
 int n = strlen( pStr )-steps;
 char tmp[MAX_LEN];
 memcpy(tmp, pStr+steps, n);
 memcpy(tmp+n, pStr, steps );
 memcpy(pStr, tmp, strlen(pStr));
}


//方法3
void reverse(char *begin, char *end)
{
 char tmp=0;
 while(begin < end)
 {
  tmp = *begin;
  *begin = *end;
  *end = tmp;
  begin++;
  end--;
 }
}

void LoopMove3(char *pStr, int step)
{
 int n=strlen(pStr);
 reverse(pStr,pStr+step-1);
 reverse(pStr+step,pStr+n-1);
 reverse(pStr,pStr+n-1);
}

 

void main()
{
 char src[] = "abcdefg";
 LoopMove1(src,1);
 puts(src);
 LoopMove2(src,2);
 puts(src);
 LoopMove3(src,3);
 puts(src);
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved