2017-03-01 83 views
-3

此代碼嘗試對輸入數字中的數字進行計數。如何統計數字中的數字,包括前導零?

如果輸入數字是06584,則此代碼的輸出將爲4,不包括零。我怎麼能得到5作爲輸出(所以計數零)?

#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

沒有數學的解決方案是要檢測前導零。您必須以字符串的形式讀取用戶的輸入並獲取字符串長度。 – Kenster

+0

你應該在你的while之前添加n的'printf',你會看到前面的0(s)已經消失 – pm100

+1

'char n [100];的scanf( 「%S」,正); C = strlen的(N);'。假設輸入有效,這會給你數字的個數。要驗證它確實是一個使用'strtol'的數字。 – kaylum

回答

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

如何計算一個數位,包括前導零?

要計算輸入的位數(包括前導0位數),請在數字前後記錄掃描偏移量。此方法會將符號字符報告爲數字,但不會計入前導空格。

使用"%n"記錄到目前爲止掃描的字符數。 @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"); 
    } 
} 

輸出

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