这是我的代码。我的问题是,为什么它只打印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;
}
答案 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;
}