C++编程:定义一个函数min,求n个数中的平均值,最小数和其下标, 并在主函数中打印平均值,最小数和下标.

题目:定义一个函数min,求n个数中的平均值、最小数和其下标,
并在主函数中打印平均值、最小数和下标。格式:
int min(int *s, int n,double &aver)
注意:如有多个最小值,以第一个为准。
输出结果见图:样张.JPG
-------------------------------------------------------*/
#include <iostream>
using namespace std;
/**********Program**********/

/********** End **********/

void main(void)
{
int pos;
double aver;
int s[10]={34,12,83,56,29,93,56,12,88,72};
int s1[3]={12,83,56};
int n=10;
int i;
pos=min(s,n,aver);
cout<<n<<"个数如下:"<<endl;
for(i=0;i<n;i++ )
cout<<s[i]<<" ";
cout<<"\n平均值="<<aver<<endl;
cout<<"最小值="<<s[pos]<<endl;
cout<<"位置="<<pos+1<<endl;
n=3;
pos=min(s1,n,aver);
cout<<n<<"个数如下:"<<endl;
for(i=0;i<n;i++ )
cout<<s1[i]<<" ";
cout<<"\n平均值="<<aver<<endl;
cout<<"最小值="<<s1[pos]<<endl;
cout<<"位置="<<pos+1<<endl;
}

随便写了下,有些错误判断没写,没测试,自己看:
int min(int nArr[], int nCount, double &nAvg)
{
int nMin = nArr[0];
int nSum = 0;
int nPos = 0;
for (int i = 0; i < nCount; i++)
{
nSum += nArr[i];
if(nArr[i] < nMin)
{
nMin = nArr[i];
nPos = i + 1;
}
}

nAvg = nSum/nCount;

return nPos;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-11
int min(int *s, int n,double &aver)

{
int min=0x7fffffff;int sum;int pos=-1;
for(int i=0;i<n;++i)
{
sum+=s[i];
if(s[i]<min){s[i]=min;pos=i;}

}
aver=(!n)?(double)sum/n:0x7fffffff;

return pos;

}
相似回答