1. 程式人生 > >【練習題】編寫一個函式,把一個char組成的字串迴圈右移n位

【練習題】編寫一個函式,把一個char組成的字串迴圈右移n位

例如:原來是”abcdefghi”,如果n = 2,移位後應該是”hiabcdefg”。

思路:當讀到這個題目的時候,沒有編寫過類似程式的人可能會想,程式的實現就是依照字元的迴圈右移這樣實現的,但仔細想會發現這樣很難實現,不妨換一種思路,我們先把需要移到前面的字元取出來放進一個新的字元陣列,接著再把前面的沒有移動的部分插到新字元陣列的尾部,加上字串結束標誌‘\0’,這樣就形成了一個符合要求的新的字元陣列,把它輸出來就可以了.

解析:本題提供了兩種方法。

#include <stdio.h>  
#include <string.h>  
#define MAX_LEN 1024  
  
void LoopMove_1(char *pStr, int steps)  
{  
    int len = strlen(pStr) - steps;  
    char temp[MAX_LEN];  
  
    strcpy(temp, pStr + len);  
    strcpy(temp + steps, pStr);  
    *(temp + steps + len) = '\0';  
    strcpy(pStr, temp);  
}  
  
void LoopMove_2(char *pStr, int steps)  
{  
    int len = strlen(pStr) - steps;  
    char temp[MAX_LEN];  
  
    memcpy(temp, pStr + len, steps);  
    memcpy(temp + steps, pStr, len);  
    memcpy(pStr, temp, len + steps);  
}  
  
int main(void)  
{  
    char str1[] = "abcdefghi";  
    LoopMove_1(str1, 3);  
    printf("%s\n", str1);  
  
    char str2[] = "gklmnopqrst";  
    LoopMove_2(str2, 3);  
    printf("%s\n", str2);  
    return 0;  
}


相關推薦

練習題編寫一個函式一個char組成字串迴圈n

例如:原來是”abcdefghi”,如果n = 2,移位後應該是”hiabcdefg”。 思路:當讀到這個題目的時候,沒有編寫過類似程式的人可能會想,程式的實現就是依照字元的迴圈右移這樣實現的,但仔細想會發現這樣很難實現,不妨換一種思路,我們先把需要移到前面的字元取出來放進

一個char組成字串迴圈n

void LoopMove(char *pStr, int steps) { int n = strlen(pStr) - steps; char temp[MAX_LEN]; strcpy(temp, pStr + n); strcpy(temp + steps,

編寫一個函式作用是一個char組成字串迴圈n個。比如原來是“abcdefghi”如果n=2移位後應該是“hiabcdefg” 函式頭是這樣的:

void Loopover(char *str,int steps){int len=strlen(str);char tmp[len+3];strcpy(tmp,str+len-steps);strcpy(tmp+2,str);tmp[len]='\0';strcpy(st

實現一個函式一個字串中的字元從小寫轉為大寫。

#include <stdio.h> #include <stdlib.h> #include <conio.h> void upper(char* s, char* us) { while(*s != '\0')

實現一個函式一個字串轉換成整數

作者:翁鬆秀 劍指offer之“把一個字串轉換成整數” 很多人看到這麼簡單的面試題目,都是大筆一揮,立馬寫下洋洋灑灑函式: int StringToInt(char* string){ int num = 0; while(*str

練習題編寫一個名為is_palindrome的函式判斷一個人名是否為迴文如‘BOB’是迴文

#編寫一個名為is_palindrome的函式,判斷一個人名是否為迴文,如‘BOB’是迴文 #方法一: def is_palindrome(name): low = 0 high =

c語言字串替換空格:請實現一個函式字串中的每個空格替換成“%20”

// 字串替換空格:請實現一個函式,把字串中的每個空格替換成“%20”。 // 例如輸入“we are happy.”,則輸出“we%20are%20happy.” #include <stdio.h> #include <assert.h>

我的演算法日記請實現一個函式字串中的每個空格替換成“%20”。例如輸入“We are happy.”則輸出“We%20are%20happy.”。

請實現一個函式,把字串中的每個空格替換成“%20”。例如輸入“We are happy.”,則輸出“We%20are%20happy.”。在劍指offer中有這樣一道題目,我已經既不清楚了,我記得該題好像不準使用輔助空間,需要在遠字串上進行操作,如果在java中,直接用re

C語言編寫一個函式一個數字字串轉換成這個字串對應的數字(包括正浮點數、負浮點數)

//編寫一個函式,將一個數字字串轉換成這個字串對應的數字(包括正浮點數、負浮點數) //例如:“12.34“ 返回12.34. " -12.34" 返回12.34 #include<

劍指offer請實現一個函式一個字串中的每個空格替換

劍指offer 題目如下 請實現一個函式,將一個字串中的每個空格替換成"%20"。 例如,當字串為We Are Happy, 則經過替換後的字串為 We%20Are%20Happy。 具體的程式碼實現如下 1.遍歷實現 public class Solution {

練習題編寫打印出一個單鏈表的所有元素的程式連結串列

只是實現了連結串列ADT的部分功能。 /*---編寫打印出一個單鏈表的所有元素的程式---*/ #include <stdio.h> #include <stdlib.h> struct Node{ int val; struct Node *

廖雪峰 python教程 課後題改編利用map()函式使用者輸入的不規範的英文名字變為首字母大寫其他小寫的規範名字

原題目: # -*- coding: utf-8 -*- #輸入名字,變成首字母大寫,其他字母小寫的標準格式 def normalize(name): str1 = '' for i, ch in enumerate(name): if i

練習題第二章--變數表示式語句(Think Python)

一些比較特殊的用法: 不過+和*可以用在字串上面。 +加號的意思就是字串拼接了,會把兩個字串拼到一起,如下所示: >>> first = 'throat' >>> second = 'warbler' >>> first + s

提醒家譜鏈GCS一個以區塊鏈概念包裝的傳銷幣!

比特幣及各種山寨幣經過2017年瘋狂的暴漲,數字貨幣動輒幾十倍上百倍的暴富效應,吸引了大量普通人開始關注數字貨幣和區塊鏈,市場上於是出現了各種區塊鏈、數字貨幣、虛擬貨幣投資為名,行非法集資或網路傳銷之實的案例。 家譜鏈GCS,又一個以區塊鏈概念包裝的傳銷幣! 一、專案方相關成員造假 官網顯示,“京東集團

請實現一個函式字串中的每個空格替換成“%20”例如輸入 “We are Happly。” 則輸出“we%20are%20happy。”

請實現一個函式,把字串中的每個空格替換成“%20”,例如輸入 “We are Happly。”  則輸出“we%20are%20happy。” void ReplaceBlank(char String[],int length) {  //originalLength

.編寫一個函式一個數字字串轉換成該字串對應的數字

/* 編寫一個函式,將一個數字字串轉換成該字串對應的數字(包括正整數、負整數) 例如:“12“ 返回12 “-123“ 返回-123 函式原型:int my_atof(char *str){

字串替換空格:請實現一個函式字元陣列中的每個空格替換成“%20”

例如輸入“we are happy”,則輸出“we%20are%20happy” 想要實現這個目的,先觀察下面的函式實現原理圖。 先通過遍歷字元陣列,找出其中的空格數,計算出應該移動到的位置,接著就