为什么我的if(flag==4)break;放在下面这个位置不行?
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char ch[10][10], zimu[26] = { 'A' };
int fang_xiang1, row=0, column=0,flag=0,n=0;
bool fang_xiang2[4] = { false };
srand((unsigned)time(NULL));
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
ch[i][j] = '.';
for (int i = 1; i < 26; i++)
zimu[i] = zimu[i - 1] + 1;
ch[0][0] = 'A';
while (n!=25) {
fang_xiang1 = rand() % 4;
if (fang_xiang2[fang_xiang1] == true)
continue;
fang_xiang2[fang_xiang1] = true;
switch (fang_xiang1) {
case 0:
row += 1;
break;
case 1:
row -= 1;
break;
case 2:
column += 1;
break;
case 3:
column -= 1;
break;
}
if (flag == 4)
break;
if (row < 0 || row>9 || column < 0 || column>9 || ch[row][column] != '.') {
switch (fang_xiang1) {
case 0:
row -= 1;
break;
case 1:
row += 1;
break;
case 2:
column -= 1;
break;
case 3:
column += 1;
break;
}
flag += 1;
continue;
}
ch[row][column] =zimu[n]+ 1;
n += 1;
for (int i = 0; i < 4; i++)
fang_xiang2[i] = false;
flag = 0;
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
printf("%c ", ch[i][j]);
}
printf("\n");
}
return 0;
}
放在这个位置却可以起作用
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char ch[10][10], zimu[26] = { 'A' };
int fang_xiang1, row=0, column=0,flag=0,n=0;
bool fang_xiang2[4] = { false };
srand((unsigned)time(NULL));
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
ch[i][j] = '.';
for (int i = 1; i < 26; i++)
zimu[i] = zimu[i - 1] + 1;
ch[0][0] = 'A';
while (n!=25) {
if (flag == 4)
break;
fang_xiang1 = rand() % 4;
if (fang_xiang2[fang_xiang1] == true)
continue;
fang_xiang2[fang_xiang1] = true;
switch (fang_xiang1) {
case 0:
row += 1;
break;
case 1:
row -= 1;
break;
case 2:
column += 1;
break;
case 3:
column -= 1;
break;
}
if (row < 0 || row>9 || column < 0 || column>9 || ch[row][column] != '.') {
switch (fang_xiang1) {
case 0:
row -= 1;
break;
case 1:
row += 1;
break;
case 2:
column -= 1;
break;
case 3:
column += 1;
break;
}
flag += 1;
continue;
}
ch[row][column] =zimu[n]+ 1;
n += 1;
for (int i = 0; i < 4; i++)
fang_xiang2[i] = false;
flag = 0;
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
printf("%c ", ch[i][j]);
}
printf("\n");
}
return 0;
}
有什么不同吗?