求助

P5726 【深基4.习9】打分

Eval1024 @ 2022-04-07 21:32:56

#include<stdio.h>
int main()
{
    int n;
    int a[1000];
    scanf("%d",&n);
    for(int i=0;i<n;i--)
       scanf("%d",&a[i]);
    int max=a[0],min=a[0];
    for(int i=0;i<n;i++)
        {
            max=max>=a[i]?max:a[i];
            min=min<=a[i]?min:a[i];

        } //找出最值

    for(int j=0;j<n;j++)
        if(a[j]==max)
            {
                a[j]=0;
                break;
            }  //将第一个值为最大值的标为0
    for(int j=0;j<n;j++)
        if(a[j]==min)
            {
                a[j]=0;
                break;
        }  //将第一个值为最小值的标为0

    double x=0;
    for(int i=0;i<n;i++)
        x+=a[i];
    printf("%.2f",x/(n-2));
    return 0;
}

为啥会re啊


by ingx @ 2022-04-07 21:36:04

第一个for循环i++写成i--了(其他没看


by KAqwq @ 2022-04-07 21:37:29

Runtime Error 你的程序跑到一半断了


by Eval1024 @ 2022-04-07 21:39:28

@ingx 没错就是这个问题,我真是眼瞎了。感谢大佬


by Nagligivaget @ 2022-04-24 22:12:51

@Eval1024 这代码...好繁琐啊

include<stdio.h>
int main() { 
    int n; 
     int a[1000]; 
     int ma=-1,mi=2147483647;
    //不要习惯写max或min这类已经定义过的名字 
     scanf("%d",&n);
     for(int i=0;i<n;i--){ 
     scanf("%d",&a[i]); 
     /*max=max>=a[i]?max:a[i];*/ma=max(ma,a[i]); 
    /*min=min<=a[i]?min:a[i];*/mi=min(mi,a[i]); 
    //没必要用三目数对,直接用函数就行 
  } 
  printf("%.2f",(x-ma-mi)/(n-2));//在这里减就行啦
  return 0; 
  }

by Nagligivaget @ 2022-04-24 22:14:14

@Eval1024 还有就是那个i--改成i++


by Nagligivaget @ 2022-04-24 22:18:26

@Eval1024 我改的把x的定义删啦,直接运行时会报错的,所以不要直接复制粘贴 把x+=a[i];放到循环里就行


by Nagligivaget @ 2022-04-24 22:29:08

@Eval1024 太多循环时间复杂度会比这个高很多,这是改进后的;

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n=0,a[1000];//定义
    int ma=-1,mi=2147483647;//定义
    double x=0;//定义
    cin>>n;//输入
    for(int i=0;i<n;i++){ 
        cin>>a[i];//输入
        ma=max(ma,a[i]); //找出最大
        mi=min(mi,a[i]); //找出最小
        x+=a[i];//统计总分
    }
    cout<<fixed<<setprecision(2)<<(x-ma-mi)/(n-2);//保留两位输出
    return 0; 
}

代码过啦,放心食用


by Nagligivaget @ 2022-04-24 22:32:28

@Eval1024 这是我的方法

#include<bits/stdc++.h>
#define MAX 1000//养成好习惯
using namespace std;
int main(){
    int  n=0;
    double a[MAX],z=0;
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>a[i],z+=a[i];
    sort(a,a+n);//排序
    cout<<fixed<<setprecision(2)<<(z-a[0]-a[n-1])/(n-2);//减去最大和最小后保留两位
}

|