一道简单的c语言题。问一下结果是怎么出来的。

 我来答
zhw410
推荐于2016-02-18 · 超过24用户采纳过TA的回答
知道答主
回答量:52
采纳率:100%
帮助的人:38.4万
展开全部

输出结果应该是:

i=5

i=2

i=2

i=0

i=2

说明如下:

int i=0;//这里声明了一个全局变量,但是下面函数中有同名局部变量,所以实际没什么作用
main()
{
int i=5;
reset(i/2);//这个函数中并没有改变i的值,所以运行后i还是5
printf("i=%d\n",i);//所以这里打印i=5
reset(i=i/2);//这个参数中有赋值语句,所以会影响i的值,i的值是5/2=2(取整)
printf("i=%d\n",i);//所以这里打印i=2
reset(i/2);//这个函数同样没有改变i的值,所以运行后i仍然是2
printf("i=%d\n",i);//所以这里打印i=2
workover(i);//这个函数中有个打印语句,
printf("i=%d\n",i);//这里i的值还是2,所以还是打印i=2
}
workover(int i)
{
i=(i%i)*((i*i)/(2*i)+4);//由于i对i取余一定是0,所以这个表达式的值就是0,i的值也就是0
printf("i=%d\n",i);//所以这里打印i=0
return(i);
}
reset(int i)
{
i=i<=2?5:0;//这个函数中对i的值的操作都是在这个子函数的局部生效,所以对主函数中的i的值并没有影响
return(i);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式