2009年12月26日 星期六

用C語言寫一個n*n乘法表。

小傢伙不會用C寫 N*N的乘法表程式。而我呢,一輩子從沒真正寫過一個C程式。但是下學期我要教C;之前K過一些,最近也看了一點。於是下午把Dev C++裝起來,開始試這個程式。
對寫過其它程式的我來說,雙迴圈不是很難的,但是C的語法不熟,所以根據經驗,要一點一點試。

以下把試的過程大致的展示出來,想告訴學程式的朋友,如何一次試一點,慢慢把它搞懂。
可以把下面的程式,一個個複製到程式裏,自己試試。

先讓程式的結果「可以看見」,所以先試printf。

第一個程式只是試輸出指令 printf及迴圈for,其實裏面有一個小錯,編譯看看就知道。剛學語言,規則多,不好記,很容易錯。所以,程式愈小愈好。其實這第一個程式就出了好幾次錯誤,才一步步改成下面的樣子。頭尾是抄書上第一個例子。中間咖啡色的才是我試的部份。

#include

#include

int main(void)

{

int MAX

for(i=1;i<=MAX;i++)

printf("Index i = d% \n",i);

system("PAUSE");

return EXIT_SUCCESS;

}




第二次我是試加入由鍵盤輸入數值的指令,也是犯了好幾次錯才修成這樣。

int main(void)

{

int MAX, i ;

printf("key in the matrix size 1<= MAX <=9 : \n");

scanf("%d",&MAX);

printf("MAX = %d i= %d \n\n",MAX,i);

for(i=1;i<=MAX;i++)

printf("Index i = %d \n",i);

system("PAUSE");

return EXIT_SUCCESS;

}



第三次只是為了把for迴圈本體改成大括弧以便裝內迴圈,也是曾犯了忘記加;的錯。

int main(void)

{

int MAX, i ;

printf("key in the matrix size 1<= MAX <=9 : \n");

scanf("%d",&MAX);

printf("MAX = %d i= %d \n\n",MAX,i);

for(i=1;i<=MAX;i++)

{

printf("Index i = %d \n",i);

}

system("PAUSE");

return EXIT_SUCCESS;

}




第四次加個內迴圈,再測…有錯,因忘了宣告 j

int main(void)

{

int MAX, i ;

printf("key in the matrix size 1<= MAX <=9 : \n");

scanf("%d",&MAX);

printf("MAX = %d i= %d \n\n",MAX,i);

for(i=1;i<=MAX;i++)

{

for(j=1;j<=MAX;j++)

{

printf("Index i = %d , j= %d \n",i,j);

}

}

system("PAUSE");

return EXIT_SUCCESS;

}




第五次加了宣告,OK, 第六次加印乘積,且每完成一內迴圈加印一行空白,讓結果好看些…

int main(void)

{

int MAX, i ,j;

printf("key in the matrix size 1<= MAX <=9 : \n");

scanf("%d",&MAX);

printf("MAX = %d i= %d \n\n",MAX,i);

for(i=1;i<=MAX;i++)

{

for(j=1;j<=MAX;j++)

{

printf("%d*%d=%d \n",i,j,i*j);

}

printf("\n");

}

system("PAUSE");

return EXIT_SUCCESS;

}



第七次,試著把乘積排整齊些,讓乘積的個位數對齊…

int main(void)

{

int MAX, i ,j;

printf("key in the matrix size 1<= MAX <=9 : \n");

scanf("%d",&MAX);

printf("MAX = %d i= %d \n\n",MAX,i);

for(i=1;i<=MAX;i++)

{

for(j=1;j<=MAX;j++)

{

printf("%2d*%2d=%3d \n",i,j,i*j);

}

printf("\n");

}

system("PAUSE");

return EXIT_SUCCESS;

}



第八次,也是調印出的排版,讓表格可以在螢幕寬度內印完,並且和上端的鍵入值隔開些…。
算是大功告成了。
都是一些小錯誤,慢慢一個一個累積經驗,把它掌握。
一次搞清楚一小點,持之以恒的,把它理清就是你的了。

int main(void)

{

int MAX, i ,j;

printf("key in the matrix size 1<= MAX <=9 : \n");

scanf("%d",&MAX);

printf("\n\n\n");

for(i=1;i<=MAX;i++)

{

for(j=1;j<=MAX;j++)

{

printf("%d*%d=%2d ",i,j,i*j);

}

printf("\n");

}

system("PAUSE");

return EXIT_SUCCESS;

}

沒有留言:

張貼留言