请问大师们这道题怎么做?

lin131420cn 2002-07-25 06:38:36
int fac(int a)
{
int b=0;
static int c=3;
b++;c++;
return a+b+c;
}
main()
{
int a=3,j;
for(j=0;j<3;j++) printf("%d\n",fac(j));
}
...全文
23 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin131420cn 2002-07-27
  • 打赏
  • 举报
回复
老兄,我C语言还没吃透怎么学C++啊
heimayi 2002-07-27
  • 打赏
  • 举报
回复
还有。还是学C++吧。我上学的时候。C语言课我根本不听!
heimayi 2002-07-27
  • 打赏
  • 举报
回复
是5,7,9
Chice_wxg 2002-07-27
  • 打赏
  • 举报
回复
int fac(int a)
/*这里a被重新定义了,按调用fac(j)中的j的数值为准*/
{
int b=0;
static int c=3;
b++;c++;
/*
三次执行,结果分别是:
a=0 b=1 c=4
a=1 b=1 c=5
a=2 b=1 c=6

其中a是局部变量,以参数为准
每次执行的时候,因为b是普通变量,所以每次都重新计算,都是1
c是static类型,数字被保存,每次都增加
*/
return a+b+c;
}
main()
{
int a=3,j;
for(j=0;j<3;j++) printf("%d\n",fac(j));
}
lin131420cn 2002-07-26
  • 打赏
  • 举报
回复
答案5,7,9是对的,可我还是搞不懂为什么a=0呀,一开始不是定义a=3了吗
  • 打赏
  • 举报
回复
5
7
9
是考的作用域的问题.
qiuzhongshu 2002-07-26
  • 打赏
  • 举报
回复
不是走错了吧,C论坛
Stiven_PFan 2002-07-25
  • 打赏
  • 举报
回复
5
7
9
是正确的,千万要注意C的值
Horsesense 2002-07-25
  • 打赏
  • 举报
回复
没错,是
5
7
9
static 的作用是将变量定义为静态的,即变量c的值不会因为重新调用该函数而被初始化为3,他始终保持上一次计算后的结果,三次计算中c的值分别为4、5、6。
Chice_wxg 2002-07-25
  • 打赏
  • 举报
回复
5
7
9


是对的。

因为,每次fac的 c 变量都被保存

int fac(int a)
{
int b=0;
static int c=3;
b++;c++;
/*
三次执行,结果分别是:
a=0 b=1 c=4
a=1 b=1 c=5
a=2 b=1 c=6

其中a是局部变量,以参数为准
每次执行的时候,因为b是普通变量,所以每次都重新计算,都是1
c是static类型,数字被保存,每次都增加
*/
return a+b+c;
}
main()
{
int a=3,j;
for(j=0;j<3;j++) printf("%d\n",fac(j));
}
newhand 2002-07-25
  • 打赏
  • 举报
回复
同意楼上的意见,答案是:
5
7
9
popety_bit 2002-07-25
  • 打赏
  • 举报
回复
答案应该是:
5
7
9
sky_0538 2002-07-25
  • 打赏
  • 举报
回复
static 是表示变量保持上一次的值不变
sky_0538 2002-07-25
  • 打赏
  • 举报
回复
wgku(云霄) 的答案是正确的,是考的作用域的问题.
Iamfish 2002-07-25
  • 打赏
  • 举报
回复
到VB来找C高手?
哈哈
liuns 2002-07-25
  • 打赏
  • 举报
回复
static 是静态变量标示符.他定义的变量始终在程序的内存数据段里.
lin131420cn 2002-07-25
  • 打赏
  • 举报
回复
static 到底是干什么用的啊
wgku 2002-07-25
  • 打赏
  • 举报
回复
答案是

4
6
8

这是考你变量的作用域

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧