日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何使用一个for循环输出九九乘法表

發布時間:2023/12/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用一个for循环输出九九乘法表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題引入

很多人剛接觸C語言的時候一定會遇到這樣一個題目,在屏幕上輸出九九乘法表。我相信大多數人的解法都會是使用兩個for循環,兩個變量,一個if判斷語句用來判斷什么時候換行。

問題1:在屏幕上輸出一個九九乘法表。

代碼

int main() {int i = 0;int j = 0;for (i = 1; i <= 9; i++){for (j = 1; j <= i; j++){printf("%d*%d=%d ", i, j, i*j);if (i == j)printf("\n");}}return 0; }

結果如圖

上面這種解法是正常解法,這樣實現起來可能對很多人來說都沒有問題,但是前段時間網上有人提出是否能只用一個for循環語句做出同樣的效果。這是個很有趣的問題,仔細想想其實也不難實現,很多人給出了解法。

問題2:如何使用一個for循環輸出九九乘法表。

思路
網上給出的大多數答案基本思路是使用兩個變量,在一個for循環中一個控制每行有多少個算式,另一個控制有多少行。然后在這個for循環內加入一個if判斷語句,用來判斷是否要換行。

int main() {int i, j;for (int i = 1, j = 1; j <= 9; i++){//i控制每行算式個數,j控制共有多少行。printf("%d*%d=%d ", i, j, i*j);if (i == j) {//當i = j 這一行輸入結束,換行。再把i置0。i = 0;j++;printf("\n");}}return 0; }

這樣改過之后同樣也可以實現輸出九九乘法表,但其實這種解法可以算只是把兩個for循環合并,大體思路還是一樣的,還是利用了if去判斷是否要換行。那么是否可以給出另一種不用if的語句的解法呢?

問題三:在只能使用一個for語句且不能用if判斷語句的情況下輸出九九乘法表。

思路

既然題目給出只能使用一個for語句,那么是否可以用遞歸來代替另一個for語句呢?
當然是可以的,那么又要怎么才能判斷什么時候換行呢?

這里我采取另一種思路,每打印一行就換一次行。每一層遞歸中都給出一個換行操作,在當整個一行輸出完成之后換行。再在函數的最后調用函數本身,再打印下一行。最后當打印完第九行的時候跳出遞歸。

不過這里不能使用if語句,那么又如何判斷是否達到第九行呢?

這里就想到了C語言里面有一種叫做短路的現象,即a || b ,如果a 的值為真,整個表達式的值就為真。b 的真假由最初的真假來判斷,也就是說,當a 為真時,b 則不進行運算了。這就可以完美的實現題目的要求。

代碼

bool printTable(int n) {for (int i = 1; i <= n; i++){printf("%d*%d=%d ", i, n, i*n);}printf("\n");return n == 9 || printTable(++n);//n等于9那么跳出遞歸,否則進入下一層遞歸 }int main() {int n = 1;printTable(n);return 0; }

總結

以上是生活随笔為你收集整理的如何使用一个for循环输出九九乘法表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。