_MOOC_5_1
求平均值&找最平均的原始数据算法(20分)
题目内容:
输入十个不相等的正整数,求其平均值,并求最接近平均值的那个整数,如果有两个,则两个都输出
输入格式:10个正整数
输出格式:最接近平均值的所有正整数,数与数之间用回车隔开
输入样例:1 2 3 4 5 6 7 8 9 10
输出样例:
5
6
代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int data[10],i,j,t,flag;
double average=0,sum=0;
for(i=0;i<10;i++)
{
cin>>data[i];
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(data[j]>data[j+1])
{
t=data[j];
data[j]=data[j+1];
data[j+1]=t;
}
}
}//排序
for(i=0;i<10;i++)
{
sum+=data[i];
}
average=sum/10;
for(i=9;i>=0;i--)//找到average在哪两个数之间
{
if(average-data[i]==0)//相等直接抓取
{
flag=i;break;
}
else if(average-data[i]>0)//没有相等就找平均数前面的数
{
flag=i;break;
}
}
if(fabs(average-data[flag])==fabs(average-data[flag+1]))
{
cout<<data[flag]<<"\n"<<data[flag+1]<<endl;
}
else if(fabs(average-data[flag])<fabs(average-data[flag+1]))
{
cout<<data[flag]<<endl;
}
else if(fabs(average-data[flag])>fabs(average-data[flag+1]))
{
cout<<data[flag+1]<<endl;
}
//比较输出最近的数
return 0;
}