12.13 分步操作来进行循环后移

发布于 2024-12-13  88 次阅读


遇到字符串处理的问题,得先想清楚处理步骤

让每一步的for循环int i的初始化值和限制条件都成为需要处理的数组下标(只用<=或者>=)

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

int main() {
	char str[100];
	scanf("%s", &str);
	int n;
	scanf("%d", &n);
	char temp[100];
	int len = strlen(str);
	int t = 0;
	for (int i = len - n; i <= len - 1; i++) {
		temp[t] = str[i];
		t++;
	}
	for (int i = len-n-1; i>=0; i--) {
		str[i + n] = str[i];
	}
	for (int i = 0; i <= n - 1; i++) {
		str[i] = temp[i];
	}
	printf("%s", str);
	return 0;
}

int len = strlen(str);

要移到最前方的数组下标,也就是【len-n,len-1】

要向右移动的数组下标(从倒数开始,避免数组越界),也即len-n-1->0

要将【len-n,len-1】拷贝过来的数组下标,为【0,n-1】

如此便非常明确了


届ける言葉を今は育ててる
最后更新于 2024-12-13