資料結構與演算法分析(c 語言描述)習題 1.3

jerrkill發表於2018-12-14
/**
 * 1.3
 * 只使用處理I/O的PrintDigit函式,編寫一個過程以輸出任意實數
 *
 */

#include <stdio.h>

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

void print_int(int N);

void print_out(double N, int j);

int main(void)
{
    // double a, b, c;
    // a = 3.3339;
    // b = 1.1;
    // c = 9.1;
    print_out(-4473.154837, 3);
    putchar('\n');
    return 0;
}

void print_int(int N)
{
    if (N > 10) {
        print_int(N / 10);
    }
    PrintDigit(N % 10);
}

void print_out(double N, int j)
{
    if (N < 0) {
        putchar('-');
        N = -N;
    }
    int n = (int)N;
    print_int(n);
    putchar('.');
    //小數部分
    double decimal = N - n;
    while(j--) {
        decimal *= 10;
        print_int((int)decimal);
        decimal = decimal - (int)decimal;
    }
}

高度自律,深度思考,以勤補拙

相關文章