C语言题:求结果,给出步骤解释

输入n(n≥1),计算1+(1+2)+(1+2+3)+...+(1+2+...+n)的值。voidmain(){inti,n;longsum=0;longcal(int)... 输入n(n≥1), 计算1+(1+2)+(1+2+3)+...+(1+2+...+n)的值。
void main ( )
{
int i,n;
long sum=0;long cal(int);
scanf ("%d",&n);
for (i=1;i<=n;i++) sum=sum+cal(___); /*第一空*/
printf ("1+(1+2)+...+(1+2+...+n)=%ld\n",sum);
}
long cal(___) /*第二空*/
{
static long s=0;
s=s+m;
___; /*第三空*/
}

答案:
第一空:i
第二空:int m
第三空:return s(或 return(s))

long cal(___)
static long s=0;
s=s+m;
___;
} 尤其这一段看不懂求解释
展开
 我来答
墨舞闪
2013-09-11
知道答主
回答量:14
采纳率:0%
帮助的人:8.5万
展开全部
第一空的i相当于实参;将之传递给第二空的M,这里m是一个形参;接收来自于i的值;
这里S 是一个局部静态变量,能够保留前一次调用后留下的值;所以可以将每一次的S值保留;

如果你去掉static ,只用 long s 的话,就是普通的(1+2+...+n)的值了,因为你的s没有保留上一次调用cal(___)函数时s=s+m的值,只是简单的1到n的求和了。

第三空的返回值就不用解释了吧@@@

百思不De骑姐
2013-09-11 · TA获得超过112个赞
知道答主
回答量:211
采纳率:0%
帮助的人:159万
展开全部
long cal(___) /*第二空*/
{
static long s=0;
s=s+m;
___; /*第三空*/
}
这是一个函数的实现,括号的内的int m为传进去的参数,return s为计算之后的返回值
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
b_end_an
2013-09-11
知道答主
回答量:20
采纳率:0%
帮助的人:24.3万
展开全部
s 是一个静态变量所以s存储的值会在函数调用之后继续存在。
第一次调用cal函数时,传入值是1,所以s = s + 1 = 1
第二次调用,传入值是2, s = s+2 = 3
...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式