十六筒 发表于 2021-3-20 11:30:40

求助!!题目是输入若干整数,以-1结束,去掉最大值和最小值,求平均值

#include <stdio.h>
int main()
{
        int i,n=0,avg=0;
        int min=0,max=0,sum=0;
        printf("输入若干个数,以-1结尾");
        scanf("%d",&i);
        while(i!=-1)
        {
                max=i;
                min=i;
                if(i>max)
                        max=i;
                        if(i<min)
                                min=i;
                n++;
                sum+=i;
                scanf("%d",&i);
        }
        avg=(sum-min-max)/n;
        printf("%d",avg);
        return 0;
}
想问一下大佬们,这样写对不对啊!!!{:10_254:}

jackz007 发表于 2021-3-20 12:15:01

本帖最后由 jackz007 于 2021-3-20 12:26 编辑

int main()
{
. . . . . .
      scanf("%d",&i);
      while(i!=-1)
      {
                max=i;    // 不可以放入循环
                min=i;    // 不可以放入循环
      应该这么改
int main()
{
. . . . . .
      scanf("%d",&i);
      max=i;    // 挪到此处
      min=i;    // 挪到此处
      while(i!=-1)
      {
      下面是我修改的版本
#include <stdio.h>

int main(void)
{
      int d , i , avg , min , max , sum                ;
      printf("输入若干个数,以 -1 结尾 : ")            ;
      for(avg = sum = i = 0 ;; i ++) {
                scanf("%d" , & d)                        ;
                if(d == -1) {
                        break                            ;
                } else {
                        if(! i) {
                              min = max = d            ;
                        } else {
                              if(d > max) max = d      ;
                              else if(d < min) min = d ;
                        }
                        sum += d                         ;
                }
      }
      if(i > 1) avg = (sum - max - min) / (i - 2)      ;
      printf("%d\n" , avg)                           ;
}
      编译、运行实况
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
输入若干个数,以 -1 结尾 : 1 2 3 4 5 6 7 8 9 10 -1
5

D:\00.Excise\C>

十六筒 发表于 2021-3-20 15:48:21

jackz007 发表于 2021-3-20 12:15
应该这么改

      下面是我修改的版本


谢谢大佬 我那个程序改了之后是不是就对了哟{:10_254:}

jackz007 发表于 2021-3-20 15:55:08

十六筒 发表于 2021-3-20 15:48
谢谢大佬 我那个程序改了之后是不是就对了哟

      还不能,这一句
       avg=(sum-min-max)/n;
      得改成这样
       avg=(sum-min-max) / (n-2) ;

十六筒 发表于 2021-3-20 15:58:28

jackz007 发表于 2021-3-20 15:55
还不能,这一句

      得改成这样

哦哦哦 好的 谢谢大佬{:10_297:}

键盘老实人 发表于 2021-3-22 19:13:32

c语言学废了

十六筒 发表于 2021-3-23 11:30:03

键盘老实人 发表于 2021-3-22 19:13
c语言学废了

哈哈哈 废了废了{:10_256:}
页: [1]
查看完整版本: 求助!!题目是输入若干整数,以-1结束,去掉最大值和最小值,求平均值