Zuerst verallgemeinern sie und wickeln Sie es in einer Funktion. Sie möchten ein Quadrat mit einer Diagonale. Es muss eine gerade Anzahl von Zeichen sein, um richtig auszusehen. Aber + und * könnten ein beliebiges Zeichen sein, und die Größe könnte 6 oder den ganzen Weg bis zur maximalen Bildschirmbreite betragen.
so
/* print a square with a diagonal
N - the size of the sides of the square
cha - character a (eg '+')
chb - character b (eg '*')
*/
void printdiagsquare(int N, char cha, char chb);
Das ist unser Prototyp, und das ist die halbe Miete.
Jetzt müssen wir prüfen, ob N gerade und positiv ist, dann schreiben Sie die Schleifen.
Lassen Sie uns zuerst den Test weg.
if(N < 2 || (N % 2) == 1)
printf(N must be even\n");
Nun ist die Hauptschleife für jede Zeile
for(i=0;i<N;i++)
{
//printline code here
printf("\n");
}
Jetzt testen. Druckt N leere Zeilen?
main(void)
{
printdiagsquare(6, '+', '*');
}
Jetzt, um die Zeilen gedruckt zu bekommen.
zum Drucken von N-1 '+' s ist einfach. Wir brauchen j als Zähler, da ich die äußere
ist
for(j=0;j<N-1;j++)
printf("%c", cha);
Aber wir müssen verallgemeinern, wir 6 ,, 5, 4, 3 und so weiter, wie ich erhöht drucken müssen.
So
for(j=0;j<N-i-1;j++)
printf("%c", cha);
Ich werde das letzte bisschen für Sie zu tun lassen. Kein Punkt, nur blind in eine Funktion eingeben.
Bitte [Bearbeiten] Ihre Frage und den Code dort hinzufügen, nicht in den Kommentaren. –
'für (int i = 0; i <= 5; i ++) printf ("%. * S \ n ", 5," +++++ ***** "+ i);' – BLUEPIXY
wie bei jedem Programm das erste Problem ist, was getan werden muss, Schritt für Schritt. Was muss also getan werden, um die erste Zeile auszugeben? Was ist anders, als die zweite Zeile auszugeben? Nun gibt es eine Reihe von Möglichkeiten, den Code tatsächlich zu schreiben.Wenn sich die Anordnung niemals ändert, dann codiere eine Tabelle, die die Werte enthält, und drucke dann die Tabelle zeilenweise aus. Wenn Sie Flexibilität wünschen, geben Sie die Gesamtzeilen als Parameter ein. und verwenden Sie Schleifen, um die Zeilen auszugeben. – user3629249