double fun(int n)//用double提高精度和计数位数.
{
double sum=1.0;
int i;
for(i=1;i<=n;i++)
sum*=i;
return sum;
}
int main()
{
int i,mark=1;
double sum=0,item=0;
for(i=1;i<=9;i++)
{
item=mark*fun(i);
sum+=item;
mark=-mark;
}
printf("1!-2!+3!-4!+5!-6!+7!-8!+9!=%.0lf\n",sum);
}

提示有错误。