2016-03-22 2 views
-1

hier, wenn ich 10 auf dem Konsolenbildschirm eingeben, dann ist die Ausgabe, die ich bekomme, nur 100, während unten, wenn ich dann die ich die ganze Tabelle von 10 auf meiner Konsole eingeben. Ich verstehe nicht, was meinen obigen Code gestoppt hat, um die folgende Ausgabe anzuzeigen. War es die return?Warum sind geschweifte Klammern nach einer for() - Schleifenanweisung, die meinen Code anders verhält?

#include<iostream> 
int main() 
{ 
int n,t,i; 
cout<<"input a number"<<endl; 
cin>>n; 
for(i=1;i<=10;++i) 
{ 
t=n*i; 
cout<<t<<endl; 
} 
return 0; 
} 

in diesem erhalte ich ganze Tisch bis 10. Warum ist das so?

+0

Weil im ersten Beispiel 't = n * i;' die einzige Anweisung im Schleifenkörper ist. 'cout << t << endl;' wird 1 mal nach dem Ende der Schleife ausgeführt. – drescherjm

+0

Ich habe den Code eingerückt, jetzt sollte es klarer sein – bibi

+0

@bibi Der falsche Einzug ist in diesem Fall Teil der Frage. Rolled deine Bearbeitung zurück. –

Antwort

6

Wenn Sie Ihren Code richtig einrücken, können Sie die die erste for-Schleife sehen führt nur eine Anweisung:

#include<iostream> 
int main() 
{ 
    int n,t,i; 
    cout<<"input a number"<<endl; 
    cin>>n; 
    for(i=1;i<=10;++i) 
     t=n*i; // Executed within for loop 
    cout<<t<<endl; 
    return 0; 
} 

während

#include<iostream> 
int main() 
{ 
    int n,t,i; 
    cout<<"input a number"<<endl; 
    cin>>n; 
    for(i=1;i<=10;++i) 
    { // Every statement within the scope block is executed in the for loop 
     t=n*i; 
     cout<<t<<endl; 
    } 
    return 0; 
} 

und bedingte oder Schleifenkonstrukt (if, else, for , while, do), gefolgt von einer einzelnen Anweisung, wird diese Anweisung nur ausgeführt, wenn auf einen Bereichsblock ({}) alle Statements folgen ts innerhalb des Scope Blocks werden ausgeführt.

+0

Re: "alle Anweisungen innerhalb des Bereichsblocks werden ausgeführt" - und das ist, weil der Block ** eine einzige Anweisung ist. Das heißt, "if (true)" führt die folgende Anweisung aus. –

3
for(i=1;i<=10;++i) 
t=n*i; 
cout<<t<<endl; 

entspricht:

for(i=1;i<=10;++i) { 
    t=n*i; 
} 
cout<<t<<endl; 

so die erste Schnipsel t = n * i 10 mal berechnet, aber nur Drucke letzte Bewertung der t aufgrund cout<<t<<endl;, die außerhalb der Schleife angeordnet ist.

Verwandte Themen