因为0左1右,我们可以考虑将四个方向用四个相邻整数来代替。例如:d=0是南,d=1是东,开始面向南,如果输入一个0代表左转,那么d++,d=1代表面向东了;输入一个1代表右转,那么d--,d=-1,d<0了,我们可以加一步判断如果d<0就给d+4,因为4是一个周期,运算之后不会有影响,d>=0?d:d+4,d=3代表面向东,有同学会想,如果我一直右拐怎么办,不能无限制的定义东西南北吧。因为只有四个方向,0 1 2 3,我们可以利用取模运算,例如运算之后d=5,d%4=1,他还是面向东面的,问题得到解决
#include <stdio.h> int main() { char fx[6]; int n,i,d,j; scanf("%s%d",fx,&n); switch(fx[0]) { case 'S': d=0; break; case 'E': d=1; break; case 'N': d=2; break; case 'W': d=3; break; } for(i=0;i<n;i++) { scanf("%d",&j); if(j==0) d++; else d--; } d%=4; switch(d>=0?d:d+4) { case 0: printf("South\n"); break; case 1: printf("East\n"); break; case 2: printf("North\n"); break; case 3: printf("West\n"); break; } return 0; }