精华内容
下载资源
问答
  • 有1到100共100个数, 从1开始, 每隔1, 2, 3, 4 ... 个数拿走一个数, 一直循环, 最后剩下几? 就是说, 一开始把 1 拿走, 隔1个数(2), 把3拿走, 再隔2个数(4, 5), 把6拿走, 再隔3个数(7, 8, 9)把10拿走. 到100之后再...
  • 每隔2个数删除一个数的删问题

    千次阅读 2018-11-21 20:22:51
    问题:有一数组a[N]顺序存放0~N-1,要求每隔个数删掉一个数,到末尾时循环至开头继续进行,求最后一被删掉的的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)-&...

    问题:有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。

    输入:数组的长度,如8;输出:6

    下面是我的解决办法:

    说明:countDel用来算删除的数的个数;count用来计算两数的间隔;i 是遍历数组的游标; l(length)是数组的长度

    采用下标标记,将删除的数的下标赋值为-1,遍历数组,当遇到值非-1的就用count计数,count累计为3时,说明当前的这个下标对应的数应当被删除(对应的值置为-1),这时也要累计删除的个数countSize并将count清0。

    遍历数组时,当游标 i 等于数组长度时,模掉数组长度,如此循环,直到countDel=数组长度时,跳出遍历循环,返回的 i-1  就是最后一个被删除的数的下标。下面附上java的实现:
     

    import java.util.Scanner;
     
    /**
    * @author Administrator
    */
     
    public class CountIndex {
     
        public static void main(String[] args) {
     
          Scanner scanner = new Scanner(System.in);
     
          int length;
     
         while (scanner.hasNextInt()) {
     
                length = scanner.nextInt();
     
               int[] index = new int[length];
     
              System.out.println(coutIndex(length, index));
     
         }
     
    }
     
    public static int coutIndex(int l, int[] index) {
     
        int i = 0;
     
        int count = 0;
     
        int countDel = 0;
     
        while (true) {
     
            if (countDel == l) {
     
               return i - 1;
     
            }
     
           if (i == l) {
     
                i = i % l;
     
           }
     
          if (index[i] != -1) {
     
               count++;
     
          }
     
         if (count == 3) {
     
              count = 0;
     
              countDel++;
     
             index[i % l] = -1;
     
            }
     
         i++;
     
        }
     
      }
     
    }
    

     

    可以访问的我的简书删数问题 https://www.jianshu.com/p/cb545942ea4c
     
     

     

    转载自:https://blog.csdn.net/qq_16036809/article/details/52193675

     

     

     

     

    展开全文
  • 加一计时器——每个1s六位数码管显示数字加1,直到最大值是999999,之后回零 #include <reg52.h> #define uchar unsigned char #define uint unsigned int #define ulint unsigned long int sbit dula=P2^6; ...

    加一计时器

    2021-01-23,51单片机学习笔记

    每隔1s六位数码管显示数字加1,直至999999,之后归零,重新开始。

    在这里插入图片描述

    代码:
    
    #include <reg52.h>
    #define uchar unsigned char
    #define uint unsigned int
    #define ulint unsigned long int
    sbit dula=P2^6;
    sbit wela=P2^7;
    uint num,num_set,n;//中断计次num,中断次数预设,中断服务初始化参数n
    ulint disnum;
    //欲显示的数字,因其最大值为999999,已经超过uint的范围(0~65535),这里采用ulint
    
    uchar code table_du[]={
    0x3f,0x06,0x5b,0x4f,0x66,0x6d,
    0x7d,0x07,0x7f,0x6f,0x77,0x7c,
    0x39,0x5e,0x79,0x71};//六位共阴极8段数码管段显编码
    
    void display(ulint);//展示数字 声明
    void delayms(uint); //延时函数 声明
    
    void main()
    {
    	n=50000;
    	num_set=20;
    	
    	EA=1;
    	ET0=1;
    	TMOD=0x01;
    	TH0=(65536-n)/256; 
    	TL0=(65536-n)%256;
    	TR0=1;
    	while(1)
    	{	/**************************************************************************
    		此处,n=50000,num_set=20,时间间隔是:50000*1us*20=100ms=1s;
    		若要调整时间间隔,需要调整n和num_set,如:
    		(1)当n=50000,num_set=2时,时间间隔是:50000*1us*2=100ms=0.1s;
    		(2)当n=5000 ,num_set=2时,时间间隔是:5000 *1us*2=10ms=0.01s,
    		此时,同时需要将“if(num==num_set)”改为“if(num>=num_set)”,
    		否则数码管显示数字会出错!
    		
    		【出现错误的原因可能是:程序运行到此处时,中断服务响应次数已经超过预设值,
    		这当然会对数码管显示值的精度造成影响!而且这种误差还会随着时间累加。
    		这一点是此代码的缺陷。】
    		
    		同时,也要合理地调整延时函数的参数,以保证显示效果稳定。
    		如果延时时间不合理,就会造成显示时能够看出明显的闪烁。
    		
    		***************************************************************************/
    		if(num==num_set)//每间隔1s(=2*50ms),更新一次disnum
    		{
    			num=0;
    			if(disnum==1000000)//溢出回零
    			{
    			disnum=0;
    			}
    			disnum++;	
    		}
    		display(disnum);//显示当前数字
    	}
    }
    
    //中断服务程序
    void time0() interrupt 1 
    {
    	TH0=(65536-n)/256; 
    	TL0=(65536-n)%256;
    	num++;//记录中断次数
    	//晶振f=12MHz,震荡周期=1/12um,机器周期=1us
    	//n=50000时,单次中断服务耗时50ms(=50000*1us)
    }
    
    void display(ulint disnum)  
    {
    	uint ms;//延时函数参数
    	ms=1;
    	
    	if(disnum>=100000)//当欲显示数字大于 该位显示的最小值 时才点亮
    	{
    		P0=table_du[disnum/100000];//取十万位
    		dula=1;	
    		dula=0;//段显锁存
    		P0=0xfe;//11 11 1110 (对应LED1(第一位数码管);LED1~6自左到右分布)
    		//位显编码(六位共阴极8段数码管,由P0口低六位控制,低电平时相应位点亮)
    		wela=1;
    		wela=0;//位显锁存
    		delayms(ms);
    	}
    	
    	if(disnum>=10000)
    	{
    		P0=table_du[disnum%100000/10000];//取万位
    		dula=1;	
    		dula=0;
    		P0=0xfd;//11 11 1101 (对应LED2)
    		wela=1;
    		wela=0;
    		delayms(ms);
    	}	
    	
    	if(disnum>=1000)
    	{
    		P0=table_du[disnum%100000%10000/1000];//取千位
    		dula=1;	
    		dula=0;
    		P0=0xfb;//11 11 1011 (对应LED3)
    		wela=1;
    		wela=0;
    		delayms(ms);
    	}
    	
    	if(disnum>=100)
    	{
    		P0=table_du[disnum%100000%10000%1000/100];//取百位
    		dula=1;
    		dula=0;
    		P0=0xf7;//11 11 0111 (对应LED4)
    		wela=1;
    		wela=0;
    		delayms(ms);
    	}
    
    	if(disnum>=10)
    	{
    		P0=table_du[disnum%100000%10000%1000%100/10];//取十位
    		dula=1;
    		dula=0;
    		P0=0xef;//11 10 1111 (对应LED5)
    		wela=1;
    		wela=0;
    		delayms(ms);
    	}
    	
    	if(disnum>=0)
    	{
    		P0=table_du[disnum%100000%10000%1000%100%10];//取个位
    		dula=1;
    		dula=0;
    		P0=0xdf;//11 01 1111 (对应LED6)
    		wela=1;
    		wela=0;
    		delayms(ms);
    	}
    }
    
    void delayms(uint ms) //延时函数,ms=100时,延时约为100ms   
    { 
       uchar k; 
       while(ms--) 
       { 
          for(k = 0; k < 90; k++); 
       } 
    }
    
    
    思考:
    

    当间隔时间小到0.01s时,程序运行到if(num==num_set){...}位置时,中断服务响应次数已经超过预设值,则不满足条件“num==num_set”,就无法执行后续语句,导致显示数值一直停留在某个数值。这时,将判断条件改为“num>=num_set”,就可以避免上述情况发生,但是,实际中断次数已经大于预设值,也造成了计时器的误差。这种误差会随着while循环次数的增加而累加。

    这该如何解决呢?

    展开全文
  • js——每隔1秒打印数字

    千次阅读 2019-08-14 17:25:05
    方法一: 自执行函数 for (var i=0;...5; i++) { (function (i) { setTimeout(() => console.log(i), 1000*i) })(i) } 方法二: es6块级作用域let for (let i=0; i<5; i++) { (function (...

    方法一: 自执行函数

    for (var i=0; i<5; i++) {
          (function (i) {
            setTimeout(() => console.log(i), 1000*i)
          })(i)
        }

    方法二: es6块级作用域let

    for (let i=0; i<5; i++) {
          (function () {
            setTimeout(() => console.log(i), 1000*i)
          })()
        }

    方法三:传址传递

     var out = (i) => {
          setTimeout (() => console.log(i), 1000*i)
        }
        for (var i=0; i<5; i++) {
          out(i)
        }

    方法四: Promise.all()方法

      var arr = []
        var output = (i) => new Promise(res => {
          setTimeout(()=>{
            console.log(i)
            res()
          }, 1000*i)
        })
        for (var i=0; i<5; i++) {
          arr.push(output(i))
        }
        Promise.all(arr).then(()=> console.log(5))
    

    方法五:async await方法

    var sleep = () => new Promise (res => setTimeout(res, 1000))
        (async function () {
          for (let i=0; i<5; i++) {
            await sleep()
            console.log(i)
          }
        })()

     

    展开全文
  • 这篇文章主要介绍了JS填写银行卡号每隔4位数字加一空格的相关资料,需要的朋友可以参考下 1、原生js写法 !function () { document.getElementById('bankCard').onkeyup = function (event) { var v = this.value;...

    这篇文章主要介绍了JS填写银行卡号每隔4位数字加一个空格的相关资料,需要的朋友可以参考下
    1、原生js写法

    !function () {
     document.getElementById('bankCard').onkeyup = function (event) {
      var v = this.value;
      if(/\S{5}/.test(v)){
       this.value = v.replace(/\s/g, '').replace(/(.{4})/g, "$1 ");
      }
     };
    }();
    

    2、jQuery写法

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title></title>
    </head>
    <body>
    <input type="text" id="J_BankCard"/>
    <script src="http://static.ydcss.com/libs/jquery/1.11.2/jquery.js"></script>
    <script>
     !function () {
      $('#J_BankCard').on('keyup mouseout input',function(){
       var $this = $(this),
        v = $this.val();
       /\S{5}/.test(v) && $this.val(v.replace(/\s/g,'').replace(/(.{4})/g, "$1 "));
      });
     }();
    </script>
    </body>
    </html>
    

    输入银行卡号,每隔4位数字加一个空格(小细节)

    document.getElementById('bankCardInp').onkeyup = function (event) {
      var v = this.value;
      console.log(/\S{5}/.test(v));
      console.log(v);
      if(/\S{5}/.test(v)){
        this.value = v.replace(/\s/g, '').replace(/(.{4})/g, '$1 ');
      }
    };
    

    小编前段时间自己做了个小项目,用到正则,刚好百度了一下,诧异的发现输入银行卡号每隔4位数字加一个空格 居然全部都是清一色的一坨代码,上面大家估计都能理解,当然我整体也能理解: 问题来了

    if(/\S{5}/.test(v)){正确执行}
    不知道大家有没注意到,反正我是困惑到了一开始, /\S{5}/.test(v) 要为 true 才执行,刚开始以为必须5个空字符以上才执行,
    尤为不解,但是认真看了下, \S 居然是大写,我大约知道原因了,我相信大家像我一样一般常用都用 \d \w \s 这些小写的
    \D \W \S 大写我还真没用过或许我的能力原因吧, \S 是除了空字符 那上面的代码就海阔天空了。

    银行卡号每隔4位插入空格 (再用户填写银行卡号的时候挺有用的) IE9+

    <!DOCTYPE html>
    <html>
    
    <head lang="en">
      <meta charset="UTF-8">
      <title>银行卡号4位空格</title>
      <script src="http://j2.58cdn.com.cn/js/jquery-1.8.3.js"></script>
    </head>
    
    <body>
      <input type="text" id="kahao" />
      <script>
        $(function() {
    
          $('#kahao').on('keyup', function(e) {
           //只对输入数字时进行处理
            if((e.which >= 48 && e.which <= 57) ||
                (e.which >= 96 && e.which <= 105 )){
              //获取当前光标的位置
              var caret = this.selectionStart
              //获取当前的value
              var value = this.value
              //从左边沿到坐标之间的空格数
              var sp = (value.slice(0, caret).match(/\s/g) || []).length
              //去掉所有空格
              var nospace = value.replace(/\s/g, '')
              //重新插入空格
              var curVal = this.value = nospace.replace(/(\d{4})/g, "$1 ").trim()
              //从左边沿到原坐标之间的空格数
              var curSp = (curVal.slice(0, caret).match(/\s/g) || []).length
             //修正光标位置
             this.selectionEnd = this.selectionStart = caret + curSp - sp
            
            }
          })
        })
      </script>
    </body>
    
    </html>
    

    以上所述是小编给大家介绍的JS填写银行卡号每隔4位数字加一个空格,希望对大家有所帮助,

    转载: https://m.jb51.net/article/100436.htm

    如果要实现任意字符4个加一个空格

     //重新插入空格
              var curVal = this.value = nospace.replace(/(\d{4})/g, "$1 ").trim()  将正则表达式的数字换成 \s即可
    
    展开全文
  • * 有一数组a[N],要求每隔个数删掉一个数,到末尾则又循环到开头继续进行 * 求最后一被删掉的的原始下标位置 * * 例如,一数组:{0, 1, 2, 3, 4, 5, 6, 7} * 0-&gt;1-&gt;2(第一遍,删除)-...
  • 等会看题目你会发现这道题目其实是约瑟夫环的一应用,使用数据结构中的链表。由于本人能力有限,中间遇到了不少问题,因此代码中夹杂了一些博主对于该题目的理解。 该部分的代码与解答参考于下面的博客1与博客2。...
  • Crontab实现指定时间开始每隔多少秒(分钟/天)执行一次脚本的方法背景Crontab的格式Crontab的使用与局限性合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一...
  • document.getElementById('bankCardInp').onkeyup = function (event) { var v = this.value;... console.log(/\S{5}/.test(v)); console.log(v); if(/\S{5}/.test(v)){ this.value = v.replac
  • js每隔一秒打印1,2,3,4,5

    万次阅读 2018-11-07 19:49:09
    js怎么每隔一秒打印出数字呢? 方法一: 自执行函数 for (var i=0; i&amp;lt;5; i++) { (function (i) { setTimeout(() =&amp;gt; console.log(i), 1000*i) })(i) } 方法二:传址传递 var out = (i)...
  • 1 下载JMeter插件 百度网盘地址:https://pan.baidu.com/s/12vR162bWvbb2YvAPlX2fUg 提取码:fw85 2 将插件放到ext目录 将JMeterPlugins-Standard.jar放到E:\EDish2\soft\apache-jmeter-5.3\apache-jmeter-5.3\lib\...
  • 下一从1开始,报到m的人退出圈子。如此下去,如此反复到所有人出列。设n个人的编号分别为1,2,……n,打印出列的顺序。 【算法分析】 本题可以采用建立标志位的方法求解,但如果使用循环链的思想,则解题...
  • python每隔5秒执行一次

    千次阅读 2020-11-30 09:10:30
    python定时执行 定义一带参函数方法,里面...给定需要的时间执行此函数,每隔5秒执行一次的完整代码如下 import time def sleeptime(hour, min, sec): return hour * 3600 + min * 60 + sec second = sleeptime
  • 数组中循环删除一个数

    千次阅读 2010-09-25 17:33:00
    要求每隔个数删掉一个数,到末尾时循环至开头继续进行,求最后一被删掉的的原始下标位置。 以7个数为例: {0,1,2,3,4,5,6,7} 0-->1-->2(删除)-->3-->4-->5(删除)-->6-->7-->0(删除),如此循环...
  • 之前一秒钟截取一张图片,发现有些图片报了“[mpeg4 @ 05938aa0] warning: first frame is no keyframe”这警告,而且截出的图片都是灰屏,根本没有图片。后来在网上找了很久,终于弄明白了,原来是ffmpeg它有...
  • #include<stdio.h> int main() ...第二行空格开的n个数。 输出 对于组输入,在一行输出n个数的和(保证和不会超出int类型的范围)! 样例输入 Copy 2 3 1 2 3 4 -1 0 -19 22 样例输出 Copy ...
  • applicationContext-quertz.xml的配置,开启job任务注解 假设有一类叫Timmer @Component(Timmer.serialVersionUID + "") public class Timmer implements Serializable{ private static final long ...
  • 有n个人围成一圈,从1开始按顺序编号,第一个人开始1到k报,报到k的人退出圈子;然后圈子缩小,下一人继续游戏,问最后留下的是第几号(只留1 人)。要求定义函数实现。 输入格式: 初始n和k自由指定。 ...
  • 每天,每周,每月每隔cron表达式

    千次阅读 2020-05-17 12:11:03
    其中每元素可以是一值(如6),一连续区间(9-12),一间隔时间(8-18/4)(/表示每隔4小时),一列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两元素互斥的,必须要对其中一设置?. 0 0 10,14,16 * *
  • 思路:理解Fn=F(n-1)+F(n-2)(n>...同时设立一判断值,完成输出前 N 斐波那契,要求5个的任务。 def Fibonacci(n): a, b = 0, 1 i=0#判断值 while i<=n: a, b = b, a + b print
  • 1 public class Zhishu04{ 2 public static void main(String[] args){ 3 int a,b,d=0,count=0; 4 for(a=1;a<=100;a++){ //定义一a从1到100 5 for(b=2;b<a;b...
  • 约瑟夫环问题:50个人围成一圈数数从1开始到3的人退出,求最后剩下的人的编号. C++算法思想: 把这n个人放在一数组中,对映下标的元素值为下标值加1,当到3时将该下标的元素值设置为0,数组到头时...
  • 1.通过以下的方式设置,2小时执行一次脚本 0 */2 * * * date >> /tmp/time.log 备注:开头的分钟的星需要设置为一具体的分钟值,表示2小时的某个分钟执行,如果是星,那么默认是分...
  • 使用定时器实现LED每隔一秒闪烁

    千次阅读 多人点赞 2020-02-18 17:48:05
    参考链接:https://zhidao.baidu.com/question/434042328102999604.html ...1.使用定时器实现LED每隔一秒闪烁需要具备的知识: 了解中断允许寄存器IE和定时器/计数器工作模式寄存器TMOD并且知道...
  • 策略二:客户端每隔一定的时间同步一次(比如,每隔15秒同步一次)。 策略三:应用程序进入后台时尝试同步本地已缓存的所有数据。 I、按照事件触发的时间先后顺序同步数据 1.1 新增SensorsAnalyticsSDK的-flush方法...
  • 以下是JavaScript页面的代码: var i = 0; var timer = setInterval(function () { console.log(i++) if (i>10) { clearInterval(timer); } },1000) 以下是HTML页面的代码: <.../head
  • EXCEL每隔N行取一列数据公式

    千次阅读 2018-10-31 22:59:28
    =PHONETIC(A1:A9)将A1至A9行的数据转到一行 假设你是要每隔6行取一行A列的的数据,在B1单元格输入公式 =INDEX(A:A,ROW(A1)*6-5),下拉复制公式 ...=INDEX(A:A,ROW(A1)*3-1)每隔3行取第2行A列的的数据...
  • 协调器周期性以广播的形式向终端节点发送数据(每隔5s广播一次),终端节点接收数据后,使开发板上的LED灯状态翻转, 同时向协调器发送字符串“EndDevice1 received!”(按组网节点编号),协调器收到终端节点发回的...
  • 在海军节开幕式上,有A,B,C 三艘军舰要同时开始后鸣放礼炮各21响,已知A舰每隔5s放一次。 B舰每隔6s放一次,C舰每隔7s放一次。假设各炮手对时间掌握的非常准确,请编程计算观众 总共可以听到几次炮响。 #include...
  • 设有n个人围坐一圈并按顺时针方向从1到n编号,第s个人开始进行1到m的报, 报到第m个人, 此人出圈, 再他的下一人重新开始1到m的报,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,给出这n个人的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 389,322
精华内容 155,728
关键字:

从1开始每隔五个数