字符串循环左移 详解

题目描述

输入一个字符串和一个非负整数N,要求将字符串循环左移N次。

输入格式:

输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。

输出格式:

在一行中输出循环左移N次后的字符串。

输入样例:

Hello World!
2

输出样例:

llo World!He

思路分析

在学习计算机的时候,我们经常讲到计算思维,就是说从计算机的视角去思考问题。

回到这道题,移动字符串,人的视角就是直接搬动,计算机不行,计算机的程序都是一步一步来的,要让计算机做事情,就必须把每一步怎么做告诉它,而且要讲的非常具体。

在人看来,字符串移动一次就是搬动一个字符,那么如何搬动一个字符,数组是连续存储的单元,要动一个的位置,就对所有人下手,于是我们先用一个变量先把第一个数组元素的值保存下来,然后,用一个循环将每一个的元素值往前推,完了之后,再让最后一个元素的值为先前第一个元素的值,思路是这样。

实际上操作起来时,由于字符串最后一个元素是字符串结束符\0,搬动时,它也会跑,因此我们要把它的位置挪回来。

AC代码

#include<stdio.h>
int main()
{
	char s[101],temp;
	int i,n;
	gets(s);
	scanf("%d",&n);
	while(n--)
	{
		temp=s[0];
		for(i=0;s[i];i++)
		s[i]=s[i+1];
		s[i--]='\0';
		s[i]=temp;
	}
	printf("%s",s);
}

猜你喜欢

转载自blog.csdn.net/weixin_62264287/article/details/123610996
今日推荐