我怎样才能获得手动一批第2位

问题描述 投票:0回答:3
#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”又名第2位?

此外,如果n为像245836我怎么能提取由一个每个数字吗?

c
3个回答
3
投票

您可以通过除以10,然后十取所得的余数做到这一点:

int second = (number / 10) % 10;

在一般情况下,你可以以10的k次方认为整数除以作为下探k至少显著数字的。通过十k次方以一个部门的其余部分等同于保持最后k数字。

我怎么能提取由一个每个数字吗?

你可以采取与%10最后一个数字,然后通过/= 10下探该位关底。


1
投票

正如你已经得到了答案扩展:在一般情况下,你可以从右边的ith数字:

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

你可以得到与i = log10(n)和循环用自己的方式的位数下降到0。powlog10是浮点功能。

或者,你可以在10的权力在降低通过连续师阶由初始值d,这也必须是10的功率可以用10乘以重复1,直到下一次乘法找到这个值d的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,因为它仅适用于非负数。


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);
     }
}
© www.soinside.com 2019 - 2024. All rights reserved.