一、简答题 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);
} 展开
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);
} 展开
4个回答
展开全部
#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
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
展开全部
是算阶乘,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.
所以,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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结果是n!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询