多函数的定义 位置问题

问题遇到的现象和发生背景

想着书上说的何时执行函数 取决于main()中调用的位置,而不是被调用的位置。但是标答在最后定义的函数,请问应该怎么在开始定义函数直接使用。

问题相关代码,请勿粘贴截图

#include <stdio.h>
void jolly(void);
void deny(void);
int main(void)
{ jolly();
jolly();
jolly();
deny();
return 0;
}

void jolly(void)
{

printf("For he's a jolly good fellow!\n");
}

void deny(void)
{
printf("Which nobody can deny!\n");
}

运行结果及报错内容

#include <stdio.h>
void jolly(void);
void deny(void);
int main(void)
void jolly(void)
{
printf("For he's a jolly good fellow!\n");
}
void deny(void)
{
printf("Which nobody can deny!\n");
}
{
jolly();
jolly();
jolly();
deny();
return 0;
}

我想要达到的结果

可以先把函数定义 然后在使用函数达到相同的结果。

在声明的时候就直接定义

#include <stdio.h>
void jolly(void)
{
printf("For he's a jolly good fellow!\n");
}
void deny(void)
{
printf("Which nobody can deny!\n");
}
int main(void)
{
jolly();
jolly();
jolly();
deny();
return 0;
}

函数的定义和声明可以分开的话,为什么按照我问题中的方式运行起来呢?是因为不能在int main {}里面声明还是什么其他原因