Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1412025
  • 博文数量: 143
  • 博客积分: 10005
  • 博客等级: 上将
  • 技术积分: 1535
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-23 17:25
个人简介

淡泊明志 宁静致远

文章分类

全部博文(143)

文章存档

2011年(2)

2009年(1)

2007年(22)

2006年(118)

我的朋友

分类: C/C++

2006-11-06 08:52:49

请编写一个 C 函数,该函数将给定的一个整数转换成字符串。

【本程序在Dev C++ 4.9.9.2 下编译通过】

下面的这个算法比较傻,垃圾的很,显示了一个C语言新手

所应有的水平。而且处理不完全,算法考虑不周到,代码

过于啰嗦,不够简洁,紧接着这个后面会有一个较为简洁、

完全的代码。

char * IntToStr(int Number)

{

   char ch,*str,*t;

   int i,Temp,Len=0;

   str = (char *)malloc(11*sizeof(char));

   t = str;

   Temp =Number;

   while(Temp != 0)

   {

      *t = (Temp%10)+0x30;

      Temp = Temp/10;

      Len++;

      t++;

   }

   *t = '\0';

   t = str;

   for(i=0;i

   {

      ch = *t;

      *t = *(t+Len-2*i-1);

      *(t+Len-2*i-1) = ch;

      t++;

   }

   return str;

}

main()

{

   puts(IntToStr(123456));

}

下面是较为完全,较为简洁的代码。如发现什么错误,希望网友

能及时提出,俺将会给予改正。这里要谢谢 “阿郎” 网友的提醒。

char * IntToStr(int Number)

{

   char ch,*str,*right,*left;

   unsigned int Value;

   str = (char *)malloc(12*sizeof(char));

   left = right = str;

   //如果是负数,则应加上负号,left、right向后走。

   if(Number < 0)

   {

      Value = -Number;

      *str = '-';

      left++,right++;

   }

   else

      Value = (unsigned)Number;

   //把数字转换成字符串(倒置的)

   while(Value)

   {

      *right = (Value%10)+0x30;

      Value = Value/10;

      right++;

   }

   *right-- = '\0';

   //把倒置的字符串正放过来

   while(right > left)

   {

      ch = *left;

       *left++ = *right;

       *right-- = ch;

   }

   return str;

}

main()

{

   char * str;

   str = IntToStr(1234567);

   puts(str);

   free(str);

   str = IntToStr(-1234567);

   puts(str);

   free(str);

   str = IntToStr(0x7FFFFFFF);

   puts(str);

   free(str);

   str = IntToStr(-0x7FFFFFFF);

   puts(str);

   free(str);

   system("pause");

}

阅读(4009) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-01-12 10:06:39

愚蠢行为。

chinaunix网友2009-01-12 10:06:32

愚蠢行为。