今天回到學佼也沒有講課,因為老師忙著一些其它事,聽說好像是多媒體比賽的吧,要今天上交了。那我們只好回到課室里自己看書了,不過在這段時間里我們都沒有看什么書,只是大家聊了起來。我也插了嘴吹了幾句,可是很快就沒有心情了,唉!只好睡一睡吧。當我休息了一會發現老師都已經回來了,而且說讓我們今天上機房。今天是第一次上機房,不過如果不是什么事我也不愿上機房,因為我覺得聽老師講課還好。我們上到機房,老師給了一條程序我們,喔!這不是前兩天說要搞的那個諾漢塔嗎!而且是結合了圖形表示的。我們都興奮起來了,開始研究著這條程序。我開始執行這個諾塔了,他給的參數不是很多,只是十個盤子而已,你知道我按了多長時間嗎?我一直按著來看也看了快一個5分鐘才看完啊,這個問題果然是復雜。看著這些圖畫演示讓我更加清晰的明白了諾漢塔的原理,這里我不敢自私,我把源程序也COPY回家了,以下就是了:
#include <conio.h>
#include <string.h>
char dd[10][20],space[20];
int a[11],b[11],c[11];
init()
{
int i,j;
for(i=0;i<20-1;i++) space[i]=' ';
space[i]='\0';
for(i=0;i<10;i++)
{ for(j=0;j<20-1;j++)dd[i][j]=' ';
dd[i][j]='\0';
for(j=9-i;j<=9+i;j++)dd[i][j]='a'+i;
}
for(i=0;i<10;i++) a[i]=i,b[i]=-1,c[i]=-1;
a[10]=2,b[10]=25,c[10]=50;
for(i=0;i<10;i++)
{
gotoxy(a[10],10+i);
cprintf("%s",dd[i]);
}
}
move(int *s,int *d)
{ int i,j;
for(i=0;s[i]==-1&&i<10;i++);
gotoxy(s[10],10+i);
cprintf("%s",space);
for(j=0;d[j]==-1&&j<10;j++);
j--;
gotoxy(d[10],10+j);
cprintf("%s",dd[s[i]]);
d[j]=s[i];s[i]=-1;
getche();
}
void hanoi(int n,int *s,int *w,int *d)
{ int i;
if(n==1)move(s,d);
else
{
hanoi(n-1,s,d,w);
move(s,d);
hanoi(n-1,w,s,d);
}
}
main()
{
clrscr();
init();
getche();
hanoi(10,a,b,c);
getche();
}
最后除了看了這條程序,老師還給我們試著用TC調試程序了。你知道我以前調試程序是怎樣的嗎?我就是直接ALT+F9看看有沒有出錯,如果有就修改,沒有則成功了。可是真天我真正認識到TC里調試程序的真正方法,其實TC里有一大推的調試工具,這是我以前一直沒有用過的,只知道有一個就是一步一步執行,跟著其它就一無所知了。其實TC里可以把一些變量的值跟蹤顯示出來,這是調試程序的重要手段,以前不知道這個功能都是用筆寫在紙上的,現在可以很方便準確的看出來了。
- 推薦給朋友
- 收藏此頁
·程序員考試補課筆記-第七天 (2004-12-27 13:28:00)
·程序員考試補課筆記-第六天 (2004-12-27 13:27:00)
·程序員考試補課筆記-第四天 (2004-12-27 13:26:00)
·程序員考試補課筆記-第三天 (2004-12-26 13:21:00)
·程序員考試補課筆記-第二天 (2004-12-26 13:20:00)