2017-07-16 4 views
-3

ich den folgenden Code geschrieben haben, aber es stecken bleibt:C-Programm Summe der ersten und letzten Ziffern von 4 Digit finden Nummer

#include<stdio.h> 
#include<conio.h> 
int main() 
{ 
    clrscr(); 
    unsigned int num; 
    unsigned int rev=0; 
    int rem,sum=0; 
    printf("Enter a 4 digit number:\n"); 
    scanf("%d",&num); 
    rem=num%10; 
    sum=sum+rem; 
    while(num!=0) 
     { rem=num%10; 
     rev=(rev*10)+rem; 
     num/10; 
     } 
    rem=rev%10; 
    sum=sum+rem; 
    printf("Sum of first and last digits of number=%d",sum); 
    getch(); 
    return 0; 
} 

Bitte sehen, welche Fehler ich mache und warum das Programm stecken bleibt nach dem Laufen es auf Turbo C.

+0

Ich empfehle Ihnen zuerst lesen ** [wie perfekte Frage zu stellen] (https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) ** und dann bearbeiten Sie Ihre Frage entsprechend, um mehr Leute auf Ihre Frage zu ziehen. –

+2

Die Zeile 'num/10;' ändert nicht 'num', so dass die Schleife nicht beendet wird. Sie brauchen 'num/= 10;'. Es scheint ein langatmiger Weg zu sein. Sie sollten überprüfen, dass 'scanf()' eine Nummer hat, dass die Nummer im Bereich 1000..9999 liegt (ansonsten ist es keine 4-stellige Nummer unter den normalen Regeln der englischen Sprache), und dann können Sie ' num/1000 + num% 10', um die benötigte Summe zu erhalten. –

+2

Ja, etwas, das von einem printf() in der Schleife offensichtlich gewesen wäre oder Turbo Debugger :( –

Antwort

1

Um die höchstwertige Ziffer divide es um 1000 zu bekommen, wird es u höchstwertige Stelle, Rückkehr am wenigsten signifikante Stelle nimmt Modul von 10, zB

zu bekommen
int rem = num%10; 
int sum = num/1000+ rem; 
+0

Danke. Es hat wie ein Zauber funktioniert. –

2

verwenden eine Zeile, die spezifisch für 4 Stellen:

printf("The sum of first and last digit of %d is: %d",n,n/1000+n%10); 

Und das Problem in Ihrem Code ist:

while(num!=0) 
     { rem=num%10; 
     rev=(rev*10)+rem; 
     num/10;///-------------------->this line do num/=10; instead 
     } 

Correct es so:

while(num!=0) 
     { rem=num%10; 
     rev=(rev*10)+rem; 
     num/=10; 
     } 
Verwandte Themen