C语言中关于局部变量和全局变量的问题

请大侠能不能写写计算机计算的过程,越详细越好,我在电脑里用CFREE5算得结果是29,但是书上说是28,可能是我计算机有问题,求答案究竟是多少,最重要的是写写过程,谢谢f... 请大侠能不能写写计算机计算的过程,越详细越好,我在电脑里用C FREE 5算得结果是29,但是书上说是28,可能是我计算机有问题,求答案究竟是多少,最重要的是写写过程,谢谢
for 循环里面的条件我改了,改回为i<3,得到结果29,书上说结果是28.
麻烦写循环一次的过程就好了。
展开
 我来答
撒旦的侍从
2014-03-24 · 超过11用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:26.7万
展开全部
应该是28吧,我没有在用真机测试,口算的,过程如下:
1、s = 2;此时用的是第二行的a=2
2、i=0时,f(i)的运行是第七行,t+=a++d的运算是t=4,a++为第七行的a加1,a由4变为5;然后到第九行t+a++,此时t=4,这行的a用的是第五行的a=3,所以,此时t+a++的运行为4+3=7,第五行的a由3变为4;
3、循环i=1时,情况跟步骤2一样,进入第八行的运算,t=5,第八行的a由5变为6,然后第九行为5+4=9;
4、循环i=2,t=5,t+a++为5+5=10
5、结果就是2+7+9+10=28;
这里注意的就是第2行、5行、7行、8行的a,都在自己的区间,不要弄乱就好了
小瓜瓜的大店
2014-03-24 · 生命似一部小说,其价值在于贡献而不在短长
小瓜瓜的大店
采纳数:16 获赞数:57

向TA提问 私信TA
展开全部
i<1循环一次,s+=f(i),这里的a,是全局变量,所以a=2,s=2+f(0),进入f,局部变量a,和外面的a=2无关,进入else部分,t+=a++,t==6,return t+a++==6+7==13,注意这里a又++了,所以a=7,所以main输出s=2+13,=15,

最重要的是,再次循环,f中的a
追问
#include"stdio.h"
int a=2;
int f(int n)
{
static int a=3;
int t=0;
if(n%2){static int a=4;t+=a++;}
else{static int a=5;t+=a++;}
return t+a++;
}
main()
{
int s=a,i;
for(i=0;i<1;i++)s+=f(i);
printf("%d\n",s);
}
追答
匆忙,急着上课去了,呵呵,没有去运行哈,呵呵,再试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2014-03-24 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6426万
展开全部
经反复推敲,此题得29是正确的。如果判断条件不是n%2而是!(n%2)或是n%2==0,则结果是28。你看看题抄得是不是有错……
追问
没有抄错
能不能写写计算过程,救命啊,大神
追答
for循环3次:i=0、1、2
当i=0时:f(0),由于n=0,n%2=0,所以执行else{static int a=5;t+=a++;}使t=5,a=6;然后返回t+a++(此a是f函数的static int a=3的a)为5+3=8;返回后主函数中s=s+f(0)=2+8=10;
当i=1时:f(1),由于n=1,n%2!=0,所以执行{static int a=4;t+=a++;}使t=4,a=5;然后返回t+a++=4+4(a是静态变量,上次调用时由3增为4)=8;返回后主函数中s=s+f(1)=10+8=18;
当i=2时:f(2),由于n=2,n%2=0,所以执行else{static int a=5;t+=a++;}使t=6(上次的a值),a=7;然后返回t+a++(此a是f函数的static int a=3的a)=6+5=11;返回后主函数中s=s+f(0)=18+11=29。
你可以照猫画虎搞搞n%2==0的情况,是28。这时if执行2次,而else执行1次。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
科研知识
2014-03-24 · TA获得超过220个赞
知道小有建树答主
回答量:232
采纳率:100%
帮助的人:90.3万
展开全部
能不能别放图啊,发代码
追问
#include"stdio.h"
int a=2;
int f(int n)
{
static int a=3;
int t=0;
if(n%2){static int a=4;t+=a++;}
else{static int a=5;t+=a++;}
return t+a++;
}
main()
{
int s=a,i;
for(i=0;i<3;i++)s+=f(i);
printf("%d\n",s);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龙端兰嘉言
2019-09-16 · TA获得超过968个赞
知道小有建树答主
回答量:1332
采纳率:100%
帮助的人:5.8万
展开全部
局部变量(内部变量)就是在函数内部定义,作用域仅限于定义它的函数内部的变量
全局变量(外部变量)就是在函数外面定义,作用域是整个程序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式