电脑网络

C编程找错,求大佬帮忙

346 浏览

C编程找错,求大佬帮忙

1 个回答

hdhhx用户头像
hdhhx 回答于 2024-07-20
已采纳

提问:C编程找错,求大佬帮忙

请问大佬哪里有问题?运行几次了,都不对,两个答案不一样,求哪位大佬帮忙看看是哪里出问题了?#include <stdio.h>#include <math.h>int mysin(float x){ float sum=0; int i,j; float a[100]; for (i=0;pow(x,2*i+1)/fact(i)>pow(10,-5);i++) { a[i]=(float)(pow(x,2*i+1)/fact(i)); }for (j=0;j<=i;j++) { sum+=pow(-1,j)*a[j]; } printf ("mysin(x)=%f\n",sum);}float fact (int i){ float j; float sum=1; for (j=1;j<=2*i+1;j++) { sum=sum*j; } return sum;}int main(){ float m,x;printf("请输入x:"); scanf ("%f",&x); m=sin(x); printf ("sin(x)=%f\n",m); mysin(x); return 0;}

网友回答:

你的问题是,你的函数声明没有在使用的前面

在int mysin(float x)中

你的   for (i=0;pow(x,2*i+1)/fact(i)>pow(10,-5);i++)

调用了fact,而此时fact还没有定义,它会缺省它的值为int

结果肯定不对了

你要么将fact定义放在mysin前面.,要么在mysin前面加声明

float fact (int i);

另外,考虑效率

float fact (int i)中的float j 可改为int j(循环变量只要整形就可以了)

还有就是你的pow(10,-5);是常量,改为1e-5就可以了

测试 (箭头所指3个地方是我改的)


我来回答

相关问题