版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_36669549/article/details/84727220
将函数void ftoa(double f, char[])中的浮点数f转换为相应的字符串,存放在s中。其中,最多保留4位小数。例如1234.67转换为“1234.67”,-56.789867转换为“-56.7898”
【分析】
该题是北京航空航天大学的考研题。在将浮点数转换为相应的字符时可分为两个部分进行转换:先将浮点数的整数部分转换为字符串,然后将浮点数的小数部分转换为字符串。转换时需要取出浮点数中的每一位数字,然后加上48就转换为字符了。
main.cpp
#include <iostream>
using namespace std;
#define MAX 100
void ftoa(float f,char s[]);
void main()
{
double f;
char s[MAX];
cout << "请输入一个浮点数:" << endl;
cin >> f;
ftoa(f, s);
cout << "转换后的字符串为:" <<s << endl;
system("pause");
}
void ftoa(float f, char s[])
{
int i, j, len, t, n;
double sign;
if ((sign=f)<0)
{
f = -f;
}
n = int(f);
i = 0;
do
{
s[i++] = n % 10 + 48;
} while (n/=10);
if (sign<0)
{
s[i++] = '-';
}
len = i;
for (i = 0,j = len - 1; i < len / 2;i++,j--)
{
t = s[i];
s[i] = s[j];
s[j] = t;
}
f -= (int)f;
s[len++] = '.';
for (i = 0; i < 4;i++)
{
f *= 10;
s[len++] = ((int)f) % 10 + 48;
}
while (s[len-1]=='0')
{
len--;
}
s[len] = '\0';
}
结果: