题目描述:
给你一个字符串"abcdefg",循环左移两位得到"cdefgab",
循环右移两位得到"fgabcde"
输入:
多组测试数据,每组一行,第一个是int范围内的整数n,
表示要右移的位数,如果n是负数则表示要左移。接着后面
是一个串长小于10000000的字符串。
最后遇到EOF标志的时候结束。
输出:
输出移位后的字符串
样例输入:
2 abcdefg
-2 abcdefg
样例输出:
fgabcde
cdefgab
难度:for beginner
#include<stdio.h>
#include<stdlib.h>
void left_move(char str[],int m)
{
int i;
char temp;
temp=str[0];
for(i=0;i<m-1;i++)
str[i]=str[i+1];
str[i]=temp;
str[m]='\0';
}
void right_move(char str[],int m)
{
int i;
char temp;
temp=str[m-1];
for(i=m-1;i>=0;i--)
str=str[i-1];
str[0]=temp;
str[m]='\0';
}
int main(){
int n,i,len=0;
char str[129];
printf("input \"leftnumber<<string\"\n");
fscanf(stdin,"%d %s",&n,str);
while(str[len]!='\0') ++len;
n=n%len;
if(n<0){
n=-n;
for(i=1;i<=n;i++)
left_move(str,len);
}
else if(n>0){
for(i=1;i<=n;i++)
right_move(str,len);
}
else
printf("%s\n",str);
printf("%s\n",str);
system("pause");
return 0;
}


