二级C语言 int a=4; int f(int n) { int t=0; static int a=5; if(n%2) {int a=6; t+=a++;}

else{inta=7;t+=a++;}returnt+a++}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("d%\n',... else { int a=7;t+=a++;} return t+a++ } main () { int s=a,i=0; for(;i<2;i++) s+=f(i); printf("d%\n',s); } 帮帮忙啊,这么多a我都头晕。。。。 展开
 我来答
曾代卫萌
2020-03-18 · TA获得超过3826个赞
知道大有可为答主
回答量:3152
采纳率:33%
帮助的人:168万
展开全部
秘密其实不复杂,里面的a真的太多了,但是这些a的存活范围都不同。比如有两个a的作用区域不同,你就可以把它看成是两个不同的变量。
所以我把程序改得容易看了,把看似相同的a区分开来,一共有4种不同的a。
第一个:int
a=4,这个是全局变量,实际没有用上。
第二个:f函数中的static
int
aa=5;
这个很重要,第一次调用函数,在return的时候,aa++导致由5变6,因为它是static,所以第2次调用函数,aa就是6了。
第三个:int
aaaa=6;
因为用了int,相当于定义新变量,所以这个a只在花括号里存活。实际没什么用途。
第四个:int
aaaaaa=7;
因为用了int,所以这个a也只在花括号里存活。。实际没什么用途。
第一次调用函数:S=4
+
7
+
5
=
16
第二次调用函数:S=16
+
6
+
6
=
28
#include
"stdio.h"
#include
"conio.h"
int
a=4;
int
f(int
n){
int
t=0;
static
int
aa=5;
if(n%2){
int
aaaa=6;
t=t+aaaa;
aaaa++;
}
else{
int
aaaaaa=7;
t=t+aaaaaa;
aaaaaa++;
}
return
t+aa++;
}
main(){
int
s=4,i=0;
for(i=0;i<2;i++)s=s+f(i);
printf("%d\n",s);
getch();
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式