C++的题目,高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/07 04:41:52
使用递归将一N位整数转换成为字符串
关键是怎么把取出来的单个数字转换为字符,

数字转字符,只要ASCII码加上0x30(十进制是48)就可以了
字符'0'的ASCII码是48
字符'1'的ASCII码是49
……

#include <iostream>
#include <string>
using namespace std;

#define abs(n) (n > 0 ? n : -n)

string to_string(int n)
{
return abs(n) >= 10 ?
to_string(n / 10) + static_cast<char>(abs(n % 10) + '0') :
(n > 0 ? string() : string(1, '-')) + static_cast<char>(abs(n) + '0');
}
int main()
{
cout << to_string(-12312540);
}

估计你递归弄的差不多了,我针对你的问题补充说两句:
数字和字符之间转换的纽带是-ASCII码。
你递归的时候,先将每位上的数字转成ASCII码,然后在输出的时候将这个字符串按位打印就可以了。
特别注意:整数数字要+48,这是为了转ASCII码所需要的。
例如下面这个小例子:
void main()
{
int i = 5;
char ii[2];

i += 48;
ii[0] = (char)i;
ii[1] = '\0';
printf(ii);
}

将这个数每次对10取余(如7758),所得结果就是个位数8,对8进行处理,存入临时空间,然后将这个数除以10求商(相当于把这个数向右移了,舍去了个位,成了775)。就这样循环着逐