懂C语言的高手帮帮我!解释一下这条程序好不好?#include <stdio.h> ..

来源:百度知道 编辑:UC知道 时间:2024/06/03 15:31:09
答好加20!
#include <stdio.h>
long f1(int i)
{long j=0;
if(i==2) j=2;
else j=f1(i-1)*i;
return j;
}
int f2(long n)
{int b=0;
int i=0;
while(n)
{b=n%10;
n=n/10;
if(!b) i++;
}
return i;
}
main()
{int i;
long t;
printf("please input n:");
scanf("%d",&i);
t=f1(i);
i=f2(t);
printf("n!=%ld\n",t);
printf("有 %d 个 0\n",i);
getchar();

}

要每一步的解释,越详细越好!
教会了我加20

#include <stdio.h>//头文件
long f1(int i)//定义函数f1函数返回值为long
{long j=0;
if(i==2) j=2;//递归 调用边界条件
else j=f1(i-1)*i;//递归调用f1求i的阶乘
return j;//返回i的阶乘
}
int f2(long n)定义函数f2函数返回值为int
{int b=0;//变量b初始化为0
int i=0;//变量i初始化为0
while(n)//求N中有几个0
{b=n%10;//b依次得到N 个 十 百 千上的数
n=n/10;//N除以10 以便得到十为上的数
if(!b) i++;//判断b是0 i加1 说明N中存在一个0
}
return i;//返回N中0的个数
}
main()// 主函数
{int i;
long t;
printf("please input n:");//提示输入
scanf("%d",&i);//输入一个数给 i
t=f1(i);//调用函数f1
i=f2(t);//调用函数f2
printf("n!=%ld\n",t);//输出i的阶乘
printf("有 %d 个 0\n",i);输出有几个0
getchar();//起到暂停 作用

}

#include <stdio.h> 头文件,必须要有的东西
long f1(int i) 定义了long型的数据
{long j=0;
if(i==2) j=2; if else 子句
else j=f1(i-1)*i;
return j; 返回变量j
}
int f2(long n)
{int b=0;
int i=0;
while(n)