Drucken Sie ein Muster mit While-Schleifen und nur mit der drei Ausgabe-Anweisungen in C
Habe ich eine Zuweisung für die Schule, dass ist wirklich das beste von mir.
Hier ist die Frage:
(2) Schreiben Sie ein C-Programm mit, während
Schleife(N) in Kombination mit nur den
folgende drei Ausgabe-Anweisungen
(Alle, die NUR EINMAL in Ihrem
Programm): printf("* "); printf("\n");
printf(“^“); zum drucken der Muster:* * * * * * * * ^ * * * * * * * * * * * * * * * * ^ * * * * * * * * * * * * * * * * ^ * * * * * * * *
Hinweis: es ist ein Leerzeichen zwischen den einzelnen *
und die ersten, Dritten und fünften Linien
ein Leerzeichen vor dem ^.
Und hier ist mein code:
#include<stdio.h>
int main () {
int star = 0;
int row = 1;
int hat = 1;
while(row < 6) {
printf(" *");
star++;
while(star > 8) {
while( (hat % 2) == 1) {
printf(" ^");
}
printf("\n");
row++;
}
}
return 0;
}
Ich habe versucht viele verschiedene Versionen von diesem code, und die meisten von Ihnen endete mit unendlich drucken Zeilen der *.
Wenn jemand helfen könnte wäre es toll, da habe ich versucht, und versucht auf diese für eine Weile jetzt, und obwohl ich wünschte, ich könnte halten Sie versuchen, Fristen sind Fristen, und Sie scheinen immer zu kommen zu schnell.
Dank
EDIT:
Rev. 2 des Kodex:
include<stdio.h>
int main () {
int star = 0;
int row = 1;
int hat = 0;
while(row <= 6) {
printf(" *");
star++;
while(star >= 8) {
hat++;
if( (hat % 2) == 1) {
printf(" ^");
hat++;
}
printf("\n");
row++;
star = 0;
}
}
return 0;
}
Hoffentlich bin ich beenden des loops korrekt, aber Es scheint nicht zu funktionieren.
Ich verlange nicht, für eine "get out of jail free" - Karte, aber alle sind willkommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Antwort ist hier
hat
nur, um Sie später zu zuordnen, um den Wert vonrow
(andere als raus, dass schlecht durchdachte Schleife)?Nur ein Tip:
sollte ein
if()
und sollte irgendwo in Ihrem Programm.Das erste problem ist in diesem block:
Du nie zurückgesetzt
star
wenn man in die nächste Zeile.Außerdem sehe ich nicht ein, Sie Inkrementieren
hat
überall.Ich bin überrascht, dass Ihre stars print-unendlich - da
hat
bei 1 beginnt und nicht im inneren, dasswhile
Schleife, die Schleife sollte nie kündigen.Einem anderen problem -
star
zählt die Anzahl der Sterne, die Sie haben bereits gedruckt, richtig? So, Sie wollen nur 8 Sterne pro Zeile, aber zu warten, bisstar > 8
Ihnen erlaubt, zu drucken 9 pro Zeile.hat
ist behoben, d.h. es wird keine increment und überallstar
wird nicht zurückgesetzt jedes mal in der Schleife...ich habe hervorgehoben, die problematischen Zeilen...Hoffe, das hilft,
Beste Grüße,
Tom.
Wenn Sie haben eine unendliche while-Schleife, dann überprüfen Sie Ihre loops, die für dieses Muster:
Die übliche Ursache für eine Endlosschleife ist, dass die änderung von var ist nicht im inneren der Schleife, so var nie erreichen wird das exitcondition.