對寫過其它程式的我來說,雙迴圈不是很難的,但是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;
}
沒有留言:
張貼留言