两种方案,直接用数学方法计算和转为为字符串。
第一:数学方法,对于任意一个数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]);
结果和上面一样!
两种方式都能计算出,但是第一种方式计算未知位数的数时很麻烦,要首先计算出数的位数,相比较第二种就没那问题,只要定义足够大的数组就不存在这个问题。
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;