2017-12-07 3 views
0

In Ordnung, ich weiß, das ist eine dumme Frage zu stellen, da es mit der umgekehrten Schleife verwandt ist, aber ich habe Mühe, dies zu verstehen. Ich habe sogar versucht, ein separates Reverse für das Loop-Programm zu machen, um den Kontext zu klären, aber ich bin immer noch in Schwierigkeiten.Ich habe Schwierigkeiten, eine Zeile in einem Dezimal zu Binär-Konvertierungsprogramm zu verstehen

So, hier ist mein Code

#include<iostream> 
using namespace std; 
int main() 
{ 
    int i,d,j=0,b[100]; 
    cin>>d; 
    while(d>0) 
    { 
     b[j]=d%2; 
     d=d/2; 
     j++; 
    } 
    //cout<<j; 
    for(i=j-1;i>=0;i--) 
    { 
     cout<<b[i]; 
    } 
} 

Nun erklären Sie mir bitte die for-Schleife. Warum sollte es i=j-1;i>=0;i-- sein? Kann es nicht i=j;i>0;i-- sein?

Wenn ich 109 als Eingabe gebe und mit i=j;i>0;i-- ich 6946348110110 als Ausgabe erhalte und wenn ich i=j;i>=0;i-- verwende dann bin ich 69463481101101

Empfang bin ich ein Anfänger. Bitte helfen Sie!

Antwort

0

Das letzte Mal, die 'while' Schleife ausgeführt wird, b[j]=d%2 wird auf einen Wert hinzufügen, sagen wir mal, die Position 4 (b [0,1,2,3, ]). Die Variable 'j' wird immer noch um eins erhöht, um die Schleife zu beenden und den Wert 5 anzunehmen. Wenn Sie also Ihre 'for' Schleife starten, erhalten Sie einen Tab mit der Nummer 4, aber einen 'j' Wert von 5. Erklären des Nutzens der Verwendung von i=j-1. Ihre Schleife wird nun die Werte [4,3,2,1,0] anstelle von [5,4,3,2,1] überprüfen, was nicht genau ist.

Verwandte Themen