c - 我的 C 程序以非零状态退出,我不知道为什么。目前正在 repl.it 中运行代码

标签 c multidimensional-array random nested-loops

嗨,我当前正在用 C 编程运行代码,它不断以非零状态退出。

该代码用于数独游戏,我本质上想做的是生成随机的 9x9 2D 数组。随机生成它后,我有一个函数检查网格是否是有效网格。我不知道为什么我会得到非零状态。我随机生成数字的方法可能有问题,但我不确定。感谢您的帮助,谢谢。

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


int check(int list[][9]){
    // Disable stdout buffering
    setvbuf(stdout, NULL, _IONBF, 0);

    int i, j, x, y, ans = 0, sum = 0, sum2 = 0, sum3 = 0;

    for(i=0;i<9;i++){               //This nested for loop checks if columns and rows are correct
      sum = 0;
      sum2 = 0;
      for(j=0;j<9;j++){
        sum += list[i][j];
        sum2 += list[j][i];
        if((j == 8) && ((sum != 45) || (sum2 != 45)))
         ans = 1;
      }
    }

    for(x=0;x<3;x++){         //This nested for loop checks if boxes are right
      for(y=0;y<3;y++){
        sum3=0;
        for(i=0;i<3;i++){
          for(j=0;j<3;j++){
            sum3+= list[i+(3*y)][j+(3*x)];
            if((i==2 && j==2) && (sum3 != 45))
              ans = 1;
          }
        }
      }
    }

    return ans;
}




int main(void){
  // Disable stdout buffering
  setvbuf(stdout, NULL, _IONBF, 0);

  int list[9][9] = {0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0};


  int i, j, r;

  for(;;i++){

    for(i=0; i<9; i++){
       for(j=0; j<9; j++){
        srand(time(NULL));
        r = rand() % ((9 + 1 - 1) + 1);
        list[i][j] = r;
      }
    }

    if(check(list[i][j]) == 0)
      break;
  }

  printf("done");

  return 0;
}

最佳答案

  • 函数 check() 需要一个 int[][9] 数组,并且您使用一个数字来调用它:对 的调用check(list[i][j]) 应该是 check(list)

  • 在语句 for (;;i++) 中,i 的值未定义。

  • 您可能希望将 srand() 移到循环之外——初始化应该只进行一次。

  • (9+1-1)+110...

  • 的复杂书写方式

关于c - 我的 C 程序以非零状态退出,我不知道为什么。目前正在 repl.it 中运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41686975/

相关文章:

java - 检查 ArrayIndexOutOfBounds Java

php - 唯一值哈希 = 唯一哈希?

python - 从 Random.choices 函数获取唯一项目的列表

java - 具有随机性的 JUnit 测试方法

c - 从文件读取名称以插入二叉树时出现问题

javascript - 这种嵌套算法的名称是什么?

java - "AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException : 2

c++ - 什么使 C/C++ 程序成为 32/64 位?

c - valgrind 说我有条件跳跃或移动取决于初始化值

c - 在 Windows api 中的自定义按钮上绘制文本