#include<stdio.h>
int main()
{
int n,i,min,max;
double s;
while(scanf("%d",&n))
{
s=0;
int a[n];
scanf("%d",&a[n]);
min=max=a[0];
for(i=0;i<n;i++)
{
s+=a[i];
if(min>a[i]) min=a[i];
if(max<a[i]) max=a[i];
}
s=(s-min-max)/(n-2);
printf("%.2lf %.2lf %.2lf\n",min,max,s);
}
}
本人想问一下为什么这个输出结果的最大最小值一直是0.00,而且平均数一直乱码。
解决方案
3
scanf(“%d”,&a[n]);不带这么玩的,要用循环,逐个输出
C99 都用上了啊,
C99标准,各编译器支持一向不是很好
不过gcc 支持
C99 都用上了啊,
C99标准,各编译器支持一向不是很好
不过gcc 支持
5
修改了一下,仅供参考
int n,i;
double s ,min,max;
scanf("%d",&n);
while(n > 0)
{
s=0.0;
int *a = (int*)malloc(sizeof(int) *n);
min = max = 0.0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if (0 == i)
{
min = a[i];
max = a[i];
}
s+=a[i];
if(min>a[i]) min=a[i];
if(max<a[i]) max=a[i];
}
free(a);
s=(s-min-max)/(n-2);
printf("%.2f %.2f %.2f\n",min,max,s);
scanf("%d",&n);
}
2
a 的大小是n
那么scanf(“%d”,&a[n]); 已经越界了
那么scanf(“%d”,&a[n]); 已经越界了
1
当然不可以啊,必须是最初开始赋值为a[0],也就是说是有条件的,否则min和max就一直是a[0]
1
你的代码里面错误太多了,没有报错么?数组的长度是不能用变量来确定的,而且在while右边的括号中scanf不应该在里面吧,C++中可以实现。
2
“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将例如<10甚至<5的数代入程序片断,搬手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
<、<=、==、>、>=中的哪个?
避免“多一少一”问题的方法之一是将例如<10甚至<5的数代入程序片断,搬手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
<、<=、==、>、>=中的哪个?
5
#include<stdio.h>
#define Max 1000//定义一个符号常量
int main()
{
int n,i,j;
double t,min,max,s;
double a[Max];
while(~scanf("%d",&n))
{
s=0;
for(i=0;i<n;i++)
scanf("%lf",&a[i]);
min=a[0];
max=a[0];
for(i=0;i<n-1;i++)
{//冒泡排序,将数组从小到大排序
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=1;i<n-1;i++)
{//除去最大与最小值之后的加和
s+=a[i];
}
max=a[n-1];
min=a[0];
printf("%.2lf %.2lf %.2lf\n",min,max,s/(n-2));
}
}
代码仅供参考
2
#include<stdio.h>
#define max 50
void main()
{
int a,b;
scanf(“%d”,&a);
double c[max],Max,min,sum=0,s;
for(b=0;b<a;b++)
{
scanf(“%lf”,&c[b]);
}
Max=c[0];
min=c[0];
for(b=1;b<a;b++)
{
if(c[b]>Max)
{
Max=c[b];
}
if(c[b]<min)
{
min=c[b];
}
}
for(b=0;b<a;b++)
{
sum=sum+c[b];
}
s=(sum-min-Max)/(a-2);
printf(“%.2lf\n”,s);
}
#define max 50
void main()
{
int a,b;
scanf(“%d”,&a);
double c[max],Max,min,sum=0,s;
for(b=0;b<a;b++)
{
scanf(“%lf”,&c[b]);
}
Max=c[0];
min=c[0];
for(b=1;b<a;b++)
{
if(c[b]>Max)
{
Max=c[b];
}
if(c[b]<min)
{
min=c[b];
}
}
for(b=0;b<a;b++)
{
sum=sum+c[b];
}
s=(sum-min-Max)/(a-2);
printf(“%.2lf\n”,s);
}