c语言浮点数值运算,数组存储

下面这段代码怎么写,要完整c程序

以Array实做长浮点数的运算。
将长浮点小数分成整数与小数两个部分储存于两个一维Array,计算并输出两数的相加、相减、相乘,输出的两个部分长度最大精确各为 60 位。


输入说明
输入2行,代表 2个浮点小数。


 输出说明
1. 输出 3 行,分别为两数相加、相减、相乘结果。


 Sample Input 1: 2个正数,相加乘为正、相减为负。
54375594968196412353419.7136567768967814548988 
73287424855639561252347.4564956732129084076487

Sample Output:
127663019823835973605767.1701524501096898625475 
-18911829887443148898927.7428388963161269527499 
3985047330212387208846838718241110977261606713.61406369102666397315364414705498798400445156



 Sample Input 2: 
2 个负数,相加为负、相减为 0、相乘为正。
-9234507190321346790456789.1931587893642640223756 
-9234507190321346790456789.1931587893642640223756
Sample Output:
-18469014380642693580913578.3863175787285280447512
0
85276123048096654594016550136815157974048477583569.58751391797434997190616787629405161746747536

 Sample Input 3: 
1 个正数与 1 个负数,相加减乘为负。
-26867969463606565474768123.5645144634542221 
136452564856366342453.724563547586473564776
Sample Output:
-26867833011041709108425669.839950915867748535224 
-26868105916171421841110577.289078011040695664776 
-3666203345791645284973102086942259202952614005.2383003686028975820993973094750407496


 Sample Input 4: 
1 个正数与 1 个负数,相减为正、相加乘负
19342748593927235.4859695323773685960483721 
-939329384736226582829496.04837462845050055
Sample Output:
-939329365393477988902260.5624050960731319539516279 
939329404078975176756731.5343441608278691460483721 
-18169212135841181949695789552712699214732.353525637433292855735431230415598257654655


参考这个:https://blog.csdn.net/qq_39117553/article/details/105786700

兄弟,我只写了个加法的,参考这个来吧


#include "stdio.h"
#include "string.h"
#define MAX_BIG_SIZE (60)
#define MAX(x, y) x > y ? x : y
typedef struct
{
    char real_char_int[MAX_BIG_SIZE * 2 + 2];
    char integer[MAX_BIG_SIZE];
    int int_len;
    char decimal[MAX_BIG_SIZE];
    int dec_len;
} big_data;

void big_data_add(big_data a, big_data b, big_data *result)
{

    char temp = 0;
    int max = MAX(a.dec_len, b.dec_len);

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

        if (a.decimal[i] + b.decimal[i] + temp >= 10)
        {
            result->decimal[i] = (a.decimal[i] + b.decimal[i] + temp) % 10;
            temp = 1;
        }
        else
        {
            result->decimal[i] = a.decimal[i] + b.decimal[i] + temp;
            temp = 0;
        }
    }

    max = MAX(a.int_len, b.int_len);
    for (int i = 0; i < max; i++)
    {
        if (a.integer[i] + b.integer[i] + temp >= 10)
        {
            result->integer[i] = (a.integer[i] + b.integer[i] + temp) % 10;
            temp = 1;
        }
        else
        {

            result->integer[i] = a.integer[i] + b.integer[i] + temp;

            temp = 0;
        }
    }
    result->dec_len = MAX(a.dec_len, b.dec_len);
    result->int_len = MAX(a.int_len, b.int_len);
    if (temp == 1)
    {
        result->int_len++;
        result->integer[result->int_len - 1] = 1;
    }
}
void big_data_trans(big_data *data)
{
    int total = 0;
    char *p = NULL;
    total = strlen(data->real_char_int);
    p = strchr(data->real_char_int, '.');
    *p = 0;
    p++;
    data->int_len = strlen(data->real_char_int);
    data->dec_len = strlen(p);
    int index = 0;
    for (int i = data->int_len - 1; i >= 0; i--)
    {
        data->integer[i] = data->real_char_int[index++] - '0';
    }
    index = 0;
    for (int i = data->dec_len - 1; i >= 0; i--)
    {
        data->decimal[i] = p[index++] - '0';
    }
}
void print_big_data(big_data data)
{
    int index = data.int_len - 1;
    for (int i = 0; i < data.int_len; i++)
    {
        printf("%d", data.integer[index--]);
    }
    printf(".");
    index = data.dec_len - 1;
    for (int i = 0; i < data.dec_len; i++)
    {
        printf("%d", data.decimal[index--]);
    }
    printf("\n");
}
int main()
{
    big_data a = {0};
    big_data b = {0};
    big_data result = {0};
    scanf("%s", a.real_char_int);
    big_data_trans(&a);

    scanf("%s", b.real_char_int);
    big_data_trans(&b);
    big_data_add(a, b, &result);
    print_big_data(result);
    return 0;
}

C语言 (浮点型)数据的存储_牧濑红莉栖cc的博客-CSDN博客_c语言浮点数的存储 c语言浮点数在内存中的存储一、浮点数二、浮点数存储三、浮点数在内存的表示方式四、IEEE 754 对 有效数字M和指数E 的特别规定:一(有效数字M):二(指数E),情况有点复杂:三(指数E不全为0 或者 不全为1):*了解. 四(指数E全为0 或 指数E全为1):五、解释开头的题目:一、浮点数上一节 我们讲解了C语言中整型数据是如何在内存中存储的。这节我们讲解C语言浮点型数据在内存中存储方式。常见的浮点数例如:3.14159261E10浮点数家族包括:float、double、long https://blog.csdn.net/sfg0861/article/details/124195913?ops_request_misc=&request_id=&biz_id=102&utm_term=c%E8%AF%AD%E8%A8%80%E6%B5%AE%E7%82%B9%E6%95%B0%E5%80%BC%E8%BF%90%E7%AE%97%EF%BC%8C%E6%95%B0%E7%BB%84%E5%AD%98%E5%82%A8&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-124195913.nonecase&spm=1018.2226.3001.4187

easy