#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,我怎么能逐一提取每个数字呢?
答案 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. pow
和log10
是浮点函数。
或者,您可以通过按顺序除以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);
}
}