2016-03-20 44 views
-2

Bu, n döngüleri için şampuan talimatlarını "durulama ve tekrarlama" ya da "0-4" aralığının dışında bir hata olması durumunda yazdırılması gereken bir ev ödevi problemidir.Ödevdeki sonsuz döngü

Soru: Ben sonsuz bir döngü yaptığımı buldum, ama yaptığımı düşünmemiştim. Sadece birkaç testle bu id’in ne kadar başarılı olduğuna dair kafam karıştı.

#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

kod – pckofwolfs

+1

'iken ((numCycles> 1) && (numCycles <4)) { printf ("% d sonuna kadar eklemiş @chux : Köpük ve durulama. \ N ", N); ++ N; } 'hiçbir zaman' numCycles' değiştirmez. Neden çıkmalı? {Bir kez böyle bir çamaşır makinesi vardı. } – chux

+0

Döngü sonsuz olacak şekilde 'numCycles' değiştirmediniz. –

cevap

1

Döngü koşulunuz sabittir, bu nedenle döngü yürütülmez veya sonsuza dek çalışmaya devam eder. bir döngü kullanmak için kod değiştirme döngüleri kabul edilebilir bir numara talep edilir:

#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

Bunun için teşekkürler. Değişme sürecinde oldu ve böyle bir şey vardı. Ancak, ben N sayım N oldu, ve N ve numCycles her zaman sonsuza kadar entegre bir döngü haline getirerek artırdı. Yardım için hepinize teşekkür ederim: D. – pckofwolfs

+0

@pckofwolfs: "for" döngüsünü kullanabileceğinizi unutmayın. Döngü endeksi başlangıç, final ve artırma değerleri açık olduğu için 'for' döngüsü daha az hatalıdır:' için (int N = 1; N <= numCycles; N ++) {printf ("% d: Lather ve durulama. \ N "N); } ' – chqrlie

1

bu pasajı ne yapar?

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

Bu durum yanlış olana kadar parantez {} içine şeyler yapar. Ama durumda değerler ... hiç değişmez

İlgili konular