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

这个题 让把整数转化为字符串  且用递归的方法   首先肯定要打印出这个整数的最高位的 但是如果要直接打印出最高位  是需要求位数 然后除以10的某次幂  然后用整数除这个数  

但是这里是递归的方法  

int main()
{
	void convert(int n);
	int n = 0;
	cin >> n;
	convert(n);
	return 0;
}

//  递归的形式 想要先输出最高位是个问题 可以先判断是不是个位数 若不是 就递归它/10 然后输出它%10的结果 
void convert(int n)
{
	if (n / 10 != 0) //如果他不是个位数  把他的个位数去掉 然后递归前面的  最终结果为它的最高位以字符的形式输出出去
		convert(n / 10);
	putchar(n % 10 + '0');
}

首先这个函数如果接收了 489   那么 if判断不是个位数然后就递归489/10也就是48  就是直到递归函数接收的是个位数为止   那么就if不成立  就putchar这个个位数  然后上一个二位数也会走到下一步 %10之后以字符形式输出   依次类推

这里以字符的形式打印 用的是putchar函数  且用cout是不行的   putchar和cout对于整数加字符的输出有明显的区别   里面的细节我也不知道  如果用cout  它是把n%10当作一个整数 然后加上这个'0'的ASCII码值  最后以数字的形式输出 而putchar  put  char嘛  可能本身就是以char类型输出  

其实 如果不用递归的办法也可以我认为  就是打印出每一位 好吧  我刚才看了一下 这篇的前x篇就是这个问题 只是不是以字符形式输出

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值