题目描述:使用C语言将一个整型数字转换成字符串并倒序打印,例如:123转换成字符串321,-1234转换成字符串-4321。
代码实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 将一个整型数字转换成字符串并倒序打印 */
void Recur(int num);
char * Recur1(int num);
int main(void)
{
char * str;
str = Recur1(-12345);
printf("%s\n", str);
Recur(12345);
}
/* 递归 */
void Recur(int num)
{
if(num == 0)
{
printf("\n");
return;
}
if(num < 0)
{
num = -num;
printf("%c", '-');
}
printf("%c", (num % 10) + '0');
Recur(num/10);
}
/* 不使用递归且返回指针 */
char * Recur1(int num)
{
char * temp;
int num_bak = num;
int i;
int len;
char value;
temp = (char *)malloc(10);
if(num == 0)
{
temp[0] = '0';
return temp;
}
if(num < 0)
num = -num;
for(i = 0; num != 0; i++)
{
temp[i] = num % 10 + '0';
num = num / 10;
}
len = i;
for(int j = len - 1; j >= 0; j--)
{
temp[j + 1] = temp[j];
}
temp[len + 1] = '\0';
temp[0] = '-';
return temp;
}
思考逻辑:
(1) 整数为0时,需返回字符串0;
(2) 不为0时,对整数以10取余,可得到最后一位数;
(3) 对整数除10可去除整数的个位数;
注意:负数需要考虑到数组的移位操作。