7-31 字符串循环左移
题目问题描述:
输入一个字符串和一个非负整数N,要求将字符串循环左移N次。
输入格式:
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。
输出格式:
在一行中输出循环左移N次后的字符串。
输入样例:
Hello World!
2
输出样例:
llo World!He
思路分析:
注意:
- 关键点:找到字符串长度;
- 先左移一位(写出内循环);
- 再左移N位,写出外循环;----->先左移在循环
实现代码:
#include<stdio.h>
#include<string.h>
int main(){
int N;
int i;
int len; //字符串长度
char a[101];
char temp[101];
gets(a); //gets函数获取字符串,以回车结束
len = strlen(a);//获取字符串长度;
scanf("%d",&N);
for(int j = 0;j < N;j++){//外循环:左移K次
temp[j] = a[0]; //内层循环:每次保存首位元素,依次将后数向前覆盖
for(i = 0; i < len;i++){
a[i] = a[i+1];
}
if(i == len) //覆盖完一次将首位存到末尾
a[len-1] = temp[j];
}
printf("%s",a);
}