C语言for循环未执行直接跳过,请问原因是什么?
问题原因及修复方案
核心问题:for循环条件错误
你的for循环条件写的是c==N,初始值c=0,而N=5,一开始0==5就不成立,所以循环体直接被跳过,根本不会执行。
正确的循环条件应该用小于判断,如果要循环5次,应该写成:
for(c=0; c < N; c++)
这样c从0到4,一共执行5次循环;如果需要循环到等于N(即6次),就用c <= N。
额外优化建议
- 把
srand(time(0))移到循环外面,否则每次循环都重置随机数种子,而time(0)返回的是秒级时间,循环执行速度远快于1秒,会导致每次生成的随机数都一样。 - 随机数生成
rand() % 99得到的是0到98的数,如果需要1到99的数,应该改成rand() % 99 + 1。
修复后的完整代码:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int N = 5; int input; scanf("%d", &input); // 只初始化一次随机数种子 srand(time(0)); int c; for(c=0; c < N; c++) { int random = rand() % 99; // 生成0-98的随机数,如需1-99则改为rand()%99+1 printf("Loteria: %d\n", random); if (input == random) { printf("\nAcertou!\n"); } } return 0; }
内容的提问来源于stack exchange,提问作者weg
相关产品推荐
相关产品推荐

