用递归法将一个整数转换成字符串
用递归法将一个整数n转换成字符串,例如输入483,应输入“384”,n的位数不确定,可以间任意位数的整数。下面是经过运行是正确的程序:#include<stdio.h>v...
用递归法将一个整数n转换成字符串,例如输入483,应输入“384”,n的位数不确定,可以间任意位数的整数。
下面是经过运行是正确的程序:
#include<stdio.h>
void convert(int n)
{
int i;
if ((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
main()
{
int number;
printf("\nInput an integer:");
scanf("%d",&number);
printf("Output:");
if (number<0)
{
putchar('-');
number=-number;
}
conert(number);
}
烦请高人给详细解释一下,最好用注释的形式。 展开
下面是经过运行是正确的程序:
#include<stdio.h>
void convert(int n)
{
int i;
if ((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
main()
{
int number;
printf("\nInput an integer:");
scanf("%d",&number);
printf("Output:");
if (number<0)
{
putchar('-');
number=-number;
}
conert(number);
}
烦请高人给详细解释一下,最好用注释的形式。 展开
2个回答
展开全部
//举例说明该函数流程,假如输入123,123/10后得12,余数是3
//再次运行convert函数,12/10得1,余数是2
//再次运行convert函数,1/10得0,余数是1
//至此,递归结束,开始打印数字,首先打印最后一次递归的结果1
//然后打印倒数第二次的结果2
//最后打印3,输出123
void convert(int n)
{
int i; //定义整数变量
if ((i=n/10)!=0)//如果整数i除以10后不为0,说明高位还有值,需要更多字符来表示
convert(i);//调用自身,使用除以10后的i值
putchar(n%10+'0');//打印余数,余数是1则打印字符1,以此类推
}
main()
{
int number;//定义整数变量
printf("\nInput an integer:");//输出信息
scanf("%d",&number);//让用户输入一个整数
printf("Output:");//输出信息
if (number<0)//如果是负数
{
putchar('-');//打印负号
number=-number;//负数变为正数
}
convert(number); //执行递归函数
}
//再次运行convert函数,12/10得1,余数是2
//再次运行convert函数,1/10得0,余数是1
//至此,递归结束,开始打印数字,首先打印最后一次递归的结果1
//然后打印倒数第二次的结果2
//最后打印3,输出123
void convert(int n)
{
int i; //定义整数变量
if ((i=n/10)!=0)//如果整数i除以10后不为0,说明高位还有值,需要更多字符来表示
convert(i);//调用自身,使用除以10后的i值
putchar(n%10+'0');//打印余数,余数是1则打印字符1,以此类推
}
main()
{
int number;//定义整数变量
printf("\nInput an integer:");//输出信息
scanf("%d",&number);//让用户输入一个整数
printf("Output:");//输出信息
if (number<0)//如果是负数
{
putchar('-');//打印负号
number=-number;//负数变为正数
}
convert(number); //执行递归函数
}
展开全部
你这程序有错误哦,输出结果是原序输出
以下是我稍微修改的程序,及相应的注释
#include<stdio.h>
void convert(int n)
{
int i;
//注意,下面这语句应该是放这里的,而不是放在后面
putchar(n%10+'0');//每次除10取余数,加‘0’转化为字符,一个个反序输出
if ((i=n/10)!=0)//把传递进来的数除10取整,比如123,取一次整i就变为12
convert(i); //调用自身这个函数,把i的现值传递到convert函数进行递
//归,以此类推,直到(i=n/10)=0时,停止递归,一步步返回
}
main()
{
int number;
printf("\nInput an integer:");
scanf("%d",&number);
printf("Output:");
if (number<0) //判断是否为负数
{
putchar('-'); //如果为负数,先输出一个负号
number=-number; //将负数转化为整数,方面后面运算
}
convert(number); //调用递归函数convert()
}
希望能帮到你,可以继续探讨!
以下是我稍微修改的程序,及相应的注释
#include<stdio.h>
void convert(int n)
{
int i;
//注意,下面这语句应该是放这里的,而不是放在后面
putchar(n%10+'0');//每次除10取余数,加‘0’转化为字符,一个个反序输出
if ((i=n/10)!=0)//把传递进来的数除10取整,比如123,取一次整i就变为12
convert(i); //调用自身这个函数,把i的现值传递到convert函数进行递
//归,以此类推,直到(i=n/10)=0时,停止递归,一步步返回
}
main()
{
int number;
printf("\nInput an integer:");
scanf("%d",&number);
printf("Output:");
if (number<0) //判断是否为负数
{
putchar('-'); //如果为负数,先输出一个负号
number=-number; //将负数转化为整数,方面后面运算
}
convert(number); //调用递归函数convert()
}
希望能帮到你,可以继续探讨!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询