Can someone explain this code step by step:

#include <stdio.h>
#define MAX 10
int main()
{
char niz[MAX][MAX], c = 0;
int d = 1, x = 0, i, j;
do scanf("%s", niz[x]);
while (niz[x++][0] != '0');
{
float* pf;
int xx, *pi = (int*)&niz[0][7];
xx = ((*pi) & 0x41000000);
pf = (float*)&xx;
printf("%5.2f\n", *pf);
}
for (c-=--x; c++&**niz; d+=!(c<<x>0)) d<<=1;
d -= c;
for (i = 0; i < x;
i==1?printf("%c ", niz[i][x>>1]):i, ++i)
for (j = 0; j <= x - i;
printf("%c", niz[i][j++]));
printf("%x", d);
return 0;
}

Homework? Walk through the code, line by line, and describe what it is doing. FWIW, just a cursory view has shown me a couple of bugs in this code. Also, proper indentation will help see where some of the problems are.