2017-03-01 3 views
-3

Ce code tente de compter les chiffres dans le numéro d'entrée.Comment compter les chiffres dans un nombre, y compris les zéros en tête?

Si le numéro d'entrée est 06584, la sortie de ce code sera 4, à l'exclusion de zéro. Comment puis-je obtenir 5 en sortie (donc en comptant le zéro)?

#include<stdio.h> 
void main() 
{ 
    int n,c=0,d; 
    printf("Enter no\n"); 
    scanf("%d",&n); 
    while(n!=0) 
    { 
     d=n%10; 
     c++; 
     n=n/10; 
    } 
    printf("No of digits=>%d\n",c); 
} 
+8

Aucune solution mathématique va détecter un zéro. Vous devez lire l'entrée de l'utilisateur sous forme de chaîne et obtenir la longueur de la chaîne. – Kenster

+0

vous devez ajouter 'printf' de n avant votre temps, vous verrez que le 0 principal (s) est allé – pm100

+1

' char n [100]; scanf ("% s", n); c = strlen (n); Cela vous donnera le nombre de chiffres en supposant que l'entrée est valide. Pour vérifier que c'est bien un nombre, utilisez 'strtol'. – kaylum

Répondre

0
#include<stdio.h> 
#include <string.h> 
int main() 
{ 
    char n[101]; 
    printf("Enter no\n"); 
    scanf("%100s",n); 
    printf("No of digits=>%d\n",strlen(n)); 
} 
3

Comment compter les chiffres dans un certain nombre, y compris des zéros à gauche?

Pour compter le nombre de chiffres entrés, y compris les 0 premiers chiffres, enregistrez les décalages de balayage avant et après le nombre. Cette méthode signale un caractère de signe en tant que chiffre, mais ne compte pas l'espace blanc principal.

Utilisez "%n" pour enregistrer le nombre de caractères numérisés jusqu'à présent. @BLUEPIXY

#include<stdio.h> 

int main() { 
    int begin; 
    int after = 0; 
    int number; 
    printf("Enter number\n"); 
    fflush(stdout); 
    //  +--- consumes leading white-space 
    //  | +- record number of characters scanned 
    scanf(" %n%d%n", &begin, &number, &after); 
    if (after > 0) { 
    printf("No of digits: %d\n", after - begin); 
    printf("Value read : %d\n", number); 
    } else { 
    puts("Invalid input"); 
    } 
} 

Sortie

Enter number 
    00
No of digits: 6 
Value read : 123