前面幾天里,學(xué)習(xí)并記錄了 C# 編程語言的部分基礎(chǔ)知識內(nèi)容。學(xué)習(xí)是需要不斷地學(xué)而時(shí)習(xí)之,一是為了鞏固前面所學(xué)的知識,二是對前面學(xué)習(xí)的內(nèi)容查缺補(bǔ)漏。因此,為了檢驗(yàn)前面所學(xué),下面以九九乘法表為例,做一個(gè)題目練習(xí)。
1、九九乘法表(一)
思路分析
最笨的方法,就是輸入九個(gè) ?Console.WriteLine()
? 在括號里填上對應(yīng)的內(nèi)容,如 ?1 * 1 = 1
? 等等。顯然,如果這么做,那么學(xué)習(xí)編程語言的意義在哪里?我寫在紙上都比這快。
首先,我們并不希望手動(dòng)地一個(gè)一個(gè)敲出數(shù)字 1 到 9,而希望是程序能夠自動(dòng)輸出 1 到 9.因此這里需要使用循環(huán)語句,例如:
for(int i=1;i<=9;i++){...}
這樣一來,就可以獲得了數(shù)字 1 到 9 的內(nèi)容。
但我們需要的是兩個(gè)數(shù)字相乘,前面的循環(huán)語句雖然獲取了一組數(shù)字,但是每次調(diào)用的時(shí)候只有一個(gè)。因此,還需要再一個(gè)循環(huán)嵌套,獲取第二個(gè)數(shù)字來進(jìn)行相乘。
for(int j=1;j<=9;j++){...}
這樣的結(jié)果,是存在一些重復(fù)的內(nèi)容,例如:?1 * 2 = 2
?和 ?2 * 1 = 2
? 。這里,我們需要剔除一些重復(fù)的部分。只需要將上面循環(huán)的條件做一些修改即可:
for(int j=1;j<=i;j++){...}
另外還要提一下 C# 中兩種打印方式,一種是不換行打印 ?Console.Write()
?,一種則是換行打印? Console.WriteLine()
?,也相當(dāng)于? Console.Write("\n")
?.
代碼實(shí)現(xiàn)
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
int num = j * i;
Console.Write("{0} * {1} = {2}", j, i, num);
}
Console.WriteLine();
}
運(yùn)行結(jié)果
2、九九乘法表(二)
思路分析
上面的九九乘法表是第一列是 ?1*x=y
?,第二列則是 ?2*x=y
?…
這時(shí)候變個(gè)需求,希望第一行是 ?1*x=y
?,第二行是?2*x=y
?…
具體的實(shí)現(xiàn)也和上面的思路差不多:
for (int i = 1; i <= 9; i++){
for (int j = i; j <= 9; j++){
int num = i * j;
Console.Write("{0} * {1} = {2}\t", i, j, num);
}
Console.WriteLine();
}
結(jié)果是完成了前面的需求,但是這時(shí)候又萌生了一個(gè)需求,第一列是? x*1=y
?,第二列是?x*2=y
?…說白了,就是靠右對齊。
首先在上面的程序基礎(chǔ)上,我保留了所有,包括了重復(fù)的部分。其次加入了判斷語句,如果第一個(gè)數(shù)字比第二個(gè)數(shù)字小,那么就直接輸出空白。否則就正常輸出。
實(shí)現(xiàn)代碼
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
if (j < i)
{
Console.Write("\t\t");
}
else
{
int num = j * i;
Console.Write("{0} * {1} = {2}\t", i, j, num);
}
}
Console.WriteLine();
}
運(yùn)行結(jié)果
三、總結(jié)
九九乘法表的打印雖然簡單,但也不失樂趣,可以換著花樣來打印乘法表,在這其中也鍛煉了對于編程的邏輯思維。
在寫本篇學(xué)習(xí)記錄的時(shí)候,程序編程方面基本沒啥問題。最大的問題就在于我的表述能力和書面能力,寫的腦瓜子都是嗡嗡的。
如文中若有不當(dāng)之處,或者謬誤之處,還望大家不吝賜教。