1、问题
以字符形式按顺序打印数字的每位数字(递归和非递)
2、代码实现
#include <stdio.h>
#include <math.h>
//以字符形式按顺序打印数字的每位数字,比如4267,打印4267
//递归实现
void printf_char(unsigned int value)
{
unsigned int tmp;
tmp = value / 10;
if (tmp != 0)
printf_char(tmp);
putchar(value % 10 + '0');
}
//非递归实现
void printf_char1(unsigned int value)
{
int len = 0;
int value1 = value;
//计算长度
while (value1 > 0)
{
++len;
value1 /= 10;
}
double a = pow(10, 2);
printf("len is %d\n", len);
//4267 4267 / 1000, 4267 / 100 % 10, 4367 / 10 % 10,
for (int i = 1; i <= len; ++i)
{
double dou = pow(10, len - i);
i == 1 ? putchar(value / (int)dou + '0') : putchar(value / (int)dou % 10 + '0');
}
}