#include<stdio.h>
void convert(int n)
{
int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+’0’);
}
main()
{
int number;
scanf("%d",&number);
if(number<0)
{ putchar(‘-’);
number= -number;
}
convert(number);
}
从键盘输入5467, 为什么输出结果还是5467?
不是应该是764吗?
putchar(n%10+’0’);是什么意思?执行完后返回上一层继续执行?
那为什么输入5467后输出的还是5467?if语句执行后i=546,这时再执行convert(i);这里的i就相当于n,最后i=5时停止。这时输出5,但后面的467怎么来的?
追答convert(5467)
convert(546)
convert(54)
convert(5)
putchar(5%10+’0’);
putchar(4%10+’0’);
putchar(6%10+’0’);
putchar(7%10+’0’);
这是你程序的流程,单步调试一下就清楚了
就是想问一下为什么putchar(5%10+’0’);执行之后会继续执行后面的putchar(4%10+’0’);
putchar(6%10+’0’);putchar(7%10+’0’);而不是直接停止输出呢?
递归函数,程序没执行完啊
下面程序调试通过!
#include "stdafx.h"
#include
void convert(int n)
{
int i;
i=n/10;
if(n!=0)
{
putchar(n%10+'0');
convert(i);
}
}
void main()
{
int number;
scanf("%d",&number);
if(number<0)
{ putchar('-');
number= -number;
}
convert(number);
getchar();
}