C语言的数列求和问题,请问我的程序错在哪里?

#include<stdio.h>
#include<math.h>
main ()
{
float sn,a,an,k,b;
int n;
an=-1;
a=1;
n=1;
sn=0;
b=1;
scanf("%f",&k);
while (b>0.0001)
{
sn=sn+an;
while (a<=n)
{
an=-an*k/a;
a++;
}
a=1;
n++;
b=fabs(an);
}
printf("%.2f",sn);
return 0;
}

输入一个双精度实数x,计算并输出下式的值,直到最后一项的绝对值小于10-4(保留两位小数),s=x-x2/2!+x3/3!-x4/4!+…

#include<stdio.h>
#include<math.h>
main ()
{
float sn,a,an,k;
an=-1;
a=1;
sn=0;
scanf("%f",&k);
while (fabs(an)>0.0001)
{
an=-an*k/a;
sn=sn+an;
a++;
}
printf("%.2f",sn);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答