为何我的代码无法达到题目效果?

1.编写程序,生成一种贯穿10×10字符数组(初始时全为字符。)的“随机步法”。程序必须随机地从一个元素“走到”另一个元素,每次都向上、向下、向左或向右移动一个元素位置。已访问过的元素按访问顺序用字母A到进行标记。下面是一个输出示例:图片说明
我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>

#define LEN 10
#define HEI 10

int main(void)
{
    char mis[HEI][LEN] = { '.' };
    bool text[4] = { false };

    int i, j;
    for (i = 0; i < HEI; i++) {
        for (j = 0; j < LEN; j++) {
            mis[i][j] = '.';
        }
    }

    int ran;
    mis[0][0] = 'A';
    for (i = 0; i < 25;) {
        if (text[0] && text[1] && text[2] && text[3])break;
        srand((unsigned)time(NULL));
        ran = rand() % 4;

        int h = 0, l = 0, j;
        switch (ran) {
        case 0:h--;
            if (h < 0 || mis[h][l] != '.') {
                h++;
                text[0] = true;
            }
            else {
                mis[h][l] = 'A' + i;
                for (j = 0; j < 4; j++) {
                    text[j] = false;
                }
                i++;
            }
            break;
        case 1:l--;
            if (l < 0 || mis[h][i] != '.') {
                l++;
                text[1] = true;
            }
            else {
                mis[h][l] = 'A' + i;
                for (j = 0; j < 4; j++) {
                    text[j] = false;
                }
                i++;
            }
            break;
        case 2:h++;
            if (h > 9 || mis[h][i] != '.') {
                h--;
                text[2] = true;
            }
            else {
                mis[h][l] = 'A' + i;
                for (j = 0; j < 4; j++) {
                    text[j] = false;
                }
                i++;
            }
            break;
        case 3:l++;
            if (l > 9 || mis[h][i] != '.') {
                l--;
                text[3] = true;
            }
            else {
                mis[h][l] = 'A' + i;
                for (j = 0; j < 4; j++) {
                    text[j] = false;
                }
                i++;
            }
            break;
        }
    }

    int x, y;
    for (x = 0; x < HEI; x++) {
        for (y = 0; y < LEN; y++) {
            printf(" %c", mis[x][y]);
            if (y == 9) printf("\n");
        }
    }
    while (1);
}