C语言中如何将一个数字的各个位上的数分别提取?

2025-03-13 10:14:28
推荐回答(2个)
回答1:

两种方案,直接用数学方法计算和转为为字符串。

第一:数学方法,对于任意一个数n,要计算第site位的数,都可以用

n/10^(site-1)%10

计算出来。比如计算123各位数:

int data=123;
printf("%d\n",data/100%10);
printf("%d\n",data/10%10);
printf("%d\n",data/1%10);

结果是:

第二:转化为字符串,这里要用到一个函数itoa。同样是计算123各个位数。

代码:

int data = 123;
char array[100];
itoa(data, array, 10);    //转化为字符串
printf("%c\n", array[0]);
printf("%c\n", array[1]);
printf("%c\n", array[2]);

结果和上面一样!

两种方式都能计算出,但是第一种方式计算未知位数的数时很麻烦,要首先计算出数的位数,相比较第二种就没那问题,只要定义足够大的数组就不存在这个问题。

回答2:

1、方法一:

我的做法是先将整型转为字符串,再将转后的字符串取需要的字符转为整型,过程说起来复杂,但是写起来只要两行代码就行了~

#include       

#include         

int   main(void)     

{     

int   number   =   12345;     

char   string[25];     

itoa(number,   string,   10);     

printf("integer   =   %d   string   =   %s\n",   number,   string);  //将整型转换为字符创 

printf("%d",(int)string[0]-48);   //将字符串转为整型      

return   0;     

}

  

2、方法二:

int a[100];

int i;

假设x为INPUT的数

a[100]用来存放各个数位(0用来存放一共有几位,1用来存放个位,,依次)

i=0;

{a[++i]=x % 10;

x/=10;}while (x);

a[0]=i;