如何从在C号提取数字?从最显著位开始时? [英] How to extract digits from a number in C? Begining from the most significant digit?

查看:97
本文介绍了如何从在C号提取数字?从最显著位开始时?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从数量从C中的至少显著开始四处位数为pretty容易:

Getting digits from a number beginning from the least significant in C is pretty easy:

#include <stdio.h>

int main()
{
    int num = 1024;

    while(num != 0)
    {
        int digit = num % 10;
        num = num / 10;
        printf("%d\n", digit);
    }


    return 0;
}

但是如何提取从第一个数字(在这里是1)开始的数字,该解决方案可以应用于任何数目的

But how to extract digits beginning from the first digit (here 1), that the solution could be applied to any number?

这将是微不足道的使用数组,但我不希望使用数组,我不希望使用逻辑运算符。

It would be trivial with arrays, but I don't want to use array, and I don't want to use logical operators.

推荐答案

假设一个32位有符号数为正,那么作为一个简单的例子:

Assuming a 32 bit signed number that is positive, then as a simple example:

#include <stdio.h>

int main()
{
int rmdr;
int dvsr;
int quot;
    scanf("%d", &rmdr);               // read in number
    dvsr = 1000000000;
    while(0 >= (quot = rmdr / dvsr)){ // skip leading zeroes
        rmdr %= dvsr;
        dvsr /= 10;
        if(dvsr == 1)
            break;
    }
    while(dvsr){                      // display number
        quot = rmdr / dvsr;
        printf("%1d", quot);
        rmdr %= dvsr;
        dvsr /= 10;
    }
    printf("\n");
    return(0);
}

或将小幅优化:

int main()
{
int rmdr;
int rm10;
int dvsr;
int quot;
    scanf("%d", &rmdr);               // read in number
    rm10 = rmdr/10;
    dvsr = 1;
    while(dvsr < rm10)                // skip to 1st digit
        dvsr *= 10;
    while(dvsr){                      // display number
        quot = rmdr / dvsr;
        printf("%1d", quot);
        rmdr %= dvsr;
        dvsr /= 10;
    }
    printf("\n");
    return(0);
}

这篇关于如何从在C号提取数字?从最显著位开始时?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆