(新手求助)大佬们帮忙看看代码是哪里有问题
将一个字符串循环向右移M(M>=0)个字符位置,即将字符串A中的数据由(A0 A1……AN-1)变换为(AN-M …… AN-1 A0 A1……AN-M-1)(N是字符串的长度,最后M个数循环移至最前面的M个位置)。输入
每个输入包含一个测试用例,第1行输入M(M>=0);第2行为输入字符串,长度不超过200。
输出
在一行中输出循环右移M位以后的字符串。
样例1
输入 输出
2
Hello World Here I Come meHello World Here I Co
提示
可以使用scanf读入整数,但不能使用scanf读入字符串,因为字符串中可能包含空格。可以使用fgets读入字符串,但要注意处理上一行末和本行末的的回车换行符。
(感觉自己的解法思路没啥问题,可是就是运行不出结果。)
程序代码:
#include <stdio.h> #include <string.h> int main(void) { int n,len,i,j; scanf("%s\n",&n); char str1[199]; fgets(str1,199,stdin); len = strlen(str1); str1[len + n]=str1[199]; char b[len+n]; for(i=0;i<len;i++) { b[i]=str1[i]; }//遍历数组 for(j=len-2;j>=0;j--) { b[j+n]=str1[j]; }//整体往右移n位 while(n--) { b[n-1]=b[len-2+n]; }//将最后的n位移到前面去 printf("%s",b); return 0; }