编写函数atof(char s[])和read_line(char str[], int n),将字符串转换为对应数值的小数。
测试程序为:
#include <stdio.h>
#include <ctype.h>
#define STR_LEN 20
int read_line(char str[], int n); //n为字符串的长度,返回实际读入的字符个数
double atof(char s[]);
int main()
{
char str[STR_LEN + 1];
read_line(str, STR_LEN);
printf("%f\n", atof(str));
return 0;
}
/* 你的代码将被嵌在这里 */
#include <stdio.h>
#include <ctype.h>
#define STR_LEN 20
int read_line(char str[], int n) //n为字符串的长度,返回实际读入的字符个数
{
int i = 0, a=0;
while ((i = getchar()) != '\n')
{
str[a] = i;
a++;
}
str[a] = '\0';
return a;
}
double atof(char s[])
{
int a = 0, i = 1, b = 1;
double n = 0, m = 0;
while (s[a] == ' ' || a[s] == '\t')
{
a++;
}
if (s[a] == '-')
{
a++;
i = -1;
}
if (s[a] == '+')
{
a++;
}
while (s[a] != '\n')
{
if (s[a] >= '0' && s[a] <= '9')
{
n = n * 10 + (s[a] - '0');
a++;
}
else if (s[a] == '.')
{
a++;
while (s[a] != '\n')
{
if (s[a] >= '0' && s[a] <= '9')
{
n = n * 10 + (s[a] - '0');
a++;
b *= 10;
}
else
{
break;
a++;
}
}
}
else
{
break;
a++;
}
}
return i * n / b;
}
int main()
{
char str[STR_LEN + 1];
read_line(str, STR_LEN);
printf("%f\n", atof(str));
return 0;
}