循环只迭代一半的元素

时间:2016-06-22 09:51:48

标签: c loops for-loop srand

这是我的代码。我的问题是,为什么它只打印5个数字?为什么它不会像它应该的那样打印出来?

   #include<stdio.h>
   #include<stdlib.h>
   #include<time.h>

   int main(){

   int r, col;

   srand((unsigned)time(NULL));

   for (col=1; col<=10; col++){

   r = rand() % 11;
   printf("%d\n", r);
   col++;

   }
  return 0;
  }

3 个答案:

答案 0 :(得分:3)

因为,您正在col++ 两次,一次在循环体中,一次在循环后声明中。

for (col=1; col<=10; col++)   //...................(i)
                    ^^^^^^^

r = rand() % 11;
printf("%d\n", r);
col++;                       //.....................(ii)
^^^^^

因此,对于单次迭代,col增加两次,迭代次数减半。

删除任何一个陈述。

答案 1 :(得分:0)

你犯了一个错误 - 你不需要写col++两次!!

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){

    int r, col;

    srand((unsigned)time(NULL));

    for (col=1; col<=10; col++){

        r = rand() % 11;
        printf("%d\n", r);
    }

    return 0;
}

答案 2 :(得分:0)

Double col ++。 “for”循环语句包含三个表达式。 首先在开始时调用一次。通常用于计数器初始化。 第二是循环继续条件检查。在每次迭代之前调用。如果表达式false循环的结果将被停止。 第三部分在每次迭代后调用。通常用于计数器增量。

如果在“for”中使用了col ++,并且希望每次迭代都将“col”增加1,则不会在循环体中执行col ++。

#include<stdio.h>
   #include<stdlib.h>
   #include<time.h>

   int main(){

   int r, col;

   srand((unsigned)time(NULL));

   for (col=1; col<=10; col++){

   r = rand() % 11;
   printf("%d\n", r);
   //col++;

   }
  return 0;
  }