c语言小代码,子函数问题

自己写的求绝对值子函数,有什么问题吗?为什么不工作#include<stdio.h>doublefabs(doublea){doublez;if(a<0){z=(-a);... 自己写的求绝对值子函数,有什么问题吗?为什么不工作
# include <stdio.h>

double fabs(double a)
{
double z;

if (a < 0)
{
z = (-a);
}
else
{
z = a;
}

return (z);
}

int main(void)
{
double b;

scanf("%lf", &b);

fabs(b);

printf("b = %lf\n\a", b);

return 0;
}
展开
 我来答
b_spike
2015-07-21 · TA获得超过3686个赞
知道大有可为答主
回答量:3724
采纳率:78%
帮助的人:1184万
展开全部
这个程序中,你定义的fabs中含有return返回一个值,因此,你在全局main函数中调用时,应当将返回值取出来放到一个变量里或者直接使用这个值,你直接写fabs(b)只是执行了函数,返回值并没有使用上去。
建议把那一行改为
b=fabs(b);
或者 double r=fabs(b); 后面的printf输出r的值也可以
更简单的方法就是可以去掉这行,直接把fabs(b)写到最后的输出里面,像这样
printf("|b|=%lf\n", fabs(b)); 也是可以的
追问
i see。thanks
sun1yu1jia1
2015-07-21 · TA获得超过1066个赞
知道小有建树答主
回答量:1178
采纳率:62%
帮助的人:530万
展开全部

将main函数改成这样:

int main(void)
{
    double b;

    scanf("%lf", &b);

    b = fabs(b);

    printf("b = %lf\n\a", b);

    return 0;    
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友84f35d7
2015-07-21 · TA获得超过165个赞
知道小有建树答主
回答量:133
采纳率:100%
帮助的人:53.1万
展开全部
主函数可以这样写
(1)
int main(void)
{
double b,z;

scanf("%lf", &b);

z=fabs(b);

printf("b = %lf\n\a", z);

return 0;
}

或者
(2)
int main(void)
{
double b;

scanf("%lf", &b);

printf("b = %lf\n\a", fabs(b));

return 0;
}

因为你的函数是值传递,必须把值赋值回来,不知道我这么说你是否明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梁昌仔
2015-07-21 · TA获得超过272个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:202万
展开全部
b是不会被改变的。
fabs(b);

printf("b = %lf\n\a", b);

这两句话,合成printf("b = %lf\n\a",fabs(b));就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c70d8e3
2015-07-21 · TA获得超过380个赞
知道小有建树答主
回答量:430
采纳率:0%
帮助的人:278万
展开全部
这里b一直没变,返回的z才是你想要的绝对值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式