精华内容
下载资源
问答
  • C语言请实现字符串循环右移函数

    千次阅读 2018-09-20 13:56:51
    C语言请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”  #include <stdio.h> #include <string.h> #include <assert.h> void Ri...

    转载:https://blog.csdn.net/archyli/article/details/53562945

    C语言请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg” 

    #include <stdio.h>
    #include <string.h>
    #include <assert.h>
    
    void RightLoopMove(char *pStr, unsigned short steps)
    {
        int i = 0;
        int len = strlen(pStr);//字符串长度
        assert(pStr);
        for (i = 0; i < steps; i++)
        {    //pStr表示字符串头(序号为0,和数组一样理解)  len-1是字符串序号的最大排序,
            char *pend = pStr + len - 1;//指针指向了字符串的尾部
            //将尾部的数据取出来放到临时变量tmp里
            char tmp = *(pStr + len - 1);//获取字符串尾部的字符(这里*  是指针解引用,取出具体值)
            while (pStr <= pend)//判断字符串尾指针是否指过了字符串头
            {
                *pend = *(pend - 1);//将字符串前一个字符拿出来,放到字符串后面
                pend--;//字符串尾指针,又向头指针的方向走一个,然后又替换一次数据,从而达到所有字符右移一个的目的
            }
            //当所有字符串整体右移一位时,最后将临时变量的值放到字符串头
            *pStr = tmp;
        }
    }
    int main()
    {
        char str[] = "abcdef";
        RightLoopMove(str,1);
        printf("%s\n", str);
        getchar();
        return 0;
    }
    

     

    展开全文
  • //请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”//函数原型为:void RightLoopMove(char *pstr,unsigned short steps)#include #include #include void severse(char *p,char *q) /...

    // 请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”

    // 函数原型为:void RightLoopMove(char *pstr,unsigned short steps)

    #include

    #include

    #include

    void severse(char *p,char *q) //字符串翻转

    {

    char temp;

    assert(p);

    assert(q);

    while(p

    {

    temp=*p;

    *p=*q;

    *q=temp;

    p++;

    q--;

    }

    }

    void RightLoopMove(char *pstr,unsigned short steps)

    {

    int len=strlen(pstr);

    severse(pstr,pstr+len-steps-1); //前部分翻转

    severse(pstr+len-steps,pstr+len-1); //后部分翻转

    severse(pstr,pstr+len-1); //整体翻转

    }

    int main()

    {

    char arr[]="abcdefghi";

    RightLoopMove(arr,2);

    printf("%s\n",arr);

    return 0;

    }

    623594564b2c6b7d70065ec399411811.png

    

    原文:http://blog.csdn.net/doudouwa1234/article/details/45181611

    展开全文
  • 请实现字符串循环右移函数。 列如字符串“abcdefghi”向右移2位就是“hiabcdefg” 。 函数原型为:void RightLoopMove(char *pstr,unsigned short steps) 函数参数说明:  pStr: Point to a ‘\0’ terminated ...

    题目:请实现字符串循环右移函数。

    列如字符串“abcdefghi”向右移2位就是“hiabcdefg”

    函数原型为:void RightLoopMove(char *pstr,unsigned short steps)

    函数参数说明:
       pStr: Point to a ‘\0’ terminated string

       steps: The rotate shift numbers


    方法一:分三次翻转达到右移字符串的目的


    代码实现如下:

    #include <stdio.h>
    #include <string.h>
    #include <assert.h>
    void reverse(char *left, char *right)
    {
    	char temp;
    	assert(left);
    	assert(right);
    	while (left < right)
    	{
    		temp = *left;
    		*left = *right;
    		*right = temp;
    		left++;
    		right--;
    
    	}
    }
    void RightLoopMove(char *pstr, unsigned short steps)
    {
    	int n = strlen(pstr);
    	reverse(pstr, pstr + n - steps - 1);//第一次循环
    	reverse(pstr + n - steps, pstr + n - 1);//第二次循环
    	reverse(pstr, pstr + n - 1);//第三次循环
    }
    int main()
    {
    	char arr[] = "abcdefghi";
    	RightLoopMove(arr, 2);
    	printf("%s\n", arr);
    	system("pause");
    	return 0;
    }



    方法二:首先将最后一个字符赋给一个临时变量,再将前面的字符依次往后挪动一个位置,最后再把临时变量赋给第一个字符,重复上述步骤,从而达到右旋字符串的目的。

    实现方法图示:


    代码实现如下:

    #include <stdio.h>
    #include <string.h>
    #include <assert.h>
    void RightLoopMove(char *pStr, unsigned short steps)
    {
    	assert(pStr);
    	assert(steps);
    	char *left = pStr;
    	char *right = pStr + strlen(pStr) - 1;
    	while (steps)
    	{
    		char tmp = *right;
    		char *p = right;
    		while (p > left)
    		{
    			*p = *(p - 1);
    			p--;
    		}
    		*left = tmp;
    		steps--;
    	}
    }
    int main()
    {
    	char a[] = "abcdefghi";
    	RightLoopMove(a, 2);
    	printf("%s\n", a);
    	system("pause");
    	return 0;
    }

    方法三:运用库函数strcpy,此方法也很简便。

    实现代码如下:

    #include<stdio.h>  
    #include<string.h>  
    #include<assert.h>   
    #define MAX_LEN 20  
    #pragma warning(disable:4996)
    void RightLoopMove(char *pStr, unsigned short steps)
    {
    	assert(pStr);
    	char arr[MAX_LEN] = { 0 };
    	int n = strlen(pStr) - steps;
    	strcpy(arr, pStr + n);     //需要移位的字符拷给arr  
    	strcpy(arr + steps, pStr);   //再把剩下的字符拷给arr  
    	*(arr + strlen(pStr)) = '\0';   //上一步会多拷steps个字符,加\0的同时也解决了这个问题。  
    	strcpy(pStr, arr);       //arr里的字符拷给源串  
    }
    int main()
    {
    	char arr[] = "abcdefghi";
    	RightLoopMove(arr, 2);  //测试右移两位  
    	printf("%s", arr);
    	getchar();
    	return 0;
    }






    展开全文
  • // 请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg” // 函数原型为:void RightLoopMove(char *pstr,unsigned short steps) #include #include #include void severse(char *p,...
    // 请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”
    // 函数原型为:void RightLoopMove(char *pstr,unsigned short steps)
    #include <stdio.h>
    #include <assert.h>
    #include <string.h>
    void severse(char *p,char *q)       //字符串翻转
    {
    	char temp;
    	assert(p);
    	assert(q);
    	while(p<q)
    	{
    		temp=*p;
    		*p=*q;
    		*q=temp;
    		p++;
    		q--;
    	}
    }
    void RightLoopMove(char *pstr,unsigned short steps)
    {
    	int len=strlen(pstr);
    	severse(pstr,pstr+len-steps-1);       //前部分翻转
    	severse(pstr+len-steps,pstr+len-1);   //后部分翻转
    	severse(pstr,pstr+len-1);             //整体翻转
    }
    int main()
    {
    	char arr[]="abcdefghi";
    	RightLoopMove(arr,2);
    	printf("%s\n",arr);
    	return 0;
    }


    
    展开全文
  • 题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置。 函数接口定义: int ArrayShift( int a[], int n, int m ); 其中a[]是用户传入的数组;n是...
  • PTA 数组循环右移函数

    千次阅读 2019-02-23 17:08:08
    本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(&gt;0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0a1⋯a​n−1)变换为(an−m⋯a​n−1a​0a1⋯an−m−1)(最后m个...
  • 编写一个函数,作用是把一个 char 组成的字符串循环右移 n 个。比如原来是“abcdefghi” 如果 n=2,移位后应该是“hiabcdefgh” 函数头是这样的: //pStr 是指向以'\0'结尾的字符串的指针 //steps 是要求移动...
  • 循环右移函数

    2011-06-29 11:48:00
    #include 2 #define rotl(x,n) ((((x)>(32-(n)))&((1 3 int main(void){ 4 unsigned int i = 0xabc; 5 printf("%lx/n",i); 6 i = rotl(i, 2); 7 printf("%
  • 字符串循环右移

    2014-12-13 12:59:41
    字符串循环右移函数的实现已经有很多种方法了,我最近在做这道题的时候想到了一种暴力移位方法,思路很简单: 从最后一位字符往前交换移动,移至最左位,以此类推,循环就可以解决循环右移多位字符的方法 比如:...
  • 问题编写一个函数,作用是把一个 char 组成的字符串循环右移 n 个。比如原来是“abcdefghi”,如果 n=2,移位后应该是“hiabcdefgh“。 函数头是这样的: //pStr : 指向以’\0’结尾的字符串的指针 //steps: ...
  • 字符串循环右移n位,函数

    千次阅读 2014-11-15 10:40:24
    编写一个函数,作用是把一个 char 组成的字符串循环右移 n 个。比如原来是“abcdefghi” 如果 n=2,移位后应该是“hiabcdefgh” 函数头是这样的: //pStr 是指向以'\0'结尾的字符串的指针 //steps 是要求移动...
  • 本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a​0​​ a​1​​ ⋯a​n−1)变换为(a​n−m⋯a​n−1​​ a0a1⋯an−...
  • 循环右移

    2017-07-04 00:12:59
    编写一个函数,把一个char组成的字符串循环右移n位。 编写一个函数,把一个char组成的字符串循环右移n位。例如,原来是“abcdefghi”,如果 n=2,移位后应该是“hiabcdefgh”。 函数原型如下: //pStr...
  • right(unsigned value, int n) /*自定义循环右移函数*/ { unsigned z; z = (value >> n) | (value (16-n)); /*循环右移的实现过程*/ return (z); } left(unsigned value, int n) /*自定义...
  • 本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a​0​​a​1​​⋯a​n−1​​)变换为(a​n−m​​⋯a​n−1​​a​0...
  • 字符串右移函数

    2015-06-28 00:34:05
    编写一个函数,作用是把一个 char 组成的字符串循环右移 n 个。比如原来是“abcdefghi” 如果 n=2,移位后应该是“hiabcdefgh”  分析:将字符串相加如:abcdefghi----》abcdefghiabcdefghi。这样可以解决右移...
  • 数组循环右移

    2021-04-05 21:48:05
    本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据最后m个数循环移至最前面的m个位置。 函数接口定义: int ArrayShift( int a...
  • reverse函数功能是逆序(或反转),多用于字符串、数组、容器。 头文件为 #include<algorithm> reverse函数用于反转在[first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素),reverse函数无...
  • #include #include #include .../*编写循环函数,使一个字符串循环右移n个字符*/ using namespace std; void LoopMove1(char *str,int n) { char *p=str; char temp[MAXLEN]; int len=strlen(str);
  • 循环移位直接可用的函数循环右移、循环左移) 整体代码 本文的小技巧 实现对一个无符号数的循环左移和循环右移 循环移位直接可用的函数循环右移、循环左移) //val表示需要移位的数 n表示移位位数 //字节...
  • PAT 乙级 1008 数组循环右移 处理循环右移的套路 ...// PAT 乙级 1008 数组循环右移.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <algorithm> #inclu

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,200
精华内容 14,480
关键字:

循环右移函数