输入m个数,求其最大数、最小数和平均值。

来源:百度知道 编辑:UC知道 时间:2024/07/04 19:18:26
#include<stdio.h>
void main()
{
long int a,i,max,min,ave;
printf("输入整数\n输入s停止\n");

scanf("%ld",&max);
max=min=ave;
for(i=1;;i++)
{
scanf("%ld",&a);
if(a=='s')
break;

else
{
ave=ave+a;
if(max<a)
max=a;
else if(min>a)
min=a;
}

}
ave=ave/i;
printf("最大数是%ld\n最小数是%ld\n平均数是%ld\n",max,min,ave);
}

break 跳出后 printf不执行

scanf("%ld",&a);
if(a=='s')
break;

a是long型,如果你的输入是以字符's'结束的,那么导导致scanf出错,IO出错后,后面的printf也将不执行.如果你输的全是数字,而正好等于's'的ASCII码时,break后printf是可以执行的.

建议你设一个特殊值(如-1)来判断是否输入结束,或者先以字符串形式获取输入,先判断第一个数字是否为's',不是's'则将其转换为int型进行计算.

#include<stdio.h>
void main()
{
long int a,i,max,min,ave;
printf("输入整数\n输入s停止\n");

scanf("%ld",&max);
max=min=ave;
for(i=1;;i++)
{
scanf("%ld",&a);
if((char)a=='s')
break;

else
{
ave=ave+a;
if(max<a)
max=a;
if(min>a)
min=a;
}

}
ave=ave/i;
printf("最大数是%ld\n最小数是%ld\n平均数是%ld\n",max,min,ave);
}

程序设计时就有问题,你应该考虑用数组来做