![]() |
#2
rjsp2020-12-15 09:29
|
输入
每个输入包含一个测试用例,第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;
}
#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;
}