首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告:函数‘colcheck’的隐式声明[-Wimplicit- function - declaration ]

警告:函数‘colcheck’的隐式声明[-Wimplicit- function - declaration ]
EN

Stack Overflow用户
提问于 2021-01-10 17:13:02
回答 1查看 478关注 0票数 0

我是C编程的新手,这就是为什么我对它的语法感到困惑。问:数独益智游戏使用9×9网格,其中每列和行,以及9个3×3子网格中的每一个都必须包含所有数字1⋅⋅⋅9。图4.26显示了一个有效的数独益智游戏示例。该项目包括设计一个多线程应用程序,用于确定数独难题的解决方案是否有效。这个应用程序有几种不同的多线程方法。建议的策略之一是创建检查以下条件的线程:·检查每列是否包含数字1到9的线程·检查每行是否包含数字1到9的线程

代码语言:javascript
复制
#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’的隐式声明

代码语言:javascript
复制
 if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1)
代码语言:javascript
复制
    ^~~~~~~~

proj1.c:18:26:警告:函数‘colcheck’的隐式声明-W隐式函数声明

代码语言:javascript
复制
 if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1)
代码语言:javascript
复制
                      ^~~~~~~~

proj1.c:18:43:警告:函数‘cubecheck’的隐式声明-W隐式函数声明

代码语言:javascript
复制
 if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1)
代码语言:javascript
复制
                                       ^~~~~~~~~

proj1.c:在顶层:

proj1.c:136:1:错误:应为标识符或‘}’标记前的‘(’

}`

^

代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-10 17:23:18

你需要在main()方法之前声明你的函数,因为你是在后面定义它们的:。正向函数声明只是告诉编译器,在您的代码中的某个地方,将定义一个同名的函数,在这种情况下,在main()中使用该函数之后。

通常,在C/C++中,您在头文件中定义函数原型,然后将它们包含在主要源代码中,因此函数在被调用后可以安全地定义。

代码语言:javascript
复制
#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()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65651668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档