解议程组遇到的有关问题

解议程组遇到的问题
已知     4*u1   -   u2   =   0
            4*u2   -   u1   -   u3   =   0
            4*u3   -   u2   =   100

        又u1[k+1]   =   u2[k]/4
            u2[k+1]   =   (u1[k+1]   +   u3[k])/4
            u3[k+1]   =   u2[k+1]/4   +   25


给定抚今迭代初值     u1[0]   =   2       u2[0]   =   7.5     u3[0]   =   30
条件是un[k+1]-un[k] <某一个很小的数

我是这样设计的

#include   <stdio.h>

int   main   (void)
{
int   k;
float   u1[k],u2[k],u3[k];

u1[0]=   0;
u2[0]=   0;
u3[0]=   0;

float   w   =   0.01;

u1[k+1]   =   u2[k]/4;
u2[k+1]   =   (u1[k+1]+u3[k])/4;
u3[k+1]   =   u2[k+1]/4   +   25;


for   (k=0;k <=20000;)
{if   (4*u1[k+1]   -   u2[k+1] <10)
{if   (4*u2[k+1]   -   u1[k+1]   -   u3[k+1]   <   10)
{if   (   4*u3[k+1]   -   u2[k+1]   -   100   <10)
printf   ( "u1   is   %f   u2   is   %f   u3   is   %f ",u1[k+1],   u2[k+1],   u3[k+1]);
}
}
}

          return   0;
}


编译没有错误可是执行时没有结果输出   找了半天也没有发现错误

请高手们指出错误在哪里?

------解决方案--------------------
int k; <----- k的初值是什么?
float u1[k],u2[k],u3[k]; <-- u1 u2 u3 的大小是多少?

下面更离谱,u1 u2 u3 上面已经设定了大小为 k, 那么 u1[k+1] 是什么意思?
u1[k+1] = u2[k]/4;
u2[k+1] = (u1[k+1]+u3[k])/4;
u3[k+1] = u2[k+1]/4 + 25;