2的测试点过不了是这个问题 The average of 1 number is Y
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
double sum=0;
int judge(char arr[])
{
int len=strlen(arr);
if(len>=9)return 0;
int p=len,z=0;
for(int i=len-1;i>=0;i--)
if(arr[i]=='.')
{
z++;p=i;
if(z>=2)
return 0;
if(p<len-3)return 0;
}
double num1=0,num2=0;
if(p!=len)
{
for(int i=len-1;i>=p+1;i--)
{
num1+=arr[i]-'0';
num1*=0.1;
}
}
if(arr[0]!='-')
{
for(int i=0;i<p;i++)
{
num2*=10;
num2+=arr[i]-'0';
}
num2+=num1;
}
else
{
for(int i=1;i<p;i++)
{num2*=10;
num2+=arr[i]-'0';
}
num2+=num1;
num2*=-1;
}
if(num2<-1000||num2>1000)
return 0;
sum+=num2;
return 1;
}
int main()
{
int num,count=0;
cin>>num;
while(num--)
{
char arr[100];
scanf("%s",arr);
if(judge(arr))
count++;
else
printf("ERROR: %s is not a legal number\n",arr);
}
if(count==1)
{
printf("The average of 1 number is %.2lf",sum);
}
else if(count!=0)
printf("The average of %d numbers is %.2lf",count,sum*1.0/count);
else
printf("The average of 0 numbers is Undefined");
return 0;
}