10、以下程序程序运行后的输出结果是( )。int f(int n){ static int a=1; n+=a++; return n;}main(){ i
10、以下程序程序运行后的输出结果是()。intf(intn){staticinta=1;n+=a++;returnn;}main(){inta=3,s;s=f(a);s...
10、以下程序程序运行后的输出结果是( )。
int f(int n){ static int a=1;
n+=a++; return n;}
main(){ int a=3,s;
s=f(a);s=s+f(a);printf("%d\n",s);}
A.7 B.8 C.9 D.10
能说的详细点吗? 展开
int f(int n){ static int a=1;
n+=a++; return n;}
main(){ int a=3,s;
s=f(a);s=s+f(a);printf("%d\n",s);}
A.7 B.8 C.9 D.10
能说的详细点吗? 展开
5个回答
展开全部
9,所以C正确,选C——s=f(a)==n+=a++==3+1==4。s=s+f(a)==4+n+a++==4+3+2==9。为什么a第一次是1第二次是2?因为a是static变量,它的值不随函数退出而消失,而要保留到下一次被访问。毕。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int f(int n)
{
static int a=1;
n+=a++;
return n;
}
main()
{
int a=3,s;
s=f(a); // 3=3+ a++ -> n = 3+ a; a++ 所以这时 a=2 返回4
s=s+f(a); // s = 4 + f(a) -> n = n + a->n=n+2; 返回5 4+ 5 = 9
printf("%d\n",s);
}
9
Press any key to continue
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-02-24
展开全部
输出结果是
C.9
C.9
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-03-28
展开全部
#include <stdio.h>
int f(int n){
static int a=1;
n+=a++;
return n;
}
int main(){
int a=3,s;
s=f(a);
s=s+f(a);
printf("%d\n",s);
return 0;
}
C
亲你到 这里 这里 去试一下就知道答案了。这种太简单了的题目不建议问哦
第一次调用 f 函数, 实际参数 main.a = 3, 因此调用 f(3) ,
f.n = 3
f.a = 1
f.n += f.a++ // 这句等价于: f.n = f.n + f.a; f.a++;
因此有: f.n = 4; f.a =2
返回 f.n 到主程序,因此返回 4 到 main, 我们有 main.s = f的返回值 = 4
第二次调用 f 函数, 实际参数 main.a = 3, 因此调用 f(3)
f.n = 3
此时因为前一次调用之后 f.a = 2. 因此
f.n += f.a++ // 这句等价于: f.n = f.n + f.a; f.a++;
因此有: f.n = 5; f.a =3
返回 f.n 到主程序,因此返回 5 到 main, 我们有 main.s = main.s + f 的返回值,
也就是: s = 4 + 5 = 9。
如果这还看不懂,继续踩而不是赞的都是猪头。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询