it-swarm.com.de

Drucken von 1 bis 1000 ohne Schleife oder Bedingungen

Task: Gibt Zahlen von 1 bis 1000 aus, ohne eine Schleife oder bedingte Anweisungen zu verwenden. Schreiben Sie die Anweisung printf() oder cout nicht 1000-mal.

Wie würden Sie das mit C oder C++ machen?

323
Saurabh Gokhale

Ich nehme nicht an, dass dies eine "Trickfrage" ist. . . "?:" ist keine Bedingung, sondern ein Operator.

Verwenden Sie also die Rekursion und den Operator?:, Um zu ermitteln, wann zu stoppen ist.

int recurse(i)
{
   printf("%d\n", i);
   int unused = i-1000?recurse(i+1):0;

}

recurse(1);

Oder entlang einer ähnlichen perversen Denklinie. . . Die zweite Klausel in einer "&" - Bedingung wird nur ausgeführt, wenn der erste Wert wahr ist. So rekursieren Sie so etwas:

i-1000 & recurse(i+1);

Vielleicht hält der Interviewer das für einen Ausdruck statt für eine Bedingung.

0
Frank Merrow

Sie können System() verwenden, um 1 bis 1000 zu drucken (mit nter Verwendung des DOS-Befehls)

 include <process.h>
 void main()
 {
     system("cmd.exe /c for /l %x in (1, 1, 1000) do echo %x" );
 }

Führen Sie die Datei .exe (ausführbar) Ihres Programms aus, die 1 bis 1000 anzeigt

HINWEIS: In WINDOWS getestet

0
Javed Akram

Ich werde nicht den Code schreiben, sondern nur die Idee. Wie wäre es, einen Thread zu erstellen, der eine Zahl pro Sekunde druckt und dann den ersten Thread nach 1000 Sekunden von einem anderen Thread abbricht?

hinweis: Der erste Thread generiert Zahlen durch Rekursion.

0
Kay Chan

ich denke, dieser Code funktioniert perfekt und es ist leicht zu verstehen, dass Sie 1 bis 100 oder 1 bis zum Endbereich drucken können. setzen Sie es einfach in i ein und übertragen Sie es zur Aufruffunktion.

int main()
{
    int i=1;
    call(i,i);
}

void call(int i,int j)
{
    printf("%d",i);
    sleep(1); // to see the numbers for delay
    j /= (j-1000);

    j = ++i;

    call(i,j);
}

also, wenn j gleich 1000 ist, wird es durch Null geteilt und es verlässt direkt das Programm, das meine Idee ist, die Zahlen zu drucken

oder viel einfacher Code ..

int main()
{
    static int i = 1;
    static int j = 1;
    printf("%d", i);
    sleep(1);
    j = ++i;
    j /= (j-1000);
    main();
}
0
jack