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);
}