C语言函数调用,错在哪?

#include<stdio.h>
void main()
{
DaffodilNum();
GetBall();

}

int DaffodilNum()//打印水仙花数
{
int a=100,ge,shi,bai;

while(a>99&&a<=999)
{
    bai=a/100;
    ge=a%10;
    shi=a/10-bai*10;
    if(bai*bai*bai+shi*shi*shi+ge*ge*ge==a)
    {
        printf("%d\n",a);
    }
    a++;
}
    
return 0;

}

void GetBall()//取球方案
{
int a,b,c,i=0;
for(a=0;a<=3;a++)
{
for(b=0;b<=3;b++)
{
c=8-a-b;
if(c<=6)
{
printf("%d个红球 %d个白球 %d个黑球 \n",a,b,c);
i++;
}
}

}

}

D:\C语言练习\z2\z2.c(29) : warning C4013: 'DaffodilNum' undefined; assuming extern returning int
D:\C语言练习\z2\z2.c(30) : warning C4013: 'GetBall' undefined; assuming extern returning int
D:\C语言练习\z2\z2.c(54) : error C2371: 'GetBall' : redefinition; different basic types

把main放到两个函数的下面