4 2关于#c语言#的问题:称(m是x的尾数

.实数x可表示为x=(m(10(n,称(m是x的尾数,(n是x的以10为底的指数。接收键盘输入的一个double型浮点数x(x(0),将x分解为尾数(m(0.1【测试数据】
输入x=0.001234时得到尾数0.1234和指数-2,输出:0.1234e-2
输入x=-123.4时得到尾数-0.1234和指数3,输出:-0.1234e3

运行结果:

img

img

代码:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
    double x;
    double m;
    int zs = 0,flag = 1;
    scanf("%lf", &x); //输入x

    if (x > 0) 
        flag = 1;
    else
    {
        x = -x;
        flag = -1;
    }
    if (x >= 1)
    {
        while (x >= 1)
        {
            zs++;
            x = x / 10.0;
        }
    }
    else
    {
        while (x < 0.1)
        {
            zs -= 1;
            x = x * 10;
        }
    }
    
    printf("%ge%d", flag * x, zs);

    return 0;
}

对输入的数进行判断
绝对值大于1的数,进行除10直到小于1,得到指数,以及最终的尾数。
绝对值小于0的数,进行乘10直到大于0,得到指数,以及最终的尾数。

#include <stdio.h>
#include <math.h>
int main()
{
    double a;
    int z=0;
    scanf("%lf",&a);
    if(fabs(a)>1)
    {
        while(fabs(a)>1)
        {
            a = a/10;
            z++;
        }
    }
    else
    {
        while(fabs(a)<0.1)
        {
            a=a*10;
            z--;
        }
    }
    printf("%ge%d",a,z);
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632