C语言问题题目如图

我感觉我逻辑没问题啊下面是具体代码:#include<stdio.h>voidNONO();doublefun(doublea[],intn){intn1,n2,i;do... 我感觉我逻辑没问题啊下面是具体代码:#include <stdio.h>void NONO();double fun(double a[ ] , int n){ int n1,n2,i;double t=a[0],avr=0.0; for(i=1;i<n;i++) if(t<a[i]){ t=a[i];n1=i;} for(i=1,t=a[0];i<n;i++) if(t>a[i]){ t=a[i];n2=i;} for(i=0;i<n;i++) {if(i!=n1&&i!=n2) avr+=a[i]/(n-2);} return avr;}main(){ double b[10], r; int i; printf("输入10个分数放入b数组中 : "); for (i=0; i<10; i++) scanf("%lf",&b[i]); printf("输入的10个分数是 : "); for (i=0; i<10; i++) printf("%4.1lf ",b[i]); printf("\n"); r = fun(b, 10); printf("去掉最高分和最低分后的平均分 : %f\n", r ); NONO();}void NONO(){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, j ; double b[10], r ; fp = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { for(j = 0 ; j < 10 ; j++) { fscanf(fp, "%lf ", &b[j]) ; } r = fun(b, 10) ; fprintf(wf, "%f\n", r) ; } fclose(fp) ; fclose(wf) ;} 展开
 我来答
听不清啊
高粉答主

2018-03-31 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.8亿
展开全部

相关函数作了修改:

double fun(double a[ ] , int n)
{ int n1,n2,i;
double t=a[0],avr=0.0;
 for(i=n1=0;i<n;i++)
 if(t<a[i])
{ t=a[i];n1=i;}
 for(i=n2=0,t=a[0];i<n;i++)
 if(t>a[i]){ t=a[i];n2=i;}
 for(i=0;i<n;i++)
 {if(i!=n1&&i!=n2) avr+=a[i]/(n-2);
}
 return avr;
}
追问
大神为什么n2n1需要给初值?
追答
如果a[0]本身是最大最小值时,岂不是n1n2就未经赋值了吗?
fallx
2018-03-31 · TA获得超过5484个赞
知道大有可为答主
回答量:2321
采纳率:73%
帮助的人:692万
展开全部
double fun(double a[ ] , int n)
{  
  int i;
  double min=a[0],max=a[0],t=0.0,avr=0.0;  //t是总分,min是最低分,max是最高分
  for(i=1;i<n;i++)   //一个循环就可以了
   {
    t+=a[i];
    if(max<a[i])
    {   
      max=a[i];
      } 
    if(min>a[i])
    {   
        min=a[i];
       } 
    }
    t=t-max-min;//总分减去最高最低
    avr=t/(n-2);
  return avr;
  }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式