2016-04-12 15 views
0

Ich muss die Ziffer von der ersten bis zur letzten ohne Verwendung von Arrays, binären Operationen oder Rekursion drucken. Zusätzlich sollte jede Ziffer als Text gedruckt werden.Drucken Sie die Ziffer von der ersten bis zur letzten als ein Text ohne Verwendung von Arrays, Rekursion oder Binäroperation in C

#include <stdio.h> 

int main() { 
    int a,x; 

    printf("Give a number : "); 
    scanf("%i", &a); 
    do { 
    switch (x % 10) { 
     case 0 : 
     printf("zero "); 
     break; 
     case 1 : 
     printf("one "); 
     break; 
     case 2 : 
     printf("two "); 
     break; 
     case 3 : 
     printf("three "); 
     break; 
     case 4 : 
     printf("four "); 
     break; 
     case 5 : 
     printf("five "); 
     break; 
     case 6 : 
     printf("six "); 
     break; 
     case 7 : 
     printf("seven "); 
     break; 
     case 8 : 
     printf("eight "); 
     break; 
     case 9 : 
     printf("nine "); 
     break; 
     default: 
     printf("Error \n"); 
     break; 
    } 
    x /= 10; 
    } while (a); 
    printf("\n"); 
} 

Der Ausgang für 123 ist drei zwei eins. Das wünschenswerte: eins zwei drei. Irgendwelche Ideen?

+0

Die Drucke umkehren. Fall 9: printf ("Null"); – Oscar

+1

@Oscar - wirklich? Also, wenn ihre Eingabe 999 ist, sollte es Null Null drucken? – KevinDTimm

+1

Zum OP - Ihr Programm wird Kauderwelsch ausgeben, da Sie a niemals x zuweisen. Außerdem ist nicht klar, was Sie wollen und was Sie bekommen. – KevinDTimm

Antwort

0

Sie können die Ziffern in der Zahl zählen und dann das/stattdessen% verwenden.

Zum Beispiel gibt es für 123 3 Ziffern, also berechnen Sie pow (10,3-1), was gleich 100 ist. Dann ist 123/100 gleich eins. Nach dieser neuen Nummer erhalten Sie 123% 100 und beim nächsten Mal teilen Sie durch 100/10. Also 23/10 ist gleich 2. Bis Sie die weniger als 10 Nummer erreichen und diese am Ende ausdrucken. Also 3 endlich gedruckt.

1

Kehren Sie die Nummer um, bevor Sie sie an die Switch-Anweisung übergeben. Sehen Sie, ob das folgende Programm funktioniert. Ich habe es noch nicht getestet.

#include <stdio.h> 

int main() { 
    int a, temp, reverse = 0; 



    printf("Give a number : "); 
    scanf("%i", &a); 
     temp = a; 

while (temp != 0) 
{ 
    reverse = reverse * 10; 
    reverse = reverse + temp%10; 
    temp = temp/10; 
} 

    do { 
    switch (reverse % 10) { 
     case 0 : 
     printf("zero "); 
     break; 
     case 1 : 
     printf("one "); 
     break; 
     case 2 : 
     printf("two "); 
     break; 
     case 3 : 
     printf("three "); 
     break; 
     case 4 : 
     printf("four "); 
     break; 
     case 5 : 
     printf("five "); 
     break; 
     case 6 : 
     printf("six "); 
     break; 
     case 7 : 
     printf("seven "); 
     break; 
     case 8 : 
     printf("eight "); 
     break; 
     case 9 : 
     printf("nine "); 
     break; 
     default: 
     printf("Error \n"); 
     break; 
    } 
    reverse /= 10; 
    } while (reverse); 
    printf("\n"); 
} 
+0

Warum den unnötigen Schritt des Rückwärtsfahrens durchlaufen? – KevinDTimm

+0

Ich denke sein Hauptanliegen ist die Tatsache, dass eine Zahl wie 256 Drucke als "sechs fünf zwei" und nicht "zwei fünf sechs". Deshalb muss die Nummer zuerst umgekehrt werden, damit der Rest seines Programms wie gewünscht funktioniert. – VHS

+0

Ich basierte meine Lösung auf seinem Titel, da es nicht klar ist, ob er die Zahlen vorwärts oder rückwärts will. Wenn ersteres erforderlich ist, müssen die Ziffern umgekehrt werden. – KevinDTimm