以前貌似做过这个题 WA2次 一次因为复制输出的时候 把8复制上去了 还有理解错了 以为小于等于1的时候要去S呢

1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int n, m, t, i, j, k,num,a[12][12],x,y,count1,count2; 6 char c[11][11]; 7 while(scanf("%d%d%d%*c", &n, &m, &t)&&n&&m&&t) 8 { 9 num = 0; 10 int flag = 0; 11 k = 0; 12 memset(a,0,sizeof(a)); 13 for(i = 1 ; i <= n ; i++) 14 { 15 for(j = 1 ; j <= m ;j++) 16 scanf("%c", &c[i][j]); 17 getchar(); 18 } 19 x = 1; 20 y = t; 21 while(x>0&&x<=n&&y>0&&y<=m) 22 { 23 a[x][y]++; 24 if(k==0&&a[x][y] == 2) 25 { 26 count1 = num; 27 k = 1; 28 } 29 if(a[x][y] == 3) 30 { 31 count2 = num-count1; 32 count1 = count1-count2; 33 flag = 1; 34 break; 35 } 36 switch(c[x][y]) 37 { 38 case 'N':x--;break; 39 case 'S':x++;break; 40 case 'E':y++;break; 41 case 'W':y--;break; 42 } 43 num++; 44 } 45 if(!flag) 46 { 47 printf("%d step(s) to exit\n",num); 48 } 49 else 50 { 51 printf("%d step(s) before a loop of %d step(s)\n",count1,count2); 52 } 53 } 54 return 0; 55 }