C語言:字串迴圈右移
編寫一個程式,作用是把一個字串從末尾開始迴圈右移n個,如"abcdef",n=3,則輸出'defabc";"12345",n=2,則輸出"45123";
思路:用迴圈,每次都把最後一個字元元素挪到首元素的位子,其餘元素位子後移一個,共n次。
void main() {int len,i,n; char a[80]; printf("please input an integer and a string\n"); scanf("%d%s",&n,a); len=strlen(a)-1; while(n--) {char c=a[len]; for(i=len;i>0;i--) a[i]=a[i-1]; a[0]=c;} printf("%s",a); }
總結:主要是迴圈,while迴圈共n次,先把尾元素a[len]保留下來賦值給c;再用一個內迴圈for()把所有元素後移一,空出來的a[0]用c補。
我最先想到的方法是用兩個並列的for()語句:一個操作後n個元素使其左移到相應位子,一個操作其餘元素使其右移到相應位子,然後賦值給新定義的陣列b,輸出b。
可是存在一個有亂碼字尾的問題,
因為是字串,所以會有'\0'的存在,不知道怎麼處理?求指教。
相關推薦
C語言:字串迴圈右移
編寫一個程式,作用是把一個字串從末尾開始迴圈右移n個,如"abcdef",n=3,則輸出'defabc";"12345",n=2,則輸出"45123"; 思路:用迴圈,每次都把最後一個字元元素挪到首元素的位子,其餘元素位子後移一個,共n次。 void main() {
C語言實現字串迴圈左移和右移
C語言實現迴圈左移和右移這個沒有什麼好說的,直接上程式碼:#include <stdio.h> //寫一個函式 實現功能:輸入字串,向右迴圈或者逆時針移動N位元組,再輸出這個字串 /* //比如:左移2位元組 //左邊不變,右邊變 p[0
C語言:字串逆置(迴圈法,遞迴寫法)
環境:Windows8,Visual Studio 2013 語言:C語言 字串逆置: 將一個一直字串的順序逆序排放保存於同一個空間內,長度,記憶體地址均不改變 方法一:
字串迴圈右移c實現
一個長度為len的字串,對其迴圈右移n位 [期望] char str[] = "abcdefg"; 右移3次後,變成"efgabcd" [思路] 思路1. 如果用每移動一次,就要把整個字串整體移動一次的方法,顯得太費勁了。 我們可以用空間換時間,通過記憶體拷貝來實現。 需要新申請一塊相同大小的記憶體,把
編寫一個函式,作用是把一個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
C語言:字串處理類函式
strlen() 求字串的實際長度(不包括'\0') strcpy() char *strcpy(char* dest, const char *src); strcpy(目標串,源串); strcp
【練習題】編寫一個函式,把一個char組成的字串迴圈右移n位
例如:原來是”abcdefghi”,如果n = 2,移位後應該是”hiabcdefg”。 思路:當讀到這個題目的時候,沒有編寫過類似程式的人可能會想,程式的實現就是依照字元的迴圈右移這樣實現的,但仔細想會發現這樣很難實現,不妨換一種思路,我們先把需要移到前面的字元取出來放進
C++ 1008 陣列元素迴圈右移問題 (20)(20 分)
思路: 在輸入的時候就判斷移動之後每個元素的位置,直接輸入到指定位置之後輸出。 位置變換對應關係: 初始 變化後 0 N-M 1 N-M+1 2 N-M+2 ... ... M-1 N-1 ----------------
字串迴圈右移的一道題目
void * loopmove_3(char *pstr, int steps) { int n = strlen(pstr);//不包含\0 steps %= n;//移動的步數 n -= s
【C/C++】陣列元素迴圈右移問題
自測-3 陣列元素迴圈右移問題(20 分) 一個數組A中存有N(>0)個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向右移M(≥0)個位置,即將A中的資料由(A0A1⋯AN−1)變換為(AN−M⋯AN−1A0A1
把一個char組成的字串迴圈右移n位
void LoopMove(char *pStr, int steps) { int n = strlen(pStr) - steps; char temp[MAX_LEN]; strcpy(temp, pStr + n); strcpy(temp + steps,
實現字串迴圈右移n 位與左移n位(建立陣列)
編寫一個函式,作用是把一個 char 組成的字串迴圈 右移 n 個。 比如原來是“abcdefghi” 如果 n=2,移位後應該是“hiabcdefgh” 左移n個 比如原來是“abcdefghi
C語言實現陣列的迴圈右移
#include <stdio.h> #include <stdlib.h> #define N 100 int main() { int i, j, x[N], a, b; printf("請輸入你想右移的數字
PTA-陣列元素迴圈右移問題(C語言)
輸出格式: 在一行中輸出迴圈右移M位以後的整數序列,之間用空格分隔,序列結尾不能有多餘空格。 輸入樣例: 6 2 1 2 3 4 5 6 輸出樣例: 5 6 1 2 3 4 做這個題我覺得還是摳字眼三個字比較重要,比如說不許另加陣列,但是可以把一個數組做的空間大一些就可以簡單轉移了;0
PAT 乙級 1008陣列元素迴圈右移問題 C語言
1008. 陣列元素迴圈右移問題 (20) 題目: 一個數組A中存有N(N>0)個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向右移M(M>=0)個位置,即將A中的資料由(A0 A
C語言正數和負數迴圈右移,左移,把某正數的第m位(從0開始)到n位取反
問題:從鍵盤輸入一個整型數(int型),然後再輸入一個正整數m,把第一個數迴圈右移m位後輸出; int型別佔用32位。第一位為符號位,1則為負數,0為正數。 >>往右移動,右邊的丟棄,如果是正數,則左邊補0,如果是負數則補1. <<往左移動,每次移動
(PAT乙級)1008 陣列元素迴圈右移問題(C語言實現)
總結:1、思路:定義陣列空間時大一些,將前(N-M)個數移到N個數後。即利用本陣列多餘的空間來儲存數字,也相當於構建了 另一個數組的作用。 2、坑點:不要想當然地認為N>M,所以在M>N時需要對M進行處
PAT Basic 1008. 陣列元素迴圈右移問題 (20)(C語言實現)
, CSDN內容暫時不更新(將來有計劃更新), 請前往連結檢視最新內容. 歡迎star 我的repo題目一個數組A中存有N(N>0)個整數,在不允許使用另外陣列的前提下,將每個
C語言實現按位迴圈左移和迴圈右移
ror eax,cl ==> eax=(eax>>cl)+(eax<<(sizeof(eax)-cl));rol eax,cl ==> eax=(eax<<cl)+(eax
c語言用for迴圈輸入字串
#include<stdio.h> #include<string.h> int main(){ char a[3][10]={"abc"}; char b[10]; &