本题需要掌握sscanf和sprintf的用法;
此外注意ansnum为0,1时的特殊输出
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=50;
char a[maxn],b[maxn];
int main()
{
int n,ansnum;
double num,sum=0;
cin>>n;
ansnum=n;
for(int i=0;i<n;i++)
{
bool flag=true;
scanf("%s",a);
sscanf(a,"%lf",&num);
sprintf(b,"%.2f",num);
int len=strlen(a);
for(int j=0;j<len;j++)
{
if(b[j]!=a[j])
{
flag=false;
break;
}
}
if(flag==false||num<-1000||num>1000)
{
printf("ERROR: %s is not a legal number\n",a);
ansnum--;
}
else
{
sum+=num;
}
}
if(ansnum==0)
{
printf("The average of 0 numbers is Undefined");
}
else if(ansnum==1)
{
printf("The average of 1 number is %.2f",sum);
}
else
{
printf("The average of %d numbers is %.2f",ansnum,sum/ansnum);
}
}