c语言中求两个整数阶乘之和,sum程序调用fac,z1能够得到z2却一直等于1是怎么回事

#include <stdio.h>
long sum(int x,int y);
long fac(int n);
void main(void)
{
long sum(int x,int y);
int a,b;
long c;
printf("请输入两个整数,中间用逗号分隔:");
scanf("%d,%d",&a,&b);
c=sum(a,b);
printf("两个整数阶乘之和为:%ld\n",c);
}
long sum(int x,int y)
{
long fac(int n);
long z1,z2;
z1=fac(x);
z2=fac(y);
return(z1+z2);
}
long fac(int n)
{
long r=1;
int i;
for (i=1;i<=n;i++)
r*=i;
return(r);
}

没问题吧,z1,z2可以输出看看值为多少。

#include <stdio.h>
long sum(int x,int y);
long fac(int n);
int main()
{
long sum(int x,int y);
int a,b;
long c;
printf("请输入两个整数,中间用空格分隔:");
scanf("%d%d",&a,&b);
c=sum(a,b);
printf("两个整数阶乘之和为:%ld\n",c);
return 0;
}
long sum(int x,int y)
{
long fac(int n);
long z1,z2;
z1=fac(x);
z2=fac(y);
printf("z1=%lld\nz2=%lld\n",z1,z2); 
return(z1+z2);
}
long fac(int n)
{
long r=1;
int i;
for (i=1;i<=n;i++)
r*=i;
return(r);
}

img

你输入的a和b各是多少啊?