新手,想问问这个程序哪里出错了?

图片说明

 #include<stdio.h>
int main()
{
    int s,i,num=1,sum=0,max,min;
    float avg;
    printf("Input data:");
    scanf("%d",&s);
    if(s==-1)
    {
    printf("Input Error!");
    return 0;
    }
    else
    {
    max=s;
    min=s;
    sum=s;
    }
    while(scanf("%d",&s),s!=-1) 
     {
      if (max<s) max=s;
      if (min>s) min=s;
      sum=sum+s;
      num++;
      }

     avg=sum/num;
     printf("num=%d,max=%d,min=%d,avg=%.2f",num,max,min,avg);
     return 0;

}

avg=sum/(float)num;

while(s!=-1)
{
scanf("%d",&s),
if (max if (min>s) min=s;
sum=sum+s;
num++;
}

        写成这个样子

你得到的avg不是一个小数,因为C语言中 的/是整除的

1,首先确定 ’循环次数不定‘ ,既然不定 那当遇到输入什么样的值结束程序 或者是不是可以先输入一个数字作为循环次数;
还是让程序一直跑着, 只要有组数据输入就计算。。。。
2,你写的while 语句其实只计算 一组 输入数据, 因为一组数据的结束是以 -1 结束的。当遇到 一组数据后 的-1时,就不能再输入数据;
这么的话, 你的程序需要两个循环, 一个外循环不限定 数据组的输入量, 以及一个内循环:大概是这样的:

while(true){// 假设 循环次数不限 是只要有数据输入, 就跑程序。

//以下是你写的代码。没有全部粘贴下来。
int s,i,num=1,sum=0,max,min;
.
.
.
.
.
 avg=sum/num;
 printf("num=%d,max=%d,min=%d,avg=%.2f",num,max,min,avg);
 //return 0;

}
3,avg 要为浮点数, 记得可以这样: avg = sum*1.0/num ; 你试试。
4,return 0; return 语句用于结束一个方法, 那就不用在外循环里了。 另外,当执行 return 0 ; 语句时,
窗口会不会随即关闭(这个我忘了, 就当我只是在提醒一下)。

如有帮助, 望采纳。