C语言 大虾麻烦看下小的错在哪里了~~^-^

来源:百度知道 编辑:UC知道 时间:2024/05/10 08:09:23
题目是:
输入一个实数x,计算并且输入下式的值 直到最后一项的绝对值小于0.00001(保留两位小数)。要求定义和调用函数fact(n)计算n的阶乘;以及定义和调用函数mypow(x,n)计算x^n
s=x+x^2/2!+x^3/3!+x^4/4!……
#include<stdio.h>
#include<math.h>
double fact(int n);
double mypow(double x,int n);
void main()
{
int i,n;
double x,s,item;

s=0;
item=1.0;
i=1;
printf(“input a x:”);
scanf(“%lf”,&x);
while(fabs(item)>=0.00001){
item=mypow(x,i)/fact(i);
s=s+item;
}
printf(“f(%f)=%.2f\n”,s);
}

double mypow(double x,int n)
{
double power;
int i;
power=1.0;
for(i=1;i<=n;i++)
power=power*x;
return power;
}
double fact(int n)
{
int i;
double result;
result=1;
for(i=1;i<=n;i++)
result=result*i;
return result;
}

ps:我刚接触C不久 用浅显点的语言哦~^-^

while(fabs(item)>=0.00001){
item=mypow(x,i)/fact(i);
s=s+item;
}
好像应该改成
while(fabs(item)>=0.00001){
item=mypow(x,i)/fact(i);
s=s+item;
i++; // 你缺少这一步,就使得通项一直没有改变
}

去死

s=x+x^2/2!+x^3/3!+x^4/4!……
#include<stdio.h>
#include<math.h>
double fact(int n);
double mypow(double x,int n);
void main()
{
int i,n;
double x,s,item;

s=0;
item=1.0;
i=1;
printf(“input a x:”);
scanf(“%lf”,&x);
while(fabs(item)>=0.00001){
item=mypow(x,i)/fact(i);
s=s+item;
}
printf(“f(%f)=%.2f\n”,s);
}

double mypow(double x,int n)
{
double power;
int i;
power=1.0;
for(i=1;i<=n;i++)
power=power*x;
return power;
}
double fact(int n)
{
int i;
double result;
result=1;
for(i=1;i<=n;i++)
result=result*N
return result;
}

在WHILE