正文

循环移位2008-03-23 13:28:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/zhaoyg/33525.html

分享到:

/*
题目描述:
给你一个字符串"abcdefg",循环左移两位得到"cdefgab",
循环右移两位得到"fgabcde"

输入:
多组测试数据,每组一行,第一个是int范围内的整数n,
表示要右移的位数,如果n是负数则表示要左移。接着后面
是一个串长小于10000000的字符串。
最后遇到EOF标志的时候结束。

输出:
输出移位后的字符串

样例输入:
2 abcdefg
-2 abcdefg

样例输出:
fgabcde
cdefgab

难度:for beginner
*/

#include <stdio.h>
#include <string.h>
#define MAX 10000000

char ch[MAX];
char *point;

int main()
{
    int n;

    while (scanf("%d %s",&n,ch)!=EOF)
 {
  point=ch;
  //getchar();

  if(n<0)
  {
     n=(-1*n)%strlen(ch);
     point+=n;
     printf("%s",point);
     *point='\0';
     printf("%s\n",ch);    
  }
  else
  {
     n=n%strlen(ch);
    
     while (*(point+n))
     {
      point++;
     }
       
     printf("%s",point);
       
     *point='\0';
       
     while (point!=ch)
     {
      point--;
     }
        printf("%s\n",point);
  }
 }

    return 0; 
}

阅读(2493) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册