//函数是看的别人的文章 发表本文的目的只是做个笔记而已。
函数 strtod() 用来将字符串转换成双精度浮点数(double),其原型为:
double strtod (const char* str, char** endstr);
【参数说明】str 为要转换的字符串,endstr 为第一个不能转换的字符的指针。
【函数说明】strtod() 函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。参数 str 字符串可包含正负号、小数点或E(e)来表示指数部分。如123. 456 或123e-2。
若endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,则表示该参数无效,或不使用该参数。
其中if(!NULL) ; 会执行 。 NULL(空)为假;
【返回值】返回转换后的浮点型数;若不能转换或字符串为空,则返回 0.0。
天梯题目:1505 神秘的杂文 链接:http://codevs.cn/problem/1505/
题目描述 Description
有一篇“杂文”,由一些整数、带小数点的实数和乱七八糟的单词(字符串)组成。整数的范围必须在-70000到70000之间;实数用一般形式表示,而不用科学计数法,大小也在-70000到70000之间,(输入文件中保证)有效数字不超过10位;凡不符合以上格式和范围的都是单词,一个单词内部不含空格。
这些内容由空格或者回车分割,连续的空格可能不只一个,也可能有空行。
求除了单词以外的整数和实数的算术平均值。
由整数、实数和单词间隔形成的文章。每行至多255个字符。文章大小至多100KB。
输出描述 Output Description
文中符合要求的整数和实数的平均值,四舍五入保留小数点后2位。
样例输入 Sample Input
3 3.14 aaa 5a
A5 -3
-3.14 5
1.00
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
char *p, A[100];
int n=0;
double sum=0,a;
while(scanf("%s", A)!=EOF)
{
a = strtod(A, &p);
if(!*p&&a>-70000&&a<70000)
{
// printf("%.2f\n",a);
sum += a;
n++;
}
}
if(n==0) printf("0.00");
else printf("%.2f", sum/n);
return 0;
}