字符串的简单应用

旋转单词

题目描述:今天的英语课,王老师为了复习以前学过的单词,提高学生的学习兴趣,想出了一个主意:
读入M组数据,其中每组数据有一个单词L(单词长度≤36个字符)和一个整数N(1≤N≤36),从该单词最末位开始逐位移到单词的开头,如果还没达到N值,则再从末位开始移动,直到达N值为止,求移N位后的新单词。你能编程帮助贝贝最快完成任务吗?
输入共有2×M+I行,第1行为M,第2行开始为具体数据,每一组数据有2行,第1行字串L,第2行为N。
输出共M行,每行为旋转后的字串。
样例输入:
1
computer
3
样例输出:
tercompu
应用char类型的字符串写会简单一点,但新建字符串的时候不能直接把原来的右移再粘到前面,因为强制’\0’终止的话可能导致编译错误。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,i,k,len;
    char a[37],b[37];
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s",a);
        len=strlen(a);
        scanf("%d",&k);
        while(1)
        {
            if(k<len) break;
            else k=k-len;//去掉不必要的移动,节约时间
        }
        for(i=0;i<len;i++)
        {
            if(i+k<len)
            b[i+k]=a[i];//在范围内,直接移动
            else
            {
                b[i+k-len]=a[i];//不在范围内,放到前面
            }
        }
        b[len]='\0';//不要忘记终止
        printf("%s\n",b);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/soul_mingling/article/details/87915352