登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秒大刀 博客

好好学习 天天向上

 
 
 

日志

 
 
 
 

itoa  

2006-04-13 01:22:18|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

//问题描述:  分别用递归和非递归的方式实现一函数,其功能为将给定的整数转换成
//    相应的字符串输出。
//备注:      输入要转换的数字时不能输入错误,比如字母
//作者:      杨明哲
//完成日期:  2006-04-01
//BUG报告;  dearymz@163.com

#include <iostream>
#include <stack>

using namespace std;

namespace ymz
{
 //采用递归方法的“数字->字符串”转换的核心函数
 //供函数itoa_recursion递归调用
 int _itoa(long value, char* result)
 {
  long next = value / 10;
  long now = value % 10;
  if(next == 0)
  {
   *result = char(48 + now);
   *(result+1) = '\0';
   return 0;
  }
  else
  {
   int index = _itoa(next, result + 1);
   index++;
   result[index] = char(48 + now);
   return index;
  }
 }
 //采用递归方法的“数字->字符串”转换
 char* itoa_recursion(int value, char* result)
 {
  if(value < 0)
  {
   result[0] = '-';
   _itoa(value * -1, result + 1);
  }
  else
   _itoa(value, result);
  return result;
 }
 //采用非递归方法的“数字->字符串”转换
 char* itoa_loop(int value, char* result)
 {
  stack<char> buf;
  int index = 0;
  //正数化处理
  if(value < 0)
  {
   result[index] = '-';
   index ++;
   value *= -1;
  }
  //核心处理
  do
  {
   int now = value % 10;
   value /= 10;
   buf.push(48 + now);
  }
  while(value != 0);
  //倒序操作
  for(; !buf.empty(); index++)
  {
   result[index] = buf.top();
   buf.pop();
  }
  result[index] = '\0';
  return result;
 }
}

const int BUFSIZE = 64;

void main()
{
 char* buf = new char[BUFSIZE + 1];

 long value;

 while(true)
 {
  cout<<"请输入一个数字:";
  cin>>value;

  cout<<"采用非递归方法的“数字->字符串”转换\t";
  cout<<ymz::itoa_loop(value, buf)<<endl;
  cout<<"采用递归方法的“数字->字符串”转换\t";
  cout<<ymz::itoa_recursion(value, buf)<<endl;

  cout<<"是否继续?(Y/N)";
  cin.ignore(1, '\n');
  cin.getline(buf, BUFSIZE);
  if(buf[0] == 'N' || buf[0] == 'n')
   break;
 }
 delete []buf;
}

  评论这张
 
阅读(1078)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018