#include<stdio.h>
#include<string.h>
#include<math.h>
#include<conio.h>
void main()
{
float SIN(float x);
float COS(float x);
float SUM(void);
char func_name[4];
float x,y;
int i;
printf("please choose the function you need:sin,cos or SUM\n");
printf("input the function name,and the number x\n(if you choose SUM,please input x as 0):");
scanf("%s%f",func_name,&x);
if(strcmp(func_name,"SIN")==0)
i=1;
if(strcmp(func_name,"COS")==0)
i=2;
if(strcmp(func_name,"SUM")==0)
i=3;
switch(i)
{
case 1:
y=SIN(x);
break;
case 2:
y=COS(x);
break;
case 3:
y=SUM();
}
printf("\n%s%5.2f=%5.2f",func_name,x,y);
getchar();
}
long fac(int num)
{
long factorial=num;
num--;
for(;num>=1;num--)
{
factorial*=num;
}
return factorial;
}
float SIN(float x)
{
float y=0;
int i=0;
while(((long)(y*1000000)%10)==0)
{
y+=pow(-1,i)*pow(x,i*2+1)/(float)fac(i*2+1);
i++;
}
return y;
}
float COS(float x)
{
float y=0;
int i=0;
while(((long)(y*1000000)%10)==0)
{
y+=pow(-1,i)*pow(x,i*2)/(float)fac(i*2);
i++;
}
return y;
}
float SUM(void)
{
float y=0;
int i=0;
while(((long)(y*1000000)%10)==0)
{
y+=pow(1/i,i);
i++;
}
return y;
}
有,运行没错,就是达不到预想的结果,如:我输入cos 0得不到1.
追答哦我想你应该还没试过单步调式吧?
追踪一下各个变量,然后一步一步执行 我想你会看到问题出在哪的
我试了试单问题还挺多的
我慢慢看下啊
我想你对公示的理解可能还不足 我对这几个公式找了几个特殊例子测试发现有一些出现了死循环 问题在于 while(((long)(y*1000000)%10)==0)这句会永远满足
嗯,我也再好好看看!
本回答被提问者采纳