#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 ; 语句时,
窗口会不会随即关闭(这个我忘了, 就当我只是在提醒一下)。
如有帮助, 望采纳。