找回密碼
 註冊

請問C++程式設計雙層while迴圈

来源: 2769212 2012-2-27 21:31 只看這個作者 |閱讀模式
8 8796
試利用雙層while迴圈列印9*9乘法表的部分區域,如下列所示:   

2*3= 6   2*4= 8  
3*3= 9   3*4=12   3*5=15   
4*3=12   4*4=16   4*5=20   4*6=24   
5*3=15   5*4=20   5*5=25   5*6=30   5*7=35
6*3=18   6*4=24   6*5=30   6*6=36   6*7=42   6*8=48


(試利用雙層while迴圈列印9*9乘法表的部分區域,如下列所示:  

    1*1= 1   1*2= 2   1*3= 3   1*4= 4   1*5= 5   1*6= 6   1*7= 7
    2*1= 2   2*2= 4   2*3= 6   2*4= 8   2*5=10   2*6=12
    3*1= 3   3*2= 6   3*3= 9   3*4=12   3*5=15
    4*1= 4   4*2= 8   4*3=12   4*4=16
    5*1= 5   5*2=10   5*3=15
    6*1= 6   6*2=12


試利用雙層while迴圈列印9*9乘法表的部分區域,如下列所示:   

     4*2= 8   4*3=12   4*4=16   4*5=20   4*6=24  4*7=28   4*8=32
                 5*3=15   5*4=20   5*5=25   5*6=30   5*7=35   5*8=40
                              6*4=24   6*5=30   6*6=36   6*7=42   6*8=48
                                            7*5=35   7*6=42   7*7=49   7*8=56
                                                         8*6=48   8*7=56   8*8=64
                                                                      9*7=63   9*8=72

我的參考程式如下:

/* prog7_10, 巢狀while迴圈求9*9乘法表 */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   int i=1, j=1;                /* 設定迴圈控制變數的初值 */
   
   while (i<=9)                /* 外層迴圈 */
   {
      while (j<=9)        /* 內層迴圈 */
      {
         printf("%d*%d=%2d  ",i,j,i*j);
         j++;
      }
      printf("\n");
      i++;
      j=1;
   }
   system("pause");
   return 0;
}

但不知道要怎麼改才能像題目一樣那麼有規則
自己試了好多種方法,都沒辦法那麼有規則
不知道板友們有沒有什麼好方法呢?
收藏
收藏0
不會有終點...

網友回覆8

跳到指定樓層
由於列印的時候
會斷行往下列印。
所以你要用字串相加的方式,還必須計算空格。
也就是用最長的組合當成全部的字數,減去每次產生的字元,就是要搭配的空格。
另外你必須考慮迴圈的變數組合方式。

[ 本文章最後由 mickeykai 於 2012-2-27 21:53 編輯 ]
小時候不念書,長大是要還利息的
                       ~Address~~彎道舞者~~~
3#
s203212 2012-2-27 21:57 只看這個作者
這是考試題目?作業?可以明講沒關係~因為我以前也問過
你要的規則是啥?我先改第一題~

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   int i=2, j=3,k=4;                /* 設定迴圈控制變數的初值 */
   
   while (i<=6)                /* 外層迴圈 */
   {
      while (j<=k)        /* 內層迴圈 */
      {
         printf("%d*%d=%2d  ",i,j,i*j);
         j++;
      }
      printf("\n");
      i++;
      j=3;k++;
   }
   system("pause");
   return 0;
}
參與人數 1經驗值 +5 收起 理由
2769212 + 5 多謝相救!

瀏覽全部評分總評分 :  經驗值 +5

4#
2769212 2012-2-27 22:09 只看這個作者
原文章由 mickeykai 於 2012-2-27 21:51 發表 請問C++程式設計雙層while迴圈2989
由於列印的時候
會斷行往下列印。
所以你要用字串相加的方式,還必須計算空格。
也就是用最長的組合當成全部的字數,減去每次產生的字元,就是要搭配的空格。
另外你必須考慮迴圈的變數組合方式。


糟糕 有看沒有懂請問C++程式設計雙層while迴圈6182
不過還是謝謝你的回答
看了下面那位板有的程式
我大概懂意思了


原文章由 s203212 於 2012-2-27 21:57 發表 請問C++程式設計雙層while迴圈9516
這是考試題目?作業?可以明講沒關係~因為我以前也問過
你要的規則是啥?我先改第一題~

#include
#include
int main(void)
{
   int i=2, j=3,k=4;                /* 設定迴圈控制變數的初值 */
   
   while (i

是上課練習的題目請問C++程式設計雙層while迴圈1555
所以還要再多寫一個宣告變數?
至於可以讓他類似遞減這樣的方法是k++?
不知道這是什麼意思呢?
因為本人對程設設計真的很沒轍,很頭痛請問C++程式設計雙層while迴圈1912
其實也不是什麼規則,應該說我不知道該用什麼指令才可以像題目那樣
上課練習題,剛好那天我還沒回到學校,所以就完全不知道該怎麼辦請問C++程式設計雙層while迴圈5679
不會有終點...
5#
2769212 2012-2-27 22:18 只看這個作者

回覆 3# s203212 的文章

第二題我用你的方法解出來了!


#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   int i=1, j=1,k=7;                /* 設定迴圈控制變數的初值 */
   
   while (i<=6)                /* 外層迴圈 */
   {
      while (j<=k)        /* 內層迴圈 */
      {
         printf("%d*%d=%2d  ",i,j,i*j);
         j++;
      }
      printf("\n");
      i++;
      j=1;k--;
   }
   system("pause");
   return 0;
}

至於第三題就...又卡關了XD

[ 本文章最後由 2769212 於 2012-2-27 22:31 編輯 ]
不會有終點...
只是路過此地...稍微給個hint

方法很多,可以用if else判斷式去弄空格(前提是你會用),也可以直接用printf的格式去修改。

例如在你的printf("\n");後面在加這行printf("%*s",(i-1)*8+8,"");//「%*s」這裡意指,預留空間及字串。
不懂多google,再不懂...小弟在就寢前願意收PM幫你解答XD
剩下一些數字調整的部分...
你自己練習吧XD
參與人數 1經驗值 +5 收起 理由
2769212 + 5 多謝分享!!

瀏覽全部評分總評分 :  經驗值 +5

試利用雙層while迴圈列印9*9乘法表的部分區域,如下列所示:   

     4*2= 8   4*3=12   4*4=16   4*5=20   4*6=24  4*7=28   4*8=32
                 5*3=15   5*4=20   5*5=25   5*6=30   5*7=35   5*8=40
                              6*4=24   6*5=30   6*6=36   6*7=42   6*8=48
                                            7*5=35   7*6=42   7*7=49   7*8=56
                                                         8*6=48   8*7=56   8*8=64
                                                                      9*7=63   9*8=72

4*2= 8   4*3=12   4*4=16   4*5=20   4*6=24  4*7=28   4*8=32  全部的字數是 59
5*3=15   5*4=20   5*5=25   5*6=30   5*7=35   5*8=40 這邊的字數扣掉 59 就是你前面應該放多少空白
就可以排出漂亮的格式
參與人數 1經驗值 +2 收起 理由
2769212 + 2 我還是看不懂Orz

瀏覽全部評分總評分 :  經驗值 +2

小時候不念書,長大是要還利息的
                       ~Address~~彎道舞者~~~
樓主睡了?
沒回應了...
小弟改的稍微留一下,最主要的那行我用紅色mark起來。
對,只加一行,如果要用if else判斷式或土法煉鋼,會多很多行。

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   int i=4, j=2,k=8;                /* 設定迴圈控制變數的初值 */
   
   while (i<=9)                /* 外層迴圈 */
   {
      while (j<=k)        /* 內層迴圈 */
      {
         printf("%d*%d=%2d  ",i,j,i*j);
         j++;
      }
      printf("\n");
      printf("%*s",(i-4)*8+8,"");
      i++;
      j=i-2;
   }
   printf("\n");
   system("pause");
   return 0;
}

程式這種東西多寫,就會熟的,都是過來人...加油吧!請問C++程式設計雙層while迴圈6629
參與人數 1經驗值 +5 收起 理由
2769212 + 5 多謝教導!!

瀏覽全部評分總評分 :  經驗值 +5

9#
2769212 2012-2-28 01:38 只看這個作者
原文章由 andy781210 於 2012-2-27 23:20 發表 請問C++程式設計雙層while迴圈1138
只是路過此地...稍微給個hint

方法很多,可以用if else判斷式去弄空格(前提是你會用),也可以直接用printf的格式去修改。

例如在你的printf("\n");後面在加這行printf("%*s",(i-1)*8+8,"");//「%*s」這裡意指,預留空間及字串。
不懂多google,再不懂...小弟在就寢前願意收PM幫你解答XD
剩下一些數字調整的部分...
你自己練習吧XD


原來如此,還有這個好方法!!
多謝提供阿!
請問C++程式設計雙層while迴圈5809

原文章由 mickeykai 於 2012-2-27 23:42 發表 請問C++程式設計雙層while迴圈5349
試利用雙層while迴圈列印9*9乘法表的部分區域,如下列所示:   

     4*2= 8   4*3=12   4*4=16   4*5=20   4*6=24  4*7=28   4*8=32
                 5*3=15   5*4=20   5*5=25   5*6=30   5*7=35   5*8=40
                              6*4=24   6*5=30   6*6=36   6*7=42   6*8=48
                                            7*5=35   7*6=42   7*7=49   7*8=56
                                                         8*6=48   8*7=56   8*8=64
                                                                      9*7=63   9*8=72

4*2= 8   4*3=12   4*4=16   4*5=20   4*6=24  4*7=28   4*8=32  全部的字數是 59
5*3=15   5*4=20   5*5=25   5*6=30   5*7=35   5*8=40 這邊的字數扣掉 59 就是你前面應該放多少空白
就可以排出漂亮的格式


說真的我還是看不懂XD

原文章由 andy781210 於 2012-2-28 00:39 發表 請問C++程式設計雙層while迴圈4610
樓主睡了?
沒回應了...
小弟改的稍微留一下,最主要的那行我用紅色mark起來。
對,只加一行,如果要用if else判斷式或土法煉鋼,會多很多行。

#include
#include
int main(void)
{
   int i=4, j=2,k=8;                /* 設定迴圈控制變數的初值 */
   
   while (i


原來如此,是這樣!!
多謝板友們的教導!
感激不盡啊!100.gif

今天的+++完了
明天在幫大家+
請問C++程式設計雙層while迴圈1467

[ 本文章最後由 2769212 於 2012-2-28 01:40 編輯 ]
不會有終點...