zoukankan      html  css  js  c++  java
  • 字符串右移

    编写一个函数,要求输入一个字符串和要移动的位数n,使得该字符串能向右移动n位,输出移动后的字符串。例如:tomloveslily移动2位得lytomlovesli。

    思路:把字符串变成两部分,交换位置,实际操作先把后n个字符保存起来,将strlen-n个字符往后移动n个位置,最后把n个字符放在前面(C语言)

    void right_move(char* str,int n)
    {
        int i;
        //临时分配一块内存,大小根据移动的位数决定
        char *temp= (char *)malloc(n*sizeof(char));
        int len = strlen(str);
        
        //给temp[]赋值为str[]后n位
        for(i=0;i<n;i++)
            temp[i]=str[len-n+i];
            
        //把字符串的前len-n右移n位
        for(i=0;i<len-n;i++)
            str[len-i-1]=str[len-i-1-n];
            
        //字符串前n为赋值
        for(i=0;i<n;i++)
            str[i]=temp[i];
    }

    全部代码(C语言)

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    void right_move(char *,int);
    
    int main(void)
    {
        int n;
        char str[30];
        //输入字符串string
        gets(str);
        //输入需要移动的n位
        scanf("%d",&n);
        puts(str);
        right(str,n);
        puts(str);
    }
    
    void right_move(char * str,int n)
    {
        int i;
        char * temp = (char*)malloc(n*sizeof(char));
        int len=strlen(str);
        
        for(i=0;i<n;i++)
            temp = str[len-n+i];
            
        for(i=0;i<len-n;i++)
            str[len-i-1]=str[len-i-1-n];
            
        for(i=0;i<n;i++)
            str[i]=temp[i];
    }
  • 相关阅读:
    Codeblocks的常用Debug快捷键
    大整数乘法(POJ2389)
    简单深搜
    Windows安装时的几个命令(摘录)
    模拟栈的回溯,完全二叉树搜索,(ZOJ1004)
    生理周期,POJ(1006)
    next_permutation,POJ(1256)
    计算次数,POJ(1207)
    模拟,找次品硬币,Counterfeit Dollar(POJ 1013)
    深搜(DFS),Image Perimeters
  • 原文地址:https://www.cnblogs.com/181118ljh123/p/15077543.html
Copyright © 2011-2022 走看看