sprintf() 和sscanf()要用char*作为参数 strlen(char[] ) 可以获得字符串的长度
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[50],b[50];
double temp;
double sum;
int cnt=0;
int n;
cin>>n;
for(int i=0;i<n;i++){
scanf("%s",a);
sscanf(a,"%lf",&temp);//把a传给temp
sprintf(b,"%.2lf",temp);//把temp传给b
int flag=0;
for(int j=0;j<strlen(a);j++){
if(a[j]!=b[j]){
flag=1;
break;
}
}
if(flag||temp<-1000||temp>1000){
printf("ERROR: %s is not a legal number\n",a);
}
else{
sum+=temp;
cnt++;
}
}
if(cnt==1) {printf("The average of 1 number is %.2lf",sum);
return 0;
}
if(cnt==0) printf("The average of 0 numbers is Undefined");
else printf("The average of %d numbers is %.2lf",cnt,sum/cnt);
return 0;
}