C语言,这个就是看不出问题

#include<stdio.h>
#define EPS 1e-6
int main(void)
{
double i;
double k;
printf("Input i:");
scanf("%f", &i);
if(i<= EPS)
printf("%.2f", i);
else
k = -i;
printf("%.2f", k);
return 0;
}

,我是死活 看不出问题
这个代码求得是 任意输入一个 实数 然后 求其绝对值 可是我这 的结果死活都是零[face]emoji:029.png[/face]

(1)读取double数据,用%lf
(2)最下面的else需要加{},把k = -i; printf("%.2f", k);这两句放在{}中,否则k就是一个未初始化的变量。
代码修改如下:

img

#include<stdio.h>
#define EPS 1e-6
int main(void)
{
    double i;
    double k;
    printf("Input i:");
    scanf("%lf", &i);
    if(i<= EPS)
        printf("%.2f", i);
    else
    {
        k = -i;
        printf("%.2f", k);
    }
    return 0;
}

double类型用%lf控制

#include<stdio.h>
#define EPS 1e-6
int main(void)
{
double i;
double k;
printf("Input i:");
scanf("%lf", &i);
if(i>0)
printf("%.2lf", i);
else
k = -i;
printf("%.2lf", k);
return 0;
}

img

img

double型只能用%lf输入,float型用%f,否则结果就是0.但这个要求对输出没有约束。
另外你这代码逻辑是有问题的,当if(i<=EPS)时,你最后还是会执行printf("%.2lf",k);这是错误的,会多输出一个垃圾值
修改如下:

#include<stdio.h>
#define EPS 1e-6
int main(void)
{
double i;
double k;
printf("Input i:");
scanf("%lf", &i);
if(i<= EPS)
    k = i;
else
   k = -i;
printf("%.2lf", k);
return 0;
}

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