您的位置:首页 > 其它

C和指针之函数之归以字符形式按顺序打印数字的每位数字(递归和非递归)

2017-11-06 23:13 281 查看

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');
}
}

int main()
{
int a = 4267;
printf_char(a);
puts("");
printf_char1(a);
puts("");
return 0;
}




3、运行结果

1111deMacBook-Pro:dabian a1111$ gcc -g printf_char.c -o printf_char
1111deMacBook-Pro:dabian a1111$ ./printf_char
4267
len is 4
4267
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐