Beide Codes kompilieren, aber nur der zweite tut, was ich will. Erster Code:Was ist der Unterschied zwischen diesen beiden Programmen, die Dreieckszahlen berechnen?
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main()
{
int TriNumber = 0;
int n;
for(n = 5; n <= 50; n += 5)
TriNumber = ((n + 1) * n)/2;
printf("The trianglular number of %d is %d\n", n, TriNumber);
}
Welche Ausgänge:
Die dreieckige Zahl von 55 1275
Das folgende Programm ist das tut, was ich will es: es druckt die Dreieckszahl für jeden fünfte ganze Zahl zwischen 5 und 50.
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main()
{
int TriNumber = 0;
int n;
for(n = 5; n <= 50; n += 5)
printf("The trianglular number of %d is %d\n", n, TriNumber = (((n + 1) * n)/2));
}
W hich gibt meinen gewünschten Ausgang:
Die dreieckige Zahl von 5 15
Die dreieckige Zahl von 10 ist, 55
Die dreieckige Zahl von 15 ist 120
Die dreieckige Zahl von 20 ist 210
Die dreieckige Zahl von 25 325 ist
Die dreieckige Zahl von 30 465
von 35 Die dreieckige Zahl beträgt 630
Die dreieckige Zahl von 40 820 ist
Die dreieckigen nu mber von 45 1035
Die dreieckige Zahl von 50 ist 1275
Ich verstehe nicht, warum eine solche hätte unterschiedliche Ergebnisse in dem ersten Code und innerhalb der printf
Funktion in dem zweiten Code TriNumber = ((n + 1) * n)/2;
in einer eigenen Zeile setzen .
Das erste Snippet berechnet "TriNumber" zehn Mal und druckt es dann einmal. Das 'printf' ist ** nicht ** in der Schleife. – user3386109
'for' ist der Beginn einer Schleife. Die nächste _Anweisung_ wird so lange wiederholt, wie die Schleifenbedingung erfüllt ist. In Ihrem ersten Beispiel erfolgt der Ausdruck _ nachdem die Schleife beendet ist. Ihr zweites Beispiel, der Druck ist Teil der Schleife. –
Überprüfen Sie Ihre Kursnotizen. Die einzige Anweisung, die direkt nach dieser 'for'loop-Anweisung ausgeführt wird, ist ... – usr2564301