2017-03-01 2 views
-3

이 코드는 입력 된 숫자의 자릿수를 계산합니다.선행 0을 포함하여 숫자의 숫자를 계산하는 방법은 무엇입니까?

입력 번호가 06584 인 경우이 코드의 출력은 0을 제외한 4이됩니다. 출력으로 5을 얻으려면 어떻게해야합니까? (0으로 계산)?

#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

없음 수학 솔루션은 앞에 0을 감지하려고하지 않습니다. 사용자 입력을 문자열로 읽고 문자열 길이를 얻어야합니다. – Kenster

+0

당신은 n 앞에'printf'를 추가해야합니다. 앞의 0은 사라 졌음을 알 수 있습니다. – pm100

+1

'char n [100]; scanf ("% s", n); 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을 포함하여 다수의 숫자를 계산하려면?

앞에 오는 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 
관련 문제