黑马程序员技术交流社区

标题: 字符串循环右移 [打印本页]

作者: talent123    时间: 2015-6-4 09:02
标题: 字符串循环右移
最近在别的书上找到一题:题目内容:
输入一个字符串和一个非负整数N,要求将字符串循环右移N次。

输入格式:
输入在第1行中给出一个字符串,以'#'表示结束,‘#’不是字符串的一部分,字符串的长度未知,但至少有一个字符;输入的第2行给出非负整数N。

输出格式:
在一行中输出循环右移N次后的字符串。

输入样例:
Hello World!#
2
输出样例:
d!Hello Worl

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(){
  4.         char str[10000];
  5.         gets(str);
  6.         printf("%d\n", strlen(str));
  7.         char *head, *p, *t;
  8.         head = p = str;
  9.         int number;
  10.         scanf("%d", &number);
  11.         t = p = p + (strlen(str) - number - 1);
  12.        
  13.         while (*p != '#'){
  14.                 printf("%c", *p);
  15.                 p++;
  16.         }
  17.         while (head != t){
  18.                 printf("%c", *head);
  19.                 head++;
  20.         }
  21.        
  22.         return 0;
  23. }
复制代码


我总感觉做的有点麻烦,大家给看看有没有什么优化的地方?或者你们有什么思路
作者: 晗修    时间: 2015-6-4 10:56
输入数字要取模 不然输入数字大于字符串长度这个程序就输出错误了,输出可以像这样循环也可以再复制一个这个字符串连接起来然后截取输出
作者: 等风继续吹    时间: 2015-6-4 20:16
受教了      ,            
作者: talent123    时间: 2015-6-5 23:42
晗修 发表于 2015-6-4 10:56
输入数字要取模 不然输入数字大于字符串长度这个程序就输出错误了,输出可以像这样循环也可以再复制一个这 ...

所以偷偷写了个10000
想来应该不会超过10000的
感觉有些浪费资源= =!
作者: tabor    时间: 2015-6-10 12:59
又是初始化的问题。。。。
作者: 这是829    时间: 2015-6-11 22:11
围观学习啦,大家努力!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2