通过for循环每隔两秒按顺序打印出arr中的数字

这个有很多种实现方法,我整理如下:

方法1:

var i=0;
    var arr = [1, 2, 3, 4, 5, 6];
    function f(){
        if(i<arr.length){
            var record=arr[i];
            console.log(record);
        }
        i++;
    }
    var t = setInterval(f,2000);
    if(i>=arr.length){
        clearInterval(t);
    }

方法2:

 var arr = [1, 2, 3, 4, 5, 6];
    var j = 0; function fn(){ console.log(arr[j]); j++; }
    for(var i = 0; i < arr.length; i++ ){
        setTimeout(fn,i*2000) }

    这里我们另外一个全局变量来存储值,每执行一次函数fn,j就加一次,所以执行到setTimeout的时候,就会调用fn函数,所以会达到我们预期的效果,但是这里这个j是一个全局变量,全局变量会造成容易改变其值或者命名冲突等问题.
    改进:引入闭包函数.因为闭包函数,每一次创建都会存在一个自己的空间来存储唯一的值.所以利用这个思维.我们把代码写成下面的代码.

方法3:

var arr = [1, 2, 3, 4, 5, 6];
    for(var i = 0; i < arr.length; i++ ){
        (function (i) {
            setTimeout(function () {
                console.log(arr[i]);
            }, i*2000);
        })(i);
    }
    我们将i的每一次执行for循环的值,传给不同创建的闭包函数,这样每一个闭包函数里存储的i值,就都不会一样.所以就是达到我们的想要的结果.

方法4:
var arr = [1, 2, 3, 4, 5, 6];
    function fn() {
        if(arr.length>0){
            console.log(arr.shift());
        }
    }
    setInterval(fn, 2000);
可以使用数组的shift方法。



以下是实现以上要求的C语言代码: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> void init_array(int arr[], int size) { srand(time(NULL)); for(int i = 0; i < size; i++) { arr[i] = rand() % 50; } } void print_array(int arr[], int size) { for(int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } int sum_every_three(int arr[], int size, int sum[]) { int count = 0; for(int i = 0; i < size; i += 3) { int temp_sum = 0; for(int j = i; j < i + 3 && j < size; j++) { temp_sum += arr[j]; } sum[count++] = temp_sum; } return count; } void print_sum(int sum[], int size) { for(int i = 0; i < size; i++) { printf("%d ", sum[i]); } printf("\n"); } int main() { int arr[15]; int sum[5]; init_array(arr, 15); printf("初始数组:"); print_array(arr, 15); int count = sum_every_three(arr, 15, sum); printf("所有求和数值:"); print_sum(sum, count); return 0; } ``` 首先定义了一个 `init_array` 函数来初始化数组,使用了 `srand` 函数来生成随机数种子,然后用 `rand` 函数来生成 0~49 的随机数。 接着定义了一个 `print_array` 函数来输数组元素的值。 然后定义了一个 `sum_every_three` 函数来按顺序每隔三个数求一个和数,并传回函数,使用了两重循环,外层循环每次跳过 3 个元素,内层循环对每个 3 元素求和。 最后定义了一个 `print_sum` 函数来输所有求的和数值。 在 `main` 函数,先初始化数组,然后输初始数组,然后调用 `sum_every_three` 函数计算所有求和数值,最后输所有求的和数值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值