我是C编程的新手,这就是为什么我对它的语法感到困惑。问:数独益智游戏使用9×9网格,其中每列和行,以及9个3×3子网格中的每一个都必须包含所有数字1⋅⋅⋅9。图4.26显示了一个有效的数独益智游戏示例。该项目包括设计一个多线程应用程序,用于确定数独难题的解决方案是否有效。这个应用程序有几种不同的多线程方法。建议的策略之一是创建检查以下条件的线程:·检查每列是否包含数字1到9的线程·检查每行是否包含数字1到9的线程
#include <stdlib.h>
int i,j,m,b,k;
void main()
{
int a[9][9]={1,2,3,4,5,6,7,8,9,
4,5,6,7,8,9,1,2,3,
7,8,9,1,2,3,4,5,6,
2,3,4,5,6,7,8,9,1,
5,6,7,8,9,1,2,3,4,
8,9,1,2,3,4,5,6,7,
3,4,5,6,7,8,9,1,2,
6,7,8,9,1,2,3,4,5,
9,1,2,3,4,5,6,7,8};
if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1)
{
printf("Success");
}
else{
printf("Failed");
}
}
int rowcheck(int a[9][9])
{
int c[10]={0};
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
c[a[i][j]]++;
}
for(k=1;k<=9;k++)
if(c[k]!=1)
{
printf("The value %d came %d times in %d row \n",k,c[k],i+1);
return 0;
}
for(k=1;k<=9;k++)
c[k]=0;
}
return 1;
}
int colcheck(int a[9][9])
{
int c[10]={0};
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
c[a[i][j]]++;
}
for(k=1;k<=9;k++)
if(c[k]!=1)
{
printf("The value %d came %d times in %d column \n",k,c[k],i+1);
return 0;
}
for(k=1;k<=9;k++)
c[k]=0;
}
return 1;
}
int cubecheck(int a[9][9])
{
int c[10]={0},count=0;
for(m=0;m<9;m+=3)
{
for(b=0;b<9;b+=3)
{
for(i=m;i<m+3;i++)
{
for(j=b;j<b+3;j++)
{
c[a[i][j]]++;
}
}
count++;
for(k=1;k<=9;k++)
if(c[k]!=1)
{
printf("The value %d came %d times in %d box\n",k,c[k],count);
return 0;
}
for(k=1;k<=9;k++)
c[k]=0;
}
}
return 1;
}```
I am getting this error plz help.
```proj1.c: In function ‘main’:proj1.c:18:8:警告:函数‘rowcheck’的隐式声明
if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1) ^~~~~~~~proj1.c:18:26:警告:函数‘colcheck’的隐式声明-W隐式函数声明
if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1) ^~~~~~~~proj1.c:18:43:警告:函数‘cubecheck’的隐式声明-W隐式函数声明
if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1) ^~~~~~~~~proj1.c:在顶层:
proj1.c:136:1:错误:应为标识符或‘}’标记前的‘(’
}`
^
发布于 2021-01-10 17:23:18
你需要在main()方法之前声明你的函数,因为你是在后面定义它们的:。正向函数声明只是告诉编译器,在您的代码中的某个地方,将定义一个同名的函数,在这种情况下,在main()中使用该函数之后。
通常,在C/C++中,您在头文件中定义函数原型,然后将它们包含在主要源代码中,因此函数在被调用后可以安全地定义。
#include <stdio.h>
#include <stdlib.h>
// add forward declarations for your functions here
int rowcheck(int [][9]);
int colcheck(int [][9]);
int cubecheck(int [][9]);
int main() {
// your code
return 0:
}
// method definitions afterwards
int rowcheck(int a[9][9]) {
// your definition here
}
int colcheck(int a[9][9]) {
// your definition here
}
int cubecheck(int a[9][9]) {
// your definition here
}另外,将您的main方法定义为int main()而不是void main()。
https://stackoverflow.com/questions/65651668
复制相似问题