c语言printout函数,只使用处理I/O的PrintDigit函数,编写一个过程以输出任意实数...

数据结构与算法分析——c语言描述 习题1.3

这道题把double的整数和小数分别提取出来。

注意double在内存中的储存是接近于输入的数的,加一个0.xx5。

一开始小数部分不会处理,参考了别人的zhengken1991代码

#include

#define PrintDigit( Ch ) ( putchar( ( Ch ) + '0' ) )

void PrintInt(unsigned int N) /* Print nonnegative N */

{

if (N >= 10)

PrintInt(N / 10);

PrintDigit(N % 10);

}

void PrintOut(double N,int accuracy)

{

if (N < 0){

putchar('-');

N = -N;

}

int n = (int)N;

PrintInt(n);

double decimal = N - n;

if (decimal > 0){

putchar('.');

double add = 0.5;

for (int i = 0; i < accuracy; i++) {

add /= 10;

}

N += add;

for (int i = 0; i < accuracy; i++){

decimal *= 10;

}

PrintInt(decimal);

}

}

int main()

{

PrintOut(1208.123456,3);

putchar('\n');

return 0;

}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部