一段c语言程序,求老师给详细解释一下,多谢,程序如下(请主要说明一下如何求出的阶乘值)。

longf1(intp){intk;longr;longf2(int);k=p*p;r=f2(k);returnr;}longf2(intq){longc=1;inti;... long f1(int p)
{
int k;
long r;
long f2(int);
k=p*p;
r=f2(k);
return r;
}
long f2(int q)
{
long c=1;
int i;
for(i=1;i<=q;i++)
c=c*i;

return c;
}
main()
{
int i;
long s=0;
for(i=2;i<=3;i++)
s=s+f1(i);
printf("\ns=%1d\n",s);
}
展开
 我来答
匿名用户
2013-08-21
展开全部
程序都是以函数的形式编写的,每个函数都是独立的;
根据函数,一句句的去分析,有什么不明白的语句再提问
追问
s=%1d

就这个
追答
printf("\ns=%1d\n",s);
\n  ,作用是换行
s=  ,直接输出
%d  ,输出一个整数,%d不显示,直接输出一个数值
"%d",s  ,输出 s 的值,如果 s 等于 5 ,那么 %d 就是 5 

举例:
    int s=123;
    printf("s = %d",s);
输出:
    s = 123
linzjay
2013-08-21 · TA获得超过257个赞
知道小有建树答主
回答量:286
采纳率:0%
帮助的人:251万
展开全部
给你加了点注释,这样很好看了
#include<stdio.h>
long f1(int p)
{
    //将f1分解来看
    printf("******************************************\n");
    printf("这个过程是求取f(%d)\n",p);
    int k;
    long r;
    long f2(int);
    k=p*p;
    r=f2(k);
    printf("k=%d,返回值是%1d\n",k,r);
    return r;
}
long f2(int q)
{
     long c=1;
     int i;
     //这个循环是在求阶乘,因为n!=n*(n-1)*......*2*1
     for(i=1;i<=q;i++)
     c=c*i;
     return c;
}
int main()
{
     int i;
     long s=0;
     //说明求的值是f1(2)+f1(3)
     printf("整个函数是求取s=f(2)+f(3),过程分解如下:\n");
     for(i=2;i<=3;i++)
     s=s+f1(i);
     printf("\ns=%1d\n",s);
     return 0;
}

 运行结果如下,很能说明程序执行的顺序了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ydx00
2013-08-21 · 超过15用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:39.7万
展开全部
哪里不懂 ,问清楚些
追问
从这里开始,long f2(int q)。。。。。。如何通过for求出的阶乘。
从这里开始,long f2(int q)。。。。。。如何通过for求出的阶乘。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式