菜鸟求教一道C语言题目···

H602miss 2010-09-17 09:10:23
#include <stdio.h>
void fun(int x)
{
if(x/2>0)
fun(x/2);
printf("%d",x);
}
main()
{
fun(3);
printf("\n");
}
此时输出的答案是13;
当把3换成5输出的时候输出的却是125;
这是为什么啊???
...全文
94 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
modyaj 2010-09-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jerrywjh 的回复:]
难道不正确么? int i=5/2后 i=2!因为整型取整的结果!
[/Quote]

这个就再明白不过的了
lanhxg 2010-09-18
  • 打赏
  • 举报
回复
13是因为你先第一次递归的结果是3 然后是1
递归式按反向输出的所以是13,你没有加空格或是回车,其实是一个1 一个3
Liberty-Bird 2010-09-17
  • 打赏
  • 举报
回复
这是递归函数,最后计算出的结果最先打印出来,而最先计算出的fun(x)最后打印出来
lazy_2010 2010-09-17
  • 打赏
  • 举报
回复
fun(3) --> fun(1)

fun(5) --> fun(2) --> func(1)

因为整数的除法关系,3/2 = 1,5/2 = 1;且代码的输出是从右到左;学会单步调试吧
skyfree 2010-09-17
  • 打赏
  • 举报
回复
难道不正确么? int i=5/2后 i=2!因为整型取整的结果!
H602miss 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lazy_2010 的回复:]
printf("%d\n",x);

你就明白了。
[/Quote]
我知道输出的是1 3和1 2 5
lambochan 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lazy_2010 的回复:]
printf("%d\n",x);

你就明白了。
[/Quote]

正解..
Eleven 2010-09-17
  • 打赏
  • 举报
回复
这个调试跑一下就知道了
ylb63 2010-09-17
  • 打赏
  • 举报
回复
(int)5/2=2
lazy_2010 2010-09-17
  • 打赏
  • 举报
回复
printf("%d\n",x);

你就明白了。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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