#include <stdio.h> #include <stdlib.h> char state = "a"; int i=0,j=0,xstate=0,Dstate[1][2]={{0,1}}; int floor[50][50]={0}; int direction( int m1); int move(int n1,int x1); int print(void); int main() { int x,m,n,wind=1; int i1=0,j1=0; for(i1=0;i1<25;i1++) {for(j1=0;j1<50;j1++) { printf("%d",floor[i1][j1]=0); } printf("\n"); }//将floor这个数组的前25*50都置为0 while (wind!=0) /*当wind为0时退出*/ { printf("\ninput the comand:"); scanf("%d",&m); switch (m){ case 1: /*判断能否为输入状态参数*/ xstate = 0; break; case 2: xstate = 1; break; case 3: direction(m); break; /*判断选取数组a中的元素*/ case 4: direction(m); break; case 5: case 10: printf("\nplease input the distance:"); scanf("%d",&n); move(n,xstate); break; /*用数组a中的返回值,对数组floor进行操作*/ case 6: print(); break; /*打印floor数组*/ case 9: wind = 0; break; /*退出程序标志*/ } } system("pause"); return 0; } int direction(int m1) { if (m1 == 3){ switch (state){ case "a": Dstate[0][0] = 1; Dstate[0][1] = 0; state = "d"; break; case "b": Dstate[0][0] = -1; Dstate[0][1] = 0; state = "c"; break; case "c": Dstate[0][0] = 0; Dstate[0][1] = 1; state = "a"; break; case "d": Dstate[0][0] = 0; Dstate[0][1] = -1; state = "b"; break; } } else if(m1 == 4) { switch (state){ case "a": Dstate[0][0] = -1; Dstate[0][1] = 0; state = "c"; break; case "b": Dstate[0][0] = 1; Dstate[0][1] = 0; state = "d"; break; case "c": Dstate[0][0] = 0; Dstate[0][1] = -1; state = "b"; break; case "d": Dstate[0][0] = 0; Dstate[0][1] = 1; state = "a"; break; } } return 0; } int move (int n1,int x1) { while(n1>0) { i = i+ Dstate[0][0]; j = j+ Dstate[0][1]; floor[i][j] = x1; n1--; } return 0; } int print(void) { int i1=0,j1=0; for(i1=0;i1<50;i1++) {for(j1=0;j1<50;j1++) { if (floor[i1][j1] == 1) printf("%c","*"); else printf("%d",floor[i1][j1]=0); } printf("\n"); } return 0; }
这段代码不是本人写的(本人不会)在这段代码中,本人有很多问题:1:首先是Dtate这个数组是用来干什么的?2:在direction这个函数中,实现上下左右的时候,应用Dstate这个数组来实现的,但是本人没有读懂是怎么使得上下左右走的;3:能不能帮本人讲讲move这个函数
解决方案
20
代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
40
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或在某行按F9设了断点后按F5执行停在该断点处的时候。
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或在某行按F9设了断点后按F5执行停在该断点处的时候。