鱼C论坛

 找回密码
 立即注册
查看: 1136|回复: 5

[已解决]关于外部函数的输出问题

[复制链接]
发表于 2019-11-14 16:59:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 f429789906 于 2019-11-14 16:59 编辑

新手一枚,求助各位大佬,为什么会是这样的输出结果?

代码如下:
第一个文件:
file1.c
#include<stdio.h>
#include<math.h>
int main()
{
        extern one_number(double,double,double);
        double a,b,c,n,x;
        printf("输入三个数字:");
        scanf("%lf,%lf,%lf",&a,&b,&c);
        n=b*b-4*a;
        x=one_number(a,b,n);
        printf("%lf\n",x);
        return 0;
}

第二个文件:
file2.c
double one_number(double j,double k,double l)
{
        double y;
        y=(sqrt(l)-k)/2*j;
        return(y);
}

输出结果:
“输入三个数字:1,4,1
1076363903.0000000”

想请教一下,为什么会输出这个数,哪里出了问题
最佳答案
2019-11-15 01:55:58
你把 #include <math.h> 移到 file2.c 中试试呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-14 19:08:01 | 显示全部楼层
本帖最后由 superbe 于 2019-11-14 19:11 编辑

extern double one_number(double,double,double);  少了double
输入时注意1,4,1要用半角逗号(和scanf格式对应)
好象这是求一元二次方程的其中一个根?如果是的话公式有点问题:
n=b*b-4*a; 应该是 n=b*b-4*a*c;
y=(sqrt(l)-k)/2*j; 应该是 y=(sqrt(l)-k)/(2*j);
是这样的吧,记不清了。
建议对 delta (即b*b-4*a*c)  正负和0判断,区分情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-14 23:27:11 | 显示全部楼层
superbe 发表于 2019-11-14 19:08
extern double one_number(double,double,double);  少了double
输入时注意1,4,1要用半角逗号(和scanf格式 ...

我原本最开始就是设计一个分delta情况解方程的程序,但输出的结果都不是我想要的,我就不断简化,想找出哪个部分出了问题,但还是没找到哪里出了问题,最后简化成上面的程序发来求助。刚刚我按你所说的加上了漏掉的double,结果还是很奇怪,不知道怎么搞了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-14 23:41:25 | 显示全部楼层
superbe 发表于 2019-11-14 19:08
extern double one_number(double,double,double);  少了double
输入时注意1,4,1要用半角逗号(和scanf格式 ...

不知道为什么我把y=(sqrt(l)-k)/(2*j);换成y=(l-k)/(2*j);,程序输出的结果是符合逻辑的,而有sqrt()的时候输出的结果就不符合逻辑了,而且数很大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-15 01:55:58 | 显示全部楼层    本楼为最佳答案   
你把 #include <math.h> 移到 file2.c 中试试呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-15 22:49:09 | 显示全部楼层
superbe 发表于 2019-11-15 01:55
你把 #include  移到 file2.c 中试试呢。

移过去就可以了,哈哈哈,谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-4 21:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表