注册 登录
编程论坛 VC++/MFC

有哪位大神可以帮我看一下,我帮写的关于计算输入的几个数中去掉最大值和最小值后计算平均值的程序,编译是没有错误的但是运行起来不行。

宇智波鼬123 发布于 2014-06-22 20:46, 812 次点击
#include<iostream.h>

void main()
{
    double m[10];
    int n,i,temp,a;
   double sum=0,average;
    cin>>"n=">>n;
    for(i=0;i<n;i++)
    {
        cin>>m[i];
   
    }

    if(m[i]<m[i+1])
        {
            temp=m[i];
            m[i]=m[i+1];
            m[i+1]=temp;
        }

if(m[i]!=m[0] && m[i]!=m[n-1])
for(a=1;a<=n-2;a++)
{
    sum+=m[a];
}

average=sum/(n-2);
cout<<average<<endl;

}
5 回复
#2
funyh2502014-06-22 22:56
程序代码:
#include<iostream>

using namespace std;        ***************
void main()
{
    double m[10],temp;
    int n,i,a;
   double sum=0,average;
   cout<<"n="<<endl;      *********
    cin>>n;              **********
    for(i=0;i<n;i++)
    {//***
        cin>>m[i];
   
    if(m[i]<m[i+1])
        {
            temp=m[i];
            m[i]=m[i+1];
            m[i+1]=temp;
        }
    }//****

//if(m[i]!=m[0] && m[i]!=m[n-1])       *****************
for(a=1;a<=n-2;a++)
{
    sum+=m[a];
}

average=sum/(n-2);
cout<<"average="<<average<<endl;

}
#3
宇智波鼬1232014-06-23 10:49
额,知道我错哪里了,输入  cin>>"n=">>n这个代码错了,其他的没有错,回复者,有没有注意我是要求去掉最大值和最小值之后取平均值的,所以是不是不应该把if(m[i]!=m[0] && m[i]!=m[n-1])这个给标注呢?不够还是感谢回复者。
#4
yangfrancis2014-06-24 13:52
这个程序好像只去掉了最小的一个值吧?也就是m[n-1],第一个元素m[0]不一定是最大值哦!
#5
yangfrancis2014-06-24 14:08
//****找最小值****
    for(i=0;i<n-1;i++)
        {
            if(m[i]<m[i+1])
            {
            temp=m[i];
            m[i]=m[i+1];
            m[i+1]=temp;
            }
        }
//****找最大值****
for(i=n-1;i>0;i--)
    {
         if(m[i]>m[i-1])
         {
           temp=m[i];m[i]=m[i-1];m[i-1]=temp;
         }
     }
//如此,m[0]为最大,m[n-1]最小。再遍历数组,把等于这二者的都忽略掉。
#6
宇智波鼬1232014-06-24 21:04
额我想弱弱的问一句我的这段程序
if(m[i]<m[i+1])
        {
            temp=m[i];
            m[i]=m[i+1];
            m[i+1]=temp;
        }
这不是排序吗?别管是降序还是升序,最大值和最小值都是第一个和最后一个啊
1