写得又臭又长。。。有时间再来更。。。
#include <iostream>
#include <string.h>
double ans=0;
int count=0;
bool check(char s[]){
int i=0,tag=0;
if(s[0]=='-'){
tag=1;
i++;
}
int len=strlen(s);
if(len>8) return false;
double sum1=0;
for(;i<len;i++){
if(s[i]>='0'&&s[i]<='9'){
sum1=sum1*10+1.0*(s[i]-'0');
}else if(s[i]=='.'){
break;
}else{
return false;
}
}
int j=i+1;
double sum2=0;
for(;j<len;j++){
if(j-i>2) return false;
if(s[j]>='0'&&s[j]<='9'){
sum2=sum2*10+1.0*(s[j]-'0');
}else{
return false;
}
}
if(j-i==2) sum2=sum2*0.1;
else if(j-i==3) sum2=sum2*0.01;
double sum=sum1+sum2;
if(tag==1) sum=-sum;
if(sum>1000||sum<-1000) return false;
ans+=sum;
count++;
return true;
}
int main(){
int N;
char str[300];
scanf("%d",&N);
for(int i=0;i<N;i++){
scanf("%s",str);
if(!check(str)){
printf("ERROR: %s is not a legal number\n",str);
}
}
if(count==0) printf("The average of 0 numbers is Undefined");
else if(count>1) printf("The average of %d numbers is %.2f",count,ans/(1.0*count));
else if(count==1) printf("The average of 1 number is %.2f",ans);
return 0;
}