字符串循環(huán)左移 C語(yǔ)言,移動(dòng)字符串?
C語(yǔ)言,移動(dòng)字符串?C語(yǔ)言字符串移動(dòng)輸入一個(gè)字符串和一個(gè)非負(fù)整數(shù)n,要求字符串循環(huán)向左移動(dòng)n次。輸入格式:輸入長(zhǎng)度不超過(guò)100個(gè)字符的非空字符串,第一行以回車(chē)結(jié)束;第二行給出非負(fù)整數(shù)n。輸出格式:在一
C語(yǔ)言,移動(dòng)字符串?
C語(yǔ)言字符串移動(dòng)
輸入一個(gè)字符串和一個(gè)非負(fù)整數(shù)n,要求字符串循環(huán)向左移動(dòng)n次。
輸入格式:
輸入長(zhǎng)度不超過(guò)100個(gè)字符的非空字符串,第一行以回車(chē)結(jié)束;第二行給出非負(fù)整數(shù)n。
輸出格式:
在一行中左移n次后輸出字符串。
輸入示例:
你好,世界
!2
輸出示例:
世界!他
在PTA上運(yùn)行以下代碼,邊界測(cè)試的結(jié)果表明運(yùn)行時(shí)有錯(cuò)誤
#include<stdio。H>
#包含<string。H>
int main()
{
char a[100],change
int i,J,CNT,n
]獲?。╝)
scanf(%d“,&;amp;n)
CNT=strlen(a)
(J=0j<nj)
{
change=a[0
]for(i=0i<cnt-1i)
{
a[i]=a[i 1
]}
a[i]=change
}
puts(a)
return 0
}
int strlshif1(char*s,int n){int len strlen n(s)n=n%lenreverse(s,0,n-1)reverse(s,0,len-1)return 0}
如何將一個(gè)字符串按bit位左移(右移)N位?
1. 左移運(yùn)算符(Shift left operator)(<<):將二進(jìn)制形式的所有數(shù)字向左移動(dòng)相應(yīng)的數(shù)字,將高位移出(丟棄),并用零填充低位。格式:數(shù)字需要移位的次數(shù),例如:3<<;LT2 3轉(zhuǎn)換為二進(jìn)制0011,所有數(shù)字左移2位,空格用0填充得到1100,即十進(jìn)制數(shù)12。2右移運(yùn)算符(>>):根據(jù)二進(jìn)制將所有數(shù)字向右移動(dòng),移動(dòng)相應(yīng)的移位數(shù)字,將低位數(shù)字移出(放棄),并用符號(hào)數(shù)字填充高位數(shù)字(0表示正數(shù),1表示負(fù)數(shù))。格式:要移動(dòng)的次數(shù)。例如:11>>;2,11的二進(jìn)制是1011,所有數(shù)字都向右移動(dòng)2個(gè)位置。因?yàn)?1是一個(gè)正數(shù),高位被0補(bǔ)充得到0010,這是一個(gè)十進(jìn)制2。