如何手动获取数字的第二位数字

时间:2015-01-19 23:58:39

标签: c

#include <stdio.h>

int main(int argc, char *argv[]) {
    int n = 234;

    // Gets first digit
    int digit = n / 100;
    putchar('0' + digit);

    // gets 3rd digit
    digit = n % 10;
    putchar('0' + digit);


}

我怎样才能得到“3”又名第二位?

另外 如果n类似于245836,我怎么能逐一提取每个数字呢?

3 个答案:

答案 0 :(得分:3)

你可以通过除以10然后将除法的余数除以10来实现:

int second = (number / 10) % 10;

一般情况下,你可以考虑整数除以{{1>} - 十次幂 drop k最低有效数字。将余数除以k - 十次幂相当于保持最后k位数。

  

我怎样才能逐一提取每个数字?

您可以使用k取最后一位数字,然后将该数字放在%10之后。

答案 1 :(得分:1)

作为对你已经得到的答案的扩展:一般来说,你可以从右边获得i位数:

int digit = (n / pow(10, i - 1)) % 10;

您可以使用i = log10(n)获取位数,然后向下循环至0. powlog10是浮点函数。

或者,您可以通过按顺序除以10的初始值d来降低10的幂,这也必须是10的幂。您可以找到此值d通过反复将1与10相乘,直到下一次乘法超过你的数字。

这是一个简单的程序,按顺序打印正整数的所有数字:

#include <stdio.h>

int main(int argc, char *argv[])
{
    unsigned int n = 0;
    unsigned int d = 1;

    while (d <= n / 10) d *= 10;

    while (d) {
        unsigned int digit = (n / d) % 10;

        putchar('0' + digit);
        d /= 10;
    }

    putchar('\n');    
    return 0;
}

该示例使用unsigned int,因为它仅适用于非负数。

答案 2 :(得分:0)

这是一个用于在第十个位置打印数字的简单程序。

import java.util.*;
public class Main{

     public static void main(String []args){
         int n;
         Scanner sc=new Scanner(System.in);
         n=sc.nextInt();
         if(n>0)
         {
             n=n%100;
             n=n/10;
         }
        System.out.println(n);
     }
}