这里为什么引用了头文件还是显示未定义?

这里为什么引用了头文件还是显示未定义?

/*源文件内容*/ 
#include<stdio.h>
#include"N Chess Game.h"
void menu()
{
    printf("*******************************  N Chess Game!!  *******************************\n");
    printf("****************************  1.play  ****  2.exit  ****************************\n");
    printf("**************************************-++-**************************************\n");
}
void game()
{
    char board[ROW][COL]={0};
    Initboard(board,ROW,COL);
    displayboard(board,ROW,COL);
}
void test()
{
    menu();
    int input;
    do
    {
    printf("请选择:>");
    scanf("%d",&input);
    switch(input)
    {
        case(1):
            game();
            printf("开始游戏!\n");
            break;
        case(0):
            printf("退出游戏。\n");
            break;
        default:
            printf("选择错误,请重新选择!\n");
            break;
    }
    }while(input);
}
 
int main()
{
    test();
    return 0;
}

/*头文件内容*/ 
#define ROW 3
#define COL 3
void Initboard(char board[ROW][COL],int row,int col); 
void displayboard(char board[ROW][COL],int row,int col);

/*头文件的函数定义*/ 
#include<stdio.h>
#include"N Chess Game.h"
void Initboard(char board[ROW][COL],int row,int col)
{
    int i,j;
    for(i=0;i<row;i++)
    for(j=0;j<col;j++)
    board[i][j]=' ';
}
void displayboard(char board[ROW][COL],int row,int col)
{
    int i,j;
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            printf(" %c ",board[i][j]);
            if(j<col-1) 
            printf("|");
        }
        printf("\n");
        if(i<row-1)
        {
            for(j=0;j<col;j++)
            {
                printf("---");
                if (j<col-1)
                printf("|");
            }
            printf("\n");
        }
    }
}
int main()
{
    return 0;
}

你怎么有2个main函数

这个文件删除掉main和include那个h

#include<stdio.h>

void Initboard(char board[ROW][COL],int row,int col)
{
    int i,j;
    for(i=0;i<row;i++)
    for(j=0;j<col;j++)
    board[i][j]=' ';
}
void displayboard(char board[ROW][COL],int row,int col)
{
    int i,j;
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            printf(" %c ",board[i][j]);
            if(j<col-1) 
            printf("|");
        }
        printf("\n");
        if(i<row-1)
        {
            for(j=0;j<col;j++)
            {
                printf("---");
                if (j<col-1)
                printf("|");
            }
            printf("\n");
        }
    }
}

 

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7550428
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:头文件为什么只声明而不定义,而类定义又可以在头文件中那
  • 除此之外, 这篇博客: 浮点数的表示方法中的 浮点数如何表示数字? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    我们已经知道,浮点数是采用科学计数法来表示一个数字的,它的格式可以写成这样:

    V = (-1)^S * M * R^E

    其中各个变量的含义如下:

    • S:符号位,取值 0 或 1,决定一个数字的符号,0 表示正,1 表示负
    • M:尾数,用小数表示,例如前面所看到的 8.345 * 10^0,8.345 就是尾数
    • R:基数,表示十进制数 R 就是 10,表示二进制数 R 就是 2
    • E:指数,用整数表示,例如前面看到的 10^-1,-1 即是指数

    如果我们要在计算机中,用浮点数表示一个数字,只需要确认这几个变量即可。

    假设现在我们用 32 bit 表示一个浮点数,把以上变量按照一定规则,填充到这些 bit 上就可以了:

    假设我们定义如下规则来填充这些 bit:

    • 符号位 S 占 1 bit
    • 指数 E 占 10 bit
    • 尾数 M 占 21 bit

    按照这个规则,将十进制数 25.125 转换为浮点数,转换过程就是这样的(D代表十进制,B代表二进制):

    1. 整数部分:25(D) = 11001(B)
    2. 小数部分:0.125(D) = 0.001(B)
    3. 用二进制科学计数法表示:25.125(D) = 11001.001(B) = 1.1001001 * 2^4(B)

    所以符号位 S = 0,尾数 M = 1.001001(B),指数 E = 4(D) = 100(B)。

    按照上面定义的规则,填充到 32 bit 上,就是这样:

    浮点数的结果就出来了,是不是很简单?

    但这里有个问题,我们刚才定义的规则,符号位 S 占 1 bit,指数位 E 占 10 bit,尾数 M 占 21 bit,这个规则是我们拍脑袋随便定义出来的。

    如果你也想定一个新规则,例如符号位 S 占 1 bit,指数位 E 这次占 5 bit,尾数 M 占 25 bit,是否也可以?当然可以。

    按这个规则来,那浮点数表示出来就是这样:

    我们可以看到,指数和尾数分配的位数不同,会产生以下情况:

    1. 指数位越多,尾数位则越少,其表示的范围越大,但精度就会变差,反之,指数位越少,尾数位则越多,表示的范围越小,但精度就会变好
    2. 一个数字的浮点数格式,会因为定义的规则不同,得到的结果也不同,表示的范围和精度也有差异

    早期人们提出浮点数定义时,就是这样的情况,当时有很多计算机厂商,例如IBM、微软等,每个计算机厂商会定义自己的浮点数规则,不同厂商对同一个数表示出的浮点数是不一样的。

    这就会导致,一个程序在不同厂商下的计算机中做浮点数运算时,需要先转换成这个厂商规定的浮点数格式,才能再计算,这也必然加重了计算的成本。

    那怎么解决这个问题呢?业界迫切需要一个统一的浮点数标准。

  • 您还可以看一下 Toby老师的论文作业复现机器学习模型案例课程中的 论文的困惑?找不到创新点?小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    作为AI语言模型,我并不使用编程语言和代码段。我无法提供错误信息或调试信息,因为我是一个无状态的模型,没有任何与实际代码相关的信息。操作系统和IDE的相关信息也是不适用的。如果您需要关于具体编程问题的帮助,请提供更为详细的信息,以便我们能够更好地帮助您解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^