#include <bits/stdc++.h> using namespace std; int t,n,i,b;float c,sum;float k=0;float x; int main() { cin>>t; while(t--) { cin>>n; int a[n]; for(i=0; i<n; i++) { cin>>a[i]; } int maxa; maxa=a[0]; for(i=0; i<n; i++) { if(maxa<a[i])maxa=a[i]; } int mina; mina=a[0]; for(i=0; i<n; i++) { if(mina>a[i])mina=a[i]; } b=maxa-mina;cout <<b<<" "; for(i=0;i<n;i++){ sum+=a[i]; }c=sum/n; for(i=0;i<n;i++){ k=k+(c-a[i])*(c-a[i]); }x=k/n; cout<<fixed<<setprecision(3)<<x<<endl; } return 0; }
我看题解平均值极差什么的都是double,我改成double结果还是不对,是哪出问题了?
题解:#include <bits/stdc++.h>
using namespace std;
int main(){
int T,n,*a,i,ji,fang;
double sum,avg,sum1,avg1;
cin>>T;
while(T--)
{
cin>>n;
a=new int[n];
sum=0;
for(i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}
sort(a,a+n);
ji=a[n-1]-a[0];
avg=sum/n;
sum1=0;
for(i=0;i<n;i++)
{
sum1+=(a[i]-avg)*(a[i]-avg);
}
avg1=sum1/n;
printf("%d %.3f\n",ji,avg1);
}
}
using namespace std;
int main(){
int T,n,*a,i,ji,fang;
double sum,avg,sum1,avg1;
cin>>T;
while(T--)
{
cin>>n;
a=new int[n];
sum=0;
for(i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}
sort(a,a+n);
ji=a[n-1]-a[0];
avg=sum/n;
sum1=0;
for(i=0;i<n;i++)
{
sum1+=(a[i]-avg)*(a[i]-avg);
}
avg1=sum1/n;
printf("%d %.3f\n",ji,avg1);
}
}
全部评论
(2) 回帖