编写函数double val(char *buf),把buf中的数字字符转换为数值作为函数值返回。 说明:输入的字符串是一个仅含数字的字符串,可能有小数点,也可能没有,不会出现类似.23的形式,但允许0.23的形式。 #include<stdio.h> double val(char *buf){ ...... ...... ...... } int main(){ double a=0; char s[50]={0}; gets(s); a=val(s); printf("%lf\n",a); } 输入输出样例: 12.58 (注:运行时的输入) 12.580000 (注:运行时的输出)
时间: 2024-02-03 15:01:57 浏览: 76
Delphi常用函数
下面是函数 `val` 的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
double val(char *buf) {
double result = 0.0;
int len = strlen(buf);
int i, point_pos = -1;
for (i = 0; i < len; i++) {
if (buf[i] == '.') {
point_pos = i;
break;
}
result = result * 10 + (buf[i] - '0');
}
if (point_pos != -1) {
double factor = 1.0;
for (i = point_pos + 1; i < len; i++) {
factor /= 10;
result += (buf[i] - '0') * factor;
}
}
return result;
}
int main() {
double a = 0;
char s[50] = {0};
gets(s);
a = val(s);
printf("%lf\n", a);
return 0;
}
```
函数 `val` 遍历输入字符串 `buf`,将每个数字字符转换为数值,并根据小数点的位置计算出最终的结果。函数中使用变量 `point_pos` 记录小数点的位置,如果输入字符串中没有小数点,则 `point_pos` 的值为 -1。如果输入字符串中有小数点,函数就会根据小数点的位置分别计算整数部分和小数部分的数值,并且使用变量 `factor` 记录小数部分的位数,以便于计算。最后,函数将整数部分和小数部分的数值相加,得到最终的结果。
需要注意的是,在编写函数 `val` 时,需要考虑到输入字符串可能没有小数点的情况,此时应该将整个字符串都当作整数处理。此外,为了避免使用 `gets` 函数带来的安全问题,可以使用 `fgets` 函数代替。
阅读全文