# PAT乙1054求平均值 題目描述 關於輸出格式 看清楚 老實複製每一個為上

``````1054 求平均值 (20)（20 分）

7
5 -3.2 aaa 9999 2.3.4 7.123 2.35

ERROR: aaa is not a legal number
ERROR: 9999 is not a legal number
ERROR: 2.3.4 is not a legal number
ERROR: 7.123 is not a legal number
The average of 3 numbers is 1.38

2
aaa -9999

ERROR: aaa is not a legal number
ERROR: -9999 is not a legal number
The average of 0 numbers is Undefined``````
• 注意K=1時 輸出是number不是numbers ! 每次都想當然覺得看到的是那樣；
• ‘-’ 只可能出現在第一位
• ‘.’只能出現一次
• 數a屬於[-1000,1000]
``````#include<iostream>
#include<cstdio>
using namespace std;
int n,K=0;
string t;
double a,c,res=0;
bool point,wrong;
int Minus,num;
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i  )
{
cin>>t;
//judge
int l=t.length();
a=0;c=1;
point=0;Minus=1;wrong=0;num=0;
for(int j=0;j<l;j  )
{
if(t[j]>='0'&&t[j]<='9')
{
if(!point)
a=a*10 (t[j]-'0');
else
{
if(num==2)
{
wrong =1;break;
}
num  ;
c*=0.1;
a=a c*(t[j]-'0');
}
}
else if(t[j]=='-'&&j==0)
{
Minus=-1;
}
else if(t[j]==' '&&j==0)
{
Minus=1;
}
else if(t[j]=='.'&&!point)
{
point=1;
}
else
{
wrong=1;
break;
}
}
if(a<-1000||a>1000)wrong=1;
if(!wrong)
{
res =(Minus*a);
K  ;
}
else
{
cout<<"ERROR: "<<t<<" is not a legal number"<<endl;
}
}
if(K==1)printf("The average of 1 number is %.2f\n",res);///////
else if(K)printf("The average of %d numbers is %.2f\n",K,res/K);
else printf("The average of 0 numbers is Undefined\n");
return 0;
}``````