#include<iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<algorithm>#include<map>#include<set>#define MAX 99999999typedeflonglong ll;
using namespace std;int n,m,k;intj(string s){
int len = s.size();int flag =1;for(int i =0;i<len;i++){
int t =0;if(s[i]=='-'&& i ==0)continue;if(s[i]=='.'){
t ++;if(len -i-1>2){
flag =0;break;}}elseif(isdigit(s[i])==0){
flag =0;break;}if(t>=2){
flag =0;break;}}if(flag ==0)return0;double ans =stod(s);if(abs(ans)<=1000)return1;return0;}intmain(){
cin>>n;double ans =0;int num =0;while(n--){
string s;
cin>>s;if(j(s)){
ans +=stod(s);
num++;}else
cout<<"ERROR: "<<s<<" is not a legal number\n";}if(num>=2)printf("The average of %d numbers is %0.2f",num,ans/num);elseif(num ==1)printf("The average of 1 number is %0.2f",ans);elseif(num ==0)printf("The average of 0 numbers is Undefined");return0;}
2、
#include<iostream>#include<cstring>#include<vector>#include<stdio.h>#include<algorithm>
using namespace std;int n,m,k;intmain(){
cin>>n;int cnt =0;double ans =0;while(n--){
string s;cin>>s;int len = s.size();int d =-1;//小数点在数组中的位置int flag =0;//判断是否合法for(int i =0; i < len ;i++){
if(s[i]=='.'){
d = i;break;}}if(d ==-1)//没有小数点{
for(int i =0; i < len;i++){
if(i ==0&& s[i]=='-')continue;if(s[i]<'0'|| s[i]>'9'){
flag =1;break;}}if(!flag &&stod(s)>=-1000&&stod(s)<=1000){
ans +=stod(s);
cnt++;}elseprintf("ERROR: %s is not a legal number\n",s.c_str());}else//有小数点{
for(int i =0; i < d;i++){
if(i ==0&& s[i]=='-')continue;if(s[i]<'0'|| s[i]>'9'){
flag =1;break;}}if(len - d -1>2)//小数点位数
flag =1;for(int i = d +1; i < len ;i++){
if(s[i]<'0'|| s[i]>'9'){
flag =1;break;}}if(!flag &&stod(s)>=-1000&&stod(s)<=1000){
ans +=stod(s);
cnt++;}elseprintf("ERROR: %s is not a legal number\n",s.c_str());}}if(cnt ==1)printf("The average of %d number is %.2f",cnt,ans);elseif(cnt ==0)printf("The average of 0 numbers is Undefined");elseprintf("The average of %d numbers is %.2f",cnt,ans/cnt);return0;}