生无涯

吾生也有涯,而知也无涯,以无涯随有涯,乐以忘忧,生亦无涯矣www.cnblogs.com/shengwuya
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

a program a day 8

Posted on 2010-10-04 23:36  生无涯  阅读(115)  评论(0编辑  收藏  举报

/**
将一个整数转换为相应的字符串形式,要求用递归和非递归方法分别实现
**/
#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;
}