找回密碼
 註冊

C++關於for改成do..while問題

来源: 2769212 2012-3-6 18:57 只看這個作者 |閱讀模式
5 4851
原本的程式如下:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int a,b,i;
    printf("請輸入任意正整數\n");
    scanf("%d",&i);
    for(a=1;a<=i;a++)
    {
    for(b=1;b<=a;b++)               
    printf("%c",0);
    printf("%c",42);
    printf("\n");
}
     system("pause");
    return 0;
}

執行結果是:
   *
     *
       *
         *
            *
                 .
                   .
                     .(共n列)  (n就是程式執行後,會有幾個*字號)

而我現在將程式改成用do...while寫,但卻出現了問題
不管n輸入多少,都只有1個*字號,不知道是哪邊改錯了,希望大家能幫我看看

更改程式碼如下:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int a,b,i;
    printf("請輸入任意正整數\n");
    scanf("%d",&i);
    a=1;
    do
    {
    a++;
    }while(a<=i);
    b=1;
    do
    {
    b++;
    }while(b<=a);
    printf("%c",0);
    printf("%c",42);
    printf("\n");      
   
    system("pause");
    return 0;
}
收藏
收藏0
不會有終點...

網友回覆5

跳到指定樓層
你這邊的do while 並沒有形成迴圈
do while 的意思是判定要不要做 並不是 做到不能做為止
所以無論你輸入多少 他都只會做一次
應該要要求程式重新執行直到不符合條件為止
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int a,b,i;
    printf("請輸入任意正整數\n");
    scanf("%d",&i);
    a=1;
    do                    //第一個 do-while要放在頭尾形成迴圈
    {
     a++;
     b=1;
        do                //第二個 do-while就是你的第二個for 迴圈
        {
         b++;
         printf("%c",0);
        }while(b<=a);
   
        printf("%c",42);
        printf("\n");
   
    }while(a<=i);
   
    system("pause");
    return 0;
}


//P.S. 程式碼可以適當空行 比較好閱讀
//如果這是做業我希望你可以弄懂意思 不只是照抄
參與人數 1經驗值 +5 收起 理由
2769212 + 5 謝謝教導!!

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

do
    {
    a++;
    }while(a<=i);
    b=1;
    do
    {
    b++;
    }while(b<=a);

這裡的意義是???
他把B持續加..A持續加...然後都沒PEINTF的動作....
你要把回圈包在外面...加油囉
是阿
你只有執行第一個DO WHILE吧...
試試看把
其中一個DO WHILE迴圈寫在另一個DO WHILE迴圈裡吧!!
099.gif
Good Bye My Love !
原文章由 rex781104 於 2012-3-6 20:16 發表 C++關於for改成do..while問題9514
你這邊的do while 並沒有形成迴圈
do while 的意思是判定要不要做 並不是 做到不能做為止
所以無論你輸入多少 他都只會做一次
應該要要求程式重新執行直到不符合條件為止

原來如此!

原文章由 leejh321 於 2012-3-6 20:26 發表 C++關於for改成do..while問題2800
#include
#include
int main(void)
{
    int a,b,i;
    printf("請輸入任意正整數\n");
    scanf("%d",&i);
    a=1;
    do                    //第一個 do-while要放在頭尾形成迴圈
    {
     a++;
     b=1;
        do                //第二個 do-while就是你的第二個for 迴圈
        {
         b++;
         printf("%c",0);
        }while(b

謝謝你,我大概懂意思了!

原文章由 KUAS1099 於 2012-3-6 20:27 發表 C++關於for改成do..while問題2842
do
    {
    a++;
    }while(a


謝謝版友們的教導!



原文章由 男兒的夏天 於 2012-3-6 20:33 發表 C++關於for改成do..while問題1802
是阿
你只有執行第一個DO WHILE吧...
試試看把
其中一個DO WHILE迴圈寫在另一個DO WHILE迴圈裡吧!!
099.gif

原來是要把它包在一起!!
不會有終點...