1617114868 发表于 2020-2-18 11:29:29

函数调用问题,我定义的两个函数都跳过了

能编译,但不显示结果,把我定义的两个函数都跳过去了。

//求sinx=x-x3/3!+x5/5!-x7/7!+....的近似值,直到最后一项的绝对值<1e-6为止
#include<stdio.h>
#include<math.h>
float sin(float x);
int jie(int x);      // 求分母阶乘的函数                                                         

int main()
{
        float x;
        printf("请输入x:");
        scanf("%f",&x);
        printf("sinx=%f",sin(x));
}
float sin(float m)
{
        int i=1,s=1;
        float z=0;
        while(fabs(pow(m,i)/jie(i))>=1e-6) //某一项>=1e-6就继续循环
        {
                z=z+pow(m,i)*s/jie(i); //总和
                s=-s;
                i=i+2;
        }
        return z;
}
int jie(int n)
{
        if(n==1||0) return 1;
        else return n*jie(n-1);
}



还有能不能顺便告诉我怎么悬赏渔币?{:5_100:} 我找了很久都没找到悬赏鱼币的窗口

zltzlt 发表于 2020-2-18 11:31:50

本帖最后由 zltzlt 于 2020-2-18 11:38 编辑



新鱼友没权限悬赏鱼币,等到积分满 100 就可以了。

4goodworld 发表于 2020-2-18 12:53:36


我把你的函数名改了下,就可以了
可能sin这个函数与系统内部的一个函数重名了,建议以后自己设计的函数时,加上什么MySin()等等,防止重名

1617114868 发表于 2020-2-19 01:05:30

4goodworld 发表于 2020-2-18 12:53
我把你的函数名改了下,就可以了
可能sin这个函数与系统内部的一个函数重名了,建议以后自己设计的函数 ...

不对,如果函数名冲突了是以自己定义的函数为准的,可以重名。你这个正确了是因为你忘了给主函数中的sin加—— 相当于直接调用的函数库中的sin(x),结果当然对了。

4goodworld 发表于 2020-2-19 08:52:18

1617114868 发表于 2020-2-19 01:05
不对,如果函数名冲突了是以自己定义的函数为准的,可以重名。你这个正确了是因为你忘了给主函数中的sin加 ...

确实,我乌龙了,给你造成了误会,不好意思。

4goodworld 发表于 2020-2-19 14:23:04


下午我测试并查了些资料
能够运行,你阶乘的程序的返回值不能用int,不然超范围了
页: [1]
查看完整版本: 函数调用问题,我定义的两个函数都跳过了