2015年11月13日 星期五

[C語言筆記]九九乘法表 (KK乘法表 + 任意乘法表) (for、if用法)

單元 : 九九乘法表


題目一  : 印出九九乘法表

題目二 : 印出KK乘法表

題目三 : 印出任意乘法表


.★° .★° .★° .★° .★° .★° .★° .★° .★° .★° .★°


在打教學文,再次聲明一件事情;

會想打這些,純粹是對我自己學習的一個紀錄
以及想說可以幫助到一些搜尋到這些關鍵字的人。


這些題目是我第一次上程式設計課所需要完成的作業
或許在有些學校,教授也會分配給學生"類似的作業" (畢竟蠻基本的)
---因此我很怕有些初學者會"抄襲"這些Code,直接交作業。


你可以參考,弄懂原理,甚至還是有不懂可以在下面提問
但希望不要一片好心反而誤了學習者的前途,實質的沒學會。



.★° .★° .★° .★° .★° .★° .★° .★° .★° .★° .★°



題目一  : 印出九九乘法表

--- ---

解說 :


1.

printf(" \t|\t 0\t 1\t 2\t 3\t 4\t 5\t 6\t 7\t 8\t 9\n");
printf("--------------------------------------------------------------------------------------------\n");


這裡主要是排版用。
Tab鍵在C語言裡面,要用 Printf 顯示的話是 " \t " 

因為題目訂為"99乘法表",所以直接輸出1~9,並且以Tab分隔。

顯示會長這樣 : 

    |    0    1    2    3    4    5    6    7    8    9
--------------------------------------------------------

(我這邊Tab用空白鍵代替)

其實這邊可以用 for 迴圈來做,但是待後面講。

2.


for(x=0 ; x<=9 ; x++)
{
printf("%d\t|",x);

for(y=0 ; y<=9 ; y++)
{
z = x*y;
printf("\t%d",z);
}

printf("\n");
}


這邊展示的是 "雙迴圈"

可能有些人會問 : 我一個迴圈都不會怎麼會雙迴圈 ?

那麼,就先來講解一迴圈吧。

--------------------------------------------------------------------------------------

for的使用方法 :

(我用的講法比較狹義,但比較好懂)

for ( i = 0 ; i < 5 ; i ++ )
{
    事情;
}

--->在這個例子中

i 是for執行時的變數,
i = 0   --->  i 從 0 開始
i < 5 ;   ---> i 從 0 執行到 5就會跳出迴圈 (也就是最後一個是4)
i ++ ;   --->  i 每次+1  ( i ++就是 i + 1

也就是說,這個 for 迴圈在跑的時候,會跟著 i 的值,從 0,1,...,4 的值去執行。
i 在這裡只要把他當作一個"基準點"就好,0 ~ 4 是 5 個數字,所以執行 5 次。

那個 i ++ 當然也可以改成 i --  ( i 每次 -1 )
我們若寫成 i = 5;i  > 1;i --
i 的值就會從 5,4,3,2 然後停住,因為要求 i > 1。
---> 也就是執行四次。

由於這個 i 值會隨時改變,所以我們可以利用這點來對"裡面做的事情"做調整。

例如 :
for ( i = 0 ; i < 5 ; i ++ )
{
    printf ("數字 : %d\n", i );
}

這樣結果就會是

數字 : 0
數字 : 1
數字 : 2
數字 : 3
數字 : 4

--------------------------------------------------------------------------------

讓我們回到題目,我用的雙迴圈。

我們先把 for 裡面的第二個 for( ... ){ ... } 都先不要看
會剩下

for(x=0 ; x<=9 ; x++)
{
printf("%d\t|",x);

printf("\n");
}


這樣的輸出結果會是

0    |
1    |
2    |
...
...
9    |


那如果加入第二個迴圈後,"實際模仿一下電腦思維去看程式執行"。

假設,x現在已經跑到3了。


for(x=0 ; x<=9 ; x++)                      // 此時 x =3
{
printf("%d\t|",x);                           //  輸出是 : 3    |

for(y=0 ; y<=9 ; y++)                   //   y 從 0 開始跑
{
z = x*y;                                       //  x = 3   y = 0  z = 3*0 = 0
printf("\t%d",z);                          // 輸出 :     0
}                                                    // 回到 for (y),y+1 = 1 ,還沒到9所以繼續跑

                                                        // 跑完上面的小 for 迴圈後,輸出長 : (下面一行)
                                                        // 3    |    0    3    6    9    12    15    18    21    24    27
printf("\n");                                   //換行
}

然後 x 會再 +1 ,一直跑到 9 為止。


這樣,就能把 99乘法表全部列出來。


.★° .★° .★° .★° .★° .★° .★° .★° .★° .★° .★°

題目二 : 印出KK乘法表

--- ---


解說 :







.★° .★° .★° .★° .★° .★° .★° .★° .★° .★° .★°

題目三 : 印出任意乘法表


--- ---


解說 :











沒有留言:

張貼留言