输入一个字符串和一个非负整数 N,要求将字符串循环左移 N 次。
输入格式:
输入在第 1 行中给出一个不超过 100 个字符长度的、以回车结束的非空字符串;第 2 行给出非负整数 N。
输出格式:
在一行中输出循环左移 N 次后的字符串。
输入样例:
Hello World!
2
结尾无空行
输出样例:
llo World!He
结尾无空行
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/14/exam/problems/811
提交:
题解:
#include<stdio.h>
#include<string.h>
int main() {
char str[101];
gets(str);
int N;
scanf("%d", &N);
int len = (int) strlen(str);
// 避免 N 过大时重复移动
N %= len;
// 拷贝 str 到 tmp 中
char tmp[101];
strcpy(tmp, str);
// 先拷贝 tmp 的后半段字符到 str 中
for (int i = N; i < len; i++) {
str[i - N] = tmp[i];
}
// 再拷贝 tmp 的前半段字符到 str 中
for (int i = 0; i < N; i++) {
str[len - N + i] = tmp[i];
}
puts(str);
return 0;
}