How to extract digits from a number in C? Begining from the most significant digit?

后端 未结 6 973
无人及你
无人及你 2020-12-18 12:25

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

#include 

int main()
{
    int num = 1024;

    while(         


        
6条回答
  •  没有蜡笔的小新
    2020-12-18 12:36

    I know the question has been answered, but I shall post this answer in case anyone finds it useful.

    #include
    
    //get_int_first gets each digit and multiplies it by it's placeholder value.
    // the number is reconstructed and returned to main
    
    int get_int_first(int num){
        int power = 1,len = 0,first = 0,i = 0;
        int number = 0;
    
        while (num>power){                                          
            power=power*10;                                 //calculating number of zeroes in number. for 789, power = 10 -> 100 -> 1000
        }
        power = power/10;                                   // to multiply with power directly and get highest placeholder, we divide by 10. now power = 100
    
        while (power>1){                                    
            first = (num/power);                            //get digits from the leftmost(100th placeholder/nth placeholder)  f = 7                    f = 8
            number = number + first*power;                  //first*power = gives number as                                    nb = 0 +7*100 = 700      nb = 700 + 80
            num = num - (power*(first));                    //change number to get next significant digit from left            n = 789 - (100*7) = 89   n = 89-10*8=9
            power = power/10;                               //change power to divide number by appropriate power.              p = 100/10 = 10          p = 1
        }
        number = number + num;                              //number is missing the unit's digit and it is stored in num. thus, it is added to number
        return number;
    }
    
    
    int main() {
    
        printf("digits are %d\n",get_int_first(789));
        return 0;
    }
    

提交回复
热议问题