- #include <stdio.h>
- main()
- {
- int i = 1;
- int j;
- for(j = 1;i <= 9;j++)
- {
- if(j <= 9)
- {
- printf("%d*%d=%2d ", i, j, i * j);
- }
- else
- {
- printf("\n");
- i = i + 1;
- j = 0;
- }
- }
- system("pause");
- }
這段程式碼可以用Dev-C來編譯,編譯出來的結果是一個9*9的乘法表。很簡單的程式但我認為是很好入門的程式。
語句解說:
- 第1行是載入C程式的標頭檔,但我們今天先不解釋,照打就好。
- 第2行的main()是C程式必寫,用來通知系統執行程式時要從這邊開始,有更複雜的用法以後有機會再提。
- 第3行的{跟第20行的}是一對,表示第4行到第19行的內容都是屬於main()。
- 第4行int i是指宣告一個變數i為int整數型態並且設為1,型態宣告以後再另開篇幅說明,這裏就先知道i只能用來表示數字,後面的;符號是用來表示一句敘述句結束就跟中文的。一樣。
- 第5行跟第4行不一樣在於宣告時沒有設定j是多少,就像過年拿紅包(j)你不知道裡面有多少錢(有可能有一百萬也有可能只有一塊錢),跟直接給你錢(i)的差別。
- 第6行的for是C程式的重複結構,以for(A;B;C)為例:
- A為一般敘述如j = 1
- B為條件判斷,判斷的結果為真則重複做{}裡面的內容動作,結果為否則離開重複結構,上面程式的B為i <= 9表示當i小於或等於9的時候進入重複結構否則離開重複結構。
- C也是一般敘述,跟A不同的是A只有在for開始時執行一次,C則是每執行完結構中內容就會執行一次,上面程式的C為j++等同於j = j + 1。
- 第7行跟第18行的{}是for的架構標示,表示第8行到第17行是for的重複架構內容。
- 第8行的if是C程式的條件結構,根據小括號內容判斷真假,若為真則執行結構中動作否則不執行,上面程式則是判斷j是否小於等於9。
- 第9行跟第11行的{}是if的架構標示。
- 第10行的printf("%d*%d=%2d ", i, j, i * j);是列印一串字在螢幕上,列印的內容在兩個"引號裡面,在這裡我們要印出變數i、*符號、變數j、=符號、變數i乘變數j的結果,而不是印出i*j=i*j這樣的一串字,於是寫成("%d*%d=%2d ", i, j, i * j),%d跟%2d的意思都是顯示"引號結束後以逗號隔開的變數值(還有%s、%f等等可以使用,有機會再提),第一個%d就會呈現變數i的值,第二個%d就會呈現變數j的值,最後的%2d則是呈現變數i乘變數j的值,%2d的2表示如果顯示的數字小於二位數就會在前面補空格,可以嘗試更改2為其它數字試試,"引號後面的逗號區隔的可以是單一變數也可以是一句敘述,想呈現越多的變數值就用越多的逗號隔開,相反的只要顯示"引號內容的話就不用逗號了。
- 第12行的else必須搭配if來使用,舉個例子來說:如果肚子餓則吃飯否則睡覺,可以寫成:
if(肚子餓)
{
吃飯
}
else
{
睡覺
}
else就是處理「否則」要做的事情。 - 第14行的printf("\n");是將\n顯示到螢幕上,但因為電腦會將\n當成斷行符號,所以這只是將顯示的部分斷行而已。
- 第15行的i = i + 1;跟16行的j = 0;只是一般的敘述句。
- 第19行的system("pause");是將目前的程式及畫面停住,避免程式執行太快沒看清楚就結束被windows關掉,在Mac或Linux就不需要這句。
邏輯解說:
- 因為printf只能做橫向列印,所以我們必須先思考怎麼印出1*1=1 1*2=2 1*3=3....1*9=9
- 要印出這麼一行只需要用:
for(j = 1;j <= 9;j++)
{
printf("1*%d=%2d ", j, 1 * j);
} - 但仔細觀察後可以發現我們必須執行上面類似的動作9次才能順利印出完整的99乘法表,而這次數決定在於i,所以我們把上面的for修改成這樣:
for(j = 1;i <= 9;j++)
{
printf("%d*%d=%2d ", i, j, i * j);
} - 但這樣就形成了無窮迴圈,因為在迴圈內i永遠不會變動也就永遠不會大於9,於是我們再增加if條件架構來處理讓j大於9時就斷行且將i加1於將j歸零(因為j會因為迴圈結束時會再執行j++):
for(j = 1;i <= 9;j++)
{
if(j <= 9)
{
printf("%d*%d=%2d ", i, j, i * j);
}
else
{
printf("\n");
i = i + 1;
j = 0;
}
} - 如此99乘法表就大致完成了。
嫩 要打#include
回覆刪除< stdlib.h >
刪除