#include <stdio.h>
static void _putHex(int num)
{
char ch;
if (num > 9)
ch = 'A' + (num - 10);
else
ch = num + '0';
/*
*switch (num)
*{
* case 10:
* ch = 'A';
* break;
* case 11:
* ch = 'B';
* break;
* case 12:
* ch = 'C';
* break;
* case 13:
* ch = 'D';
* break;
* case 14:
* ch = 'E';
* break;
* case 15:
* ch = 'F';
* break;
* default:
* ch = num + '0';
* break;
*}
*/
putchar(ch);
}
static void _outInt(int num, int bit)
{
if (num == 0)
return;
_outInt(num / bit, bit);
if (bit == 16) //如果16进制特殊处理
_putHex(num % bit);
else
putchar(num % bit + '0');
}
//putchar打印整型 bit代表进制数
void outInt(int num, int bit)
{
//如果输入数为零,直接打印零
if (num == 0)
{
putchar('0');
return;
}
_outInt(num, bit);
}
void my_printf(float f, int flag, int bit)
{
int t;
if ((int)f < 0)
putchar('-');
outInt((int)f, 10);
f = f - (int)f;
//如果没有小数点部分 退出
if (flag && f > -0.000001 && f < 0.000001)
return;
putchar('.');
while (bit--)
{
t = f * 10;
putchar(t + '0');
f = f * 10 - t;
}
}
int main(void)
{
float f;
printf("please input float : ");
scanf("%f", &f);
my_printf(f, 0, 6);
putchar('\n');
return 0;
}
思想,整数部分处理时的递归思想。