这道题结果为什么是-610,怎么算出来的?
#include"stdio.h"voidf(intn){if(n<0){putchar('-');n=-n;}f(n/10)f(n/10);putchar(n%10+'...
#include "stdio.h"
void f(int n)
{if(n<0)
{putchar('-');
n=-n;
}
f(n/10)
f(n/10);
putchar(n%10+'0');
}
void main()
{
f(-610);
}
f(n/10)
f(n/10);
改为
if(n/10)
f(n/10); 展开
void f(int n)
{if(n<0)
{putchar('-');
n=-n;
}
f(n/10)
f(n/10);
putchar(n%10+'0');
}
void main()
{
f(-610);
}
f(n/10)
f(n/10);
改为
if(n/10)
f(n/10); 展开
2个回答
展开全部
这题涉及递归问题
第一步在main 函数中调用f(-610);
因为-610<0,所以输出-;n=-n,所以n此时为610;
再判断if(n/10) (当n/10!=0时,执行发f(n/10))
成立,调用f(n/10);也就是f(61);
因为61>0,不满足第一个if语句,再进行if(n/10)判断;
成立,调用f(n/10)),也就是f(6);
因为6>0,不满足第一个if语句,再进行if(n/10)判断;
不成立,此时不调用f(n/10);
再执行输出语句putchar(n%10+'0');
先输出第一次调用函数时输出的-;
再输出n=6时,putchar(n%10+'0');则为6;
再输出n=61时,putchar(n%10+'0');则为1;
再输出n=610时,putchar(n%10+'0');则为0;
所以 结果为-610;
第一步在main 函数中调用f(-610);
因为-610<0,所以输出-;n=-n,所以n此时为610;
再判断if(n/10) (当n/10!=0时,执行发f(n/10))
成立,调用f(n/10);也就是f(61);
因为61>0,不满足第一个if语句,再进行if(n/10)判断;
成立,调用f(n/10)),也就是f(6);
因为6>0,不满足第一个if语句,再进行if(n/10)判断;
不成立,此时不调用f(n/10);
再执行输出语句putchar(n%10+'0');
先输出第一次调用函数时输出的-;
再输出n=6时,putchar(n%10+'0');则为6;
再输出n=61时,putchar(n%10+'0');则为1;
再输出n=610时,putchar(n%10+'0');则为0;
所以 结果为-610;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |