题目是让写一个控制小车左转右转和前进的程序,输入最大坐标系如5 5
输入起点位置1 2 E 输入行进指令如MLMLMLMRMM等等,输出最后到达的位置和方向
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- typedef struct NODE{
- int direct;
- int x;
- int y;
- }Node;
- int main()
- {
- int xmax,ymax,times=3,x,y;
- int cmd_number=0;
- char ch,cmd[30];
- enum direct_type {east,west,south,north};
- printf("please input your net size\n");
- scanf("%d %d",&xmax,&ymax);
- printf("xmax=%d ymax=%d\n",xmax,ymax);
-
- Node node_now;
-
- while(times--)
- {
- printf("please input your start position\n");
- scanf("%d %d %c",&x,&y,&ch);
- printf("x=%d y=%d direct=%c\n",x,y,ch);
- node_now.x=x;
- node_now.y=y;
- switch(ch)
- {
- case 'E':node_now.direct=1;break;
- case 'N':node_now.direct=2;break;
- case 'W':node_now.direct=3;break;
- case 'S':node_now.direct=4;break;
- default:printf("input the fucking right cmd!\n");
- };
-
- printf("input your commend int L M and R!\n");
- scanf("%s",cmd);
- printf("cmd is %s\n",cmd);
- cmd_number=0;
- while(cmd[cmd_number]!='\0')
- {
- switch(cmd[cmd_number])
- {
- case 'R':if(node_now.direct!=1)
- node_now.direct--;
- else
- node_now.direct=4;
- break;
- case 'L':if(node_now.direct!=4)
- node_now.direct++;
- else
- node_now.direct=1;
- break;
- case 'M':switch(node_now.direct)
- {
- case 1:node_now.x++;break;
- case 2:node_now.y++;break;
- case 3:node_now.x--;break;
- case 4:node_now.y--;break;
- default:printf("direct error\n");
- }
- break;
- default:printf("input error!");
- };
- cmd_number++;
-
- }
- switch(node_now.direct)
- {
- case 1:ch='E';break;
- case 2:ch='N';break;
- case 3:ch='W';break;
- case 4:ch='S';break;
- default:printf("direct to char error\n");
- };
- printf("x=%d y=%d direct=%c\n",node_now.x,node_now.y,ch);
- }
- return 0;
-
- }
这个写完其实我想直接用枚举型也挺好,代表方向的数字转化过程,如果不是转很多次走很多次的话不用转换也没问题
在gcc下编译通过,可移植性,没有边界检测和边界碰撞这样的内容,只是简单的改变方向
阅读(2031) | 评论(0) | 转发(1) |