开发者社区> 问答> 正文

我如何计算未在C中使用/ 10的数字中的位数?

我需要对二进制编码的十进制数进行计数,例如00111001。我不能使用典型的/ 10,因为它卡在2个最后一个0上并且不对它们进行计数。

#include <stdio.h>
#include <stdlib.h>
void main(void) {
    int bcd, digits;
    printf("Input BCD number: ");
    scanf_s("%d", &bcd);
    for (digits = 0; (bcd / 10) != 0; digits++)
        bcd /= 10;
    printf("Number of digits is %d", digits+1);
    getchar;
}

因此,如果我输入1111,则显示正确的“ 4”,但是当我输入0011时,显示“ 2”,那么如何解决呢?

展开
收起
kun坤 2019-11-29 11:44:10 552 0
1 条回答
写回答
取消 提交回答
  • 当我输入0011时,它显示为“ 2”,那么该如何解决?

    使用"%n"记录扫描的偏移量。

    int n1; int n2; if (scanf_s(" %n%d%n", &bcd, &n1, &n2) == 1) { printf("Input %d\nNumber of digits is %d\n", bcd, n2 - n1); }

    2019-11-29 11:44:19
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载