zoukankan      html  css  js  c++  java
  • 5-31 字符串循环左移

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

    输入格式:

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

    输出格式:

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

    输入样例:

    Hello World!
    2
    

    输出样例:

    llo World!He
    

    解题思路:

    利用 C 语言本身提供的字符串处理函数能更方便地解题。

    循环左移有有个特点,当要移动的长度等于字符串有效长度或其倍数时,左移后字符串还会是原样。因此程序首先对要移动的次数对有效长度取余。

    再利用 strcpy,strcat 来产生目标字符串。具体如算法所示。

    解题代码:

    #include<stdio.h>
    #include<string.h>
    
    int main ()
    {
    	char s[101];
    	gets (s);
    	
    	int N;
    	scanf("%d", &N);
    	
    	int s_length = strlen (s);
    	int i = N % s_length;
    	char target[101];
    	
    	if (i != 0) {
    		strcpy (target, s + i);
    		s[i] = ''; //复制之后,调整字符串 s 的最终位置 (i 之后的字符已经复制给 target) 
    		strcat (target, s);	
    		puts (target);	
    	} else {
    		puts (s); //左移次数是字符串有效长度的倍数,直接输出原字符 
    	}
    	
    	return 0; 
    }
  • 相关阅读:
    vscode设置js文件自动格式化单引号
    解决git每次输入账号密码问题
    vscode设置vouter标签不换行
    查看修改npm地址并登录
    正则匹配[]外部的内容
    使用v-model实现父子组件之间传值
    发布网站
    安装IIS
    IIS服务添加角色
    react生命周期
  • 原文地址:https://www.cnblogs.com/andywenzhi/p/5738587.html
Copyright © 2011-2022 走看看