一、简答题 1、阅读程序写结果 #include <stdio.h> int f(int n) { static int s=1; while(n) s*=n--; ret

#include<stdio.h>intf(intn){staticints=1;while(n)s*=n--;returns;}main(){inti,j;i=f(3)... #include <stdio.h>
int f(int n)
{
static int s=1;
while(n) s*=n--;
return s;
}
main()
{
int i,j;
i=f(3); j=f(5)+f(2);
printf("\nThe outputis:\n");
printf("i=%#x,j=%d \n",i,j);
}
展开
 我来答
Sky_AC_W
2010-12-08 · TA获得超过127个赞
知道答主
回答量:42
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
int f(int n)
{
static int s=1;//将s定义为一个静态常量
//静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
while(n) s*=n--; //枚举n~1,乘入s
return s;
}
main()
{
int i,j;
i=f(3); j=f(5)+f(2); //i = 3! = 6, j = 6*5! + 720*2! = 2160
printf("\nThe outputis:\n");
printf("i=%#x,j=%d \n",i,j); //%x代表十六进制格式,中间加个#代表前面加上0x
}

输出为:

The outputis:
i=0x6,j=2160
♂凡鸟♂fcb78ab
推荐于2018-04-15 · TA获得超过3711个赞
知道小有建树答主
回答量:586
采纳率:100%
帮助的人:610万
展开全部
The outputis:
i=0x6,j=2160
____________________________
___________分割线____________
最上面两行是输出,函数f(n)计算的是n的阶乘!n
i=!3
j=(!3)*!5+(!3*!5)*!2
输出的时候i用16进制输出,j用十进制输出
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pklong007
2010-12-08 · TA获得超过154个赞
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:175万
展开全部
是算阶乘,f(3)展开就运算为s=s*3*2*1,f(5)就成为s=s*5*4*3*2*1,f(2)就展开成为s=s*2*1
所以,i=6,s为static变量,所以执行完f(3)后,s=6,再算f(5),s=6*5*4*3*2*1=720,再算f(2),s=720*2*1,所以s=1440,最后结果是1440+720=2160.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友129951a
2010-12-08 · TA获得超过121个赞
知道答主
回答量:29
采纳率:0%
帮助的人:17.7万
展开全部
结果是n!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式