You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:15:40