请大侠能不能写写计算机计算的过程,越详细越好,我在电脑里用C FREE 5算得结果是29,但是书上说是28,可能是我计算机有问题,求答案究竟是多少,最重要的是写写过程,谢谢
for 循环里面的条件我改了,改回为i<3,得到结果29,书上说结果是28.
麻烦写循环一次的过程就好了。
#include"stdio.h"
int a=2;
int f(int n)
{
static int a=3;
int t=0;
if(n%2){static int a=4;t+=a++;}
else{static int a=5;t+=a++;}
return t+a++;
}
main()
{
int s=a,i;
for(i=0;i<1;i++)s+=f(i);
printf("%d\n",s);
}
匆忙,急着上课去了,呵呵,没有去运行哈,呵呵,再试试
没有抄错
能不能写写计算过程,救命啊,大神
for循环3次:i=0、1、2
当i=0时:f(0),由于n=0,n%2=0,所以执行else{static int a=5;t+=a++;}使t=5,a=6;然后返回t+a++(此a是f函数的static int a=3的a)为5+3=8;返回后主函数中s=s+f(0)=2+8=10;
当i=1时:f(1),由于n=1,n%2!=0,所以执行{static int a=4;t+=a++;}使t=4,a=5;然后返回t+a++=4+4(a是静态变量,上次调用时由3增为4)=8;返回后主函数中s=s+f(1)=10+8=18;
当i=2时:f(2),由于n=2,n%2=0,所以执行else{static int a=5;t+=a++;}使t=6(上次的a值),a=7;然后返回t+a++(此a是f函数的static int a=3的a)=6+5=11;返回后主函数中s=s+f(0)=18+11=29。
你可以照猫画虎搞搞n%2==0的情况,是28。这时if执行2次,而else执行1次。
#include"stdio.h"
int a=2;
int f(int n)
{
static int a=3;
int t=0;
if(n%2){static int a=4;t+=a++;}
else{static int a=5;t+=a++;}
return t+a++;
}
main()
{
int s=a,i;
for(i=0;i<3;i++)s+=f(i);
printf("%d\n",s);
}