关于简单C语言程序设计的一道题

2025-03-24 23:15:59
推荐回答(3个)
回答1:

(1)结果:
12 14 16
主函数中的for循环共执行三次。
第一次:
i=2,
test初始a=2,b=3,c=4.
执行完++a;++b;c++;后
a=3,b=4,c=5
所以结果a+b+c=12

第二次:
i=3,
test初始a=3,b=3,c=5(c是静态变量,保存在静态存储区。在上一次循环中c变成了5,所以c现在还是5).
执行完++a;++b;c++;后
a=4,b=4,c=6
所以结果a+b+c=14

第三次:
i=4,
test初始a=4,b=3,c=6(c是静态变量,保存在静态存储区。在上一次循环中c变成了6,所以c现在还是6).
执行完++a;++b;c++;后
a=5,b=4,c=7
所以结果a+b+c=16

(2)结果:121
这是一个递归程序
f(5) = 3*f(3)+2*f(4)
f(4) = 3*f(2)+2*f(3)
f(3) = 3*f(1)+2*f(2)
f(2) = 3*f(0)+2*f(1)
f(1) = 1
f(0) = 1
所以
f(2) = 3*f(0)+2*f(1) = 5
f(3) = 3*f(1)+2*f(2) = 13
f(4) = 3*f(2)+2*f(3) = 41
f(5) = 3*f(3)+2*f(4) = 121

回答2:

static变量也就是静态变量,在程序运行过程中被声明后就会一直保存在内存里,所以只能声明一次,第二次再访问那个函数时,给静态变量声明同时赋值的语句就不再执行了,而静态变量的值始终保存在内存里,也就是上次改变以后的值。

for循环第一次a=2,b=3,c=4 ,++a=3,++b=4,++c=5,a+b+c=12
第二次a=3,b=3,c=5(由于声明C是静态变量,所以只第一次声明有效),++a=4,++b=4,++c=6
第三次a=4,b=3,c=6 ++a=5,++b=4,++c=7,a+b+c=16

2:
递归嘛,调用自己,你5开始一层一层往里面带就可以了

回答3:

static int c=4;C在运行过程中将保持值不变,第一次调用的时候C的值变为5(A的值为3,B的值为4),第二次为6(A的值为4,B的值为4),第三次为7(A的值为5,B的值为4),;
第二题为递归调用.n=5的时候去求3*f(3)+2*f(4);
再分别去求f(3)和f(4)的值;分别为
f(3)=3*1+2*f(2) (f(2)=3*1+2*1=5; f(3)=3+10=13))
f(4)=3*f(2)+2*f(3)=3*5+2*13=15+26=41;
返回后f(5)=3*13+2*41=39+82=121