求一道c语言的题 高分等答案

来源:百度知道 编辑:UC知道 时间:2024/05/22 03:22:51
1. 构建一个转换函数将字符串转化为double型浮点数
例如
函数可以以这种方式声明
int main()
{
Double a;
charstr[] = “123456789.123”;
a =ToDouble(str);
printf(“%f”,a);
}
doubleToDouble(char * strNum)
{
doubleresult ;
……
return result
}
要求小数精度至少三位;

提示:
1. 每个a符对应一个ASCII码, 所以不要试图直接(doule)srt这种强制转换….
2. 整数部分和小数部分分别计算
3. 可能会用的% 取余
4. 不要试图使用atof() 或者类似的函数
5. 最佳代码只有一个循环3行代码.

我也不知道你有多高要求; 哎我就这样提交了

double toDouble(const char *sz)
{
double result = 0, base = 1.0;
for (const char *p = sz; *p != 0; ++p)
{
result = *p != '.' ? result * 10.0 + (*p - '0') : result;
base *= base > 1.0 || *p == '.' ? 10.0 : 1.0;
}
return result / (base > 1.0 ? base / 10.0 : base);
}

int main()
{
double a = 0.0;
char str[] = "11.1";
a = toDouble(str);
printf("%f", a);
}

好嘛好嘛,不用atof就是了。。。

int main()
{
double ToDouble(char * strNum);
double ToDouble2(char * strNum);
double ToDouble3(char * strNum);
double ToDouble4(char * strNum);

double a;
char str[] = "123456789.123";
a = ToDouble(str);
printf("%f\n",a);
a = ToDouble2(str);
printf("%f&#