用递归法讲一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以使任意位数

8-17
#include <iostream>
void main()
{
void exchange(int n);
int n;
printf("输入一个整数\n\n");
scanf("%d",&n);
printf("输出是:\n\n");
if(n<0)
{
putchar('-');
n=-n;
}
exchange(n);
printf("\n\n");
}
void exchange(int n)
{
int i;
if((i=n/10)!=0) exchange(i);
putchar(n%10+'0');
}
【不知道这个问题到底想问些什么 请给重点的句子标上注释 好让我这个新手能读懂这个程序】

#include <iostream>
void main()
{
void exchange(int n);//声明一个函数
int n;
printf("输入一个整数\n\n");
scanf("%d",&n);
printf("输出是:\n\n");
if(n<0)//如果输入的是负数,则输出负号“-”,然后转化为正数处理
{
putchar('-');
n=-n;
}
exchange(n);//调用转换函数,其中包括了转换和输出
printf("\n\n");
}
void exchange(int n)//转换函数定义部分
{
int i;
if((i=n/10)!=0) exchange(i);//i=n/10,保存了,因为i和10都是整数,所以结果不会是浮点型;如果等于0,说明n就是一位数;不为0说明n是个多位数,递归调用,处理i,即n除去个位的部分
putchar(n%10+'0');//n%10取余数运算,结果就是n的最低位。
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-15
这题和
输入一个十进制数,输出它的二进制数
狠类似
#include<stdio.h>
void fun(int n, int r)
{
if (n>1) fun(n/2,r); //大于1时(对应的二进制数多于1位的数)递归
printf("%d",n%2); //返回前输出本次的余数
}
main()
{
int n,r=2;
scanf("%d",&n);
fun(n,r);
printf("\n");
}
相似回答