如何从C中的数字中提取数字?从最重要的数字开始?

Bri*_*own 1 c

从C中从最不重要开始的数字中获取数字非常简单:

#include <stdio.h>

int main()
{
    int num = 1024;

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


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是如何从第一个数字(此处为1)开始提取数字,该解决方案可以应用于任何数字?

对于数组来说这是微不足道的,但我不想使用数组,我不想使用逻辑运算符.

Spi*_*rix 5

以下程序可以满足您的需求:

#include <stdio.h>

int main()
{

    int num =0;
    int power=1;

    printf("Enter any number:");
    scanf("%d",&num);

    while(num>power)
      power*=10;

    power/=10;

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



    return 0;
}
Run Code Online (Sandbox Code Playgroud)


rcg*_*ldr 2

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

#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);
}
Run Code Online (Sandbox Code Playgroud)

或者稍微优化一下:

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);
}
Run Code Online (Sandbox Code Playgroud)