输入一个字符串和一个非负整数N,要求将字符串循环左移N次。
输入格式:
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。
输出格式:
在一行中输出循环左移N次后的字符串。
样例:">样例:">样例:">输入样例:
Hello World!
2
输出样例:
llo World!He
解题思想:本题和我之前写过的一篇“数组元素循环右移问题”博客有异曲同工之妙,分析思想都是类似的,一个左移一个右移。 本题是要求左移,所以需要将最左边的元素保存下来,因为左移的时候最左边的元素会被替换掉丢失,然后将其余元素依次右边的替换掉左边的,最后将最右边的元素用刚刚保存的最左边的元素补上,就可以实现左移效果。其他请看代码。
#include<stdio.h>
#include<string.h>
int main()
{
char a[200],k;
int n,len,i,j;
//这里为什么要用到gets函数,要比scanf简洁方便好用
gets(a);
scanf("%d",&n);
len=strlen(a);
for(i=0;i<n;i++)//外层循环记录左移的位数
{
k=a[0];//k用来存储最左边的元素
for(j=0;j<len-1;j++)//里层循环表示每次移动的次数
{
a[j]=a[j+1];
}
a[len-1]=k;
}
puts(a);
return 0;
}