
c语言的一道选择题
有以下程序:#include<stdio.h>intf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%d\n",s);}i...
有以下程序:
#include <stdio.h>
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a); printf("%d\n",s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序运行后的输出结果是( )。
A) 9
B) 8
C) 7
D) 10
这个n没赋值怎么知道是多少啊? 展开
#include <stdio.h>
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a); printf("%d\n",s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序运行后的输出结果是( )。
A) 9
B) 8
C) 7
D) 10
这个n没赋值怎么知道是多少啊? 展开
5个回答
展开全部
A
解析:第一次调用时,在f函数中,n=3,n+=a,n=4,a=2;返回4,所以主函数中s=4;
第二次调用时,在f函数中,n=3,n+=a,n=3+2=5,a=3;返回5,所以主函数中s=4+5=9;
难点:主函数中a和f函数中a不一样,都是局部变量,两者之间没有关系;
在f函数中,a是静态局部变量,它的值在第二次调用f函数时为2,而不是1.
中国物联网校企联盟技术部
解析:第一次调用时,在f函数中,n=3,n+=a,n=4,a=2;返回4,所以主函数中s=4;
第二次调用时,在f函数中,n=3,n+=a,n=3+2=5,a=3;返回5,所以主函数中s=4+5=9;
难点:主函数中a和f函数中a不一样,都是局部变量,两者之间没有关系;
在f函数中,a是静态局部变量,它的值在第二次调用f函数时为2,而不是1.
中国物联网校企联盟技术部
展开全部
A
s=f(a);时调用f(3),n=n+a 就是n=3+1 然后a在自加1变为2,由于a是静态变量,下次调用时不会被初始化,保留上次的值2. 函数返回n的值是4赋给s
s=s+f(a); 时调用f(3),n=n+a 即n=3+2 返回5
s=4+5
s=9
谢谢给予采纳!
s=f(a);时调用f(3),n=n+a 就是n=3+1 然后a在自加1变为2,由于a是静态变量,下次调用时不会被初始化,保留上次的值2. 函数返回n的值是4赋给s
s=s+f(a); 时调用f(3),n=n+a 即n=3+2 返回5
s=4+5
s=9
谢谢给予采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
注意n是函数的形参,是由主函数的实参调值进入的。所以s=f(3),代入下面的函数,n=3。然后依次累加即可。注意static 是静态变量,会储存之前保存的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是A)9吧如果对了我解释下 如果错了就算了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是A吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询