/**
将一个整数转换为相应的字符串形式,要求用递归和非递归方法分别实现
**/
#define MaxSize 50
#include<stdio.h>
#include<string.h>
/*
len为str的长度
*/
void reverse(char * str,int len)
{
char tmp;
for(int j = 0;j < len-1-j;j++)
{
tmp = str[j];
str[j] = str[len-1-j];
str[len-1-j] = tmp;
}
}
/*
递归法直接输出字符
*/
int trans(int n)
{
int m = 0;
int i = n % 10;
if((m = n/10) > 0)
trans(m);
printf("%c",i+48);
return 1;
}
/*
递归法将字符存入str//有待解决???
*/
int trans(int n,char * str,int count)
{
int m = 0;
int i = n % 10;
if((m = n/10) > 0)
trans(m,str,++count);
else
str[count+1] = '\0';
str[count] = i+48;
return 1;
}
/*
非递归法将字符存入str
*/
int trans(int n,char * str)
{
int i = 0;
while(n > 0)
{
str[i] = (n % 10) +48;
n = n / 10;
i++;
}
str[i] = '\0';
reverse(str,i);
// reverse(str,strlen(str));//与上行相同
return 1;
}
int main()
{
printf("The translation of 12345 from interger to string :\n");
trans(12345);
printf("\n");
char str[MaxSize];
trans(123,str,0);
reverse(str,strlen(str));
printf("%s\n",str);
char str1[MaxSize];
trans(1234567,str1);
printf("%s\n",str1);
return 1;
}