注册 登录
编程论坛 C++教室

求指教!!数字转化成字符串的程序。

Piculus 发布于 2012-04-24 18:12, 261 次点击
以下是把数字转化成字符串的一个程序,本人菜鸟,以下程序运行时在输入数字(小数)之后就了无音讯了连“请按任意键结束”也没出现,于是本人就在xs()的“j++”前面加了个“printf("y=%f\n",y);”结果发现如果输入例如0.1,0.2414,0.0001之类的数最后都会成功,但是一旦输入例如1.1,1.242,5.32之类的数一运行就会源源不断的涌现一大坨乱七八糟的东西,比如:“y=1.#INF00”*N。
希望高手们帮忙指教一下到底哪里出错了,还有,请务必用简单易懂的语言,拜托了…………
(衷心希望自己不要错的太幼稚,衷心希望不要被鄙视……)
2 回复
#2
Piculus2012-04-24 18:14
#include<stdio.h>
char s[30];int t=1,j=0;
void zh(int n)/*把整数部分转化成字符串*/
{  
 int i,m=n;
 while((m/=10)!=0)
    t++;
 for(i=t-1;i>=0;i--)
   {s[i]=n%10+'0';n/=10;}
}
int xs(double y)/*把小数部分转化成整数*/
{
 int x=y;
 if(y==x)
  return y;
 else {j++;return xs(y*10);}
}
main()
{
    double a,c;
 int b,i;
 scanf("%lf",&a);
    b=(int)(a);
    zh(b);
    c=a-b;
    if(a!=b)/*如果输入的数有小数部分,就加上一个小数点*/
    {
     s[t]='.';
     b=xs(c);
     for(i=1;i<=j;i++)
         c*=10;
     b=c;
      for(i=j+t;i>t;i--)
         {s[i]=b%10+'0';b/=10;}
        s[t+j+1]='\0';
    }
    else
        s[t]='\0';
    printf("s=%s",s);  
}
#3
lucky5635912012-04-25 09:09
好像是itoa这个函数。
1