2016-03-20 14 views
-2

これは、nサイクルの間、「すすぎとリピート」シャンプー命令を印刷することになっている宿題の問題です.nが0-4の範囲外の場合はエラーになります。宿題内の無限ループ

質問: 私は無限ループを作ったことが分かりましたが、私はそうは思わなかった。私はidがいくつかのテストですべてを達成する方法について混乱しています。

#include <stdio.h> 

/* Your solution goes here */ 
void PrintShampooInstructions(int numCycles) { 
    int N = 1.0; 
    while ((numCycles > 1) && (numCycles < 4)) { 
     printf ("%d:Lather and rinse.\n", N); 
     ++N; 
    } 
    if (numCycles < 1) { 
     printf ("Too few.\n"); 
     return; 
    } else 
    if (numCycles > 4) { 
     printf ("Too many.\n"); 
     return; 
    } else { 
     printf ("Done.\n"); 
     return; 
    } 
} 

int main(void) { 
    PrintShampooInstructions(2); 
    return; 
} 
+0

Iコード – pckofwolfs

+1

'一方((numCycles> 1)&&(numCycles <4)) {のprintf("%dの終わりにこれを追加した@chux :泡とすすぎ。\ n "、N); ++ N; } 'numCycles'を決して変更しません。なぜそれを終了する必要がありますか? {私は一度そのような洗濯機を持っていた。 } – chux

+0

あなたは 'numCycles'を変更していないので、ループは無限になります。 –

答えて

1

ループ条件は定数なので、ループが実行されないか、永久に実行されます。ループを使用するコードへの変更は、許容されるサイクル数が要求されています:

#include <stdio.h> 

void PrintShampooInstructions(int numCycles) { 
    if (numCycles < 1) { 
     printf("Too few.\n"); 
     return; 
    } else 
    if (numCycles > 4) { 
     printf("Too many.\n"); 
     return; 
    } else { 
     int N = 1; 
     while (N <= numCycles) { 
      printf("%d: Lather and rinse.\n", N); 
      ++N; 
     } 
     printf("Done.\n"); 
     return; 
    } 
} 

int main(void) { 
    PrintShampooInstructions(2); 
    return 0; 
} 
+0

ありがとうございます。それを変える過程にあって、このようなものがあった。しかし、私はNが pckofwolfs

+0

@pckofwolfs: 'for'ループを使うことができることに注意してください。 'for'ループは、ループインデックスの初期値、最終値、およびインクリメント値が明示的であるため、エラーが起こりにくくなります:' for(int N = 1; N <= numCycles; N ++){printf( "%d: "、N); } ' – chqrlie

1

このスニペットの機能は何ですか?

int N = 1.0; 
while ((numCycles > 1) && (numCycles < 4)) 
{ 
    printf ("%d:Lather and rinse.\n", N); 
    ++N; 
} 

条件が偽になるまで、括弧{}の内側のものを作ります。しかし、条件の値は...変わらない