##### 17、判断实数是否合法 ⭐
try_catch 实现;
stof的用法
pos=s.find('.')
%.2lf
#include<iostream>
#include<cstring>
using namespace std;
bool check(string s){
try{
size_t idx;
double x = stof(s,&idx);
if(idx<s.size()) return false;
if(x<-1000 || x>1000) return false;
int pos = s.find('.');
if(pos!=-1 && idx-pos-1>2) return false;
}
catch(...){
return false;
}
return true;
}
int main(){
int n;
cin>>n;
int cnt=0;double sum=0;
for(int i=0;i<n;i++){
string s;
cin>>s;
if(check(s)) sum+=stof(s),cnt++;
else cout<<"ERROR: "<<s<<" is not a legal number"<<endl;
}
if(cnt==0) cout<<"The average of 0 numbers is Undefined"<<endl;
else if(cnt==1) cout<<"The average of 1 number is ",
printf("%.2lf\n",sum);
else
cout<<"The average of "<<cnt<<" numbers is ",
printf("%.2lf\n",sum/cnt);
}