wuxiangtianbei @ 2022-12-09 10:18:46
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,m,x,z;
float a[100],s,p,c,t;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%f\n",&a[i]);
if(a[m]<a[i])m=i;
if(a[x]>a[i])x=i;
}
for(j=i;j<=n;j++)
{
if(j!=x&&j!=m)s+=a[j];
}
p=s/(n-2);
s=0;
for(z=1;z<=n;z++)
{
if(z!=x&&z!=m)
c=fabs(a[z]-p);
if(t<c)t=c;
}
printf("%.2f %.2f",p,t);
}
by VividCycle @ 2022-12-09 10:52:36
@tangrunxi 讨论中心点是
scanf("%f\n",&a[i]);没有这种写法。\n只能是在输出的时候有。
这句话是完全错误的。事实上
那么它们会是一个随机值
也是错的。
by tangrunxi @ 2022-12-09 10:53:36
@lovelyseele 随机值的表述我改,有限集合。不过新人可能还不了解这个,这个先不说了。
如果您的意思是,这样写并不会出现编译错误的话。那么我们的讨论可以就此结束。我们并不在同一个维度上。楼主这样写会导致自己在本地编译会有很大的麻烦,这是一个不好的习惯,我觉得并没有必要去说这样写不会影响编译这样的话。毕竟也没有哪道题就一定要加个\n吧。
by VividCycle @ 2022-12-09 11:00:59
@tangrunxi
随机值的表述我改,有限集合。
建议了解编译器相关知识。未赋值的局部变量并不等于任何一个值,比如视情况它可以同时 > 和 < 同一个数。不懂可以不回答,但不要误导他人。
如果您的意思是,这样写并不会出现编译错误的话。那么我们的讨论可以就此结束。我们并不在同一个维度上。楼主这样写会导致自己在本地编译会有很大的麻烦,这是一个不好的习惯,我觉得并没有必要去说这样写不会影响编译这样的话。毕竟也没有哪道题就一定要加个\n吧。
?scanf 中加 \n 并没有任何问题。它只是在做一件不同的事情。而您说的是“换行符不能出现在除输出以外的任何地方”。搞不懂。
by 凌木缘tzwerw @ 2022-12-09 11:05:43
@tangrunxi 建议重新学习一下,丢人现眼总是不好的
by tangrunxi @ 2022-12-09 11:08:42
@lovelyseele
首先。我说的只能在输出中有,我的本意是:
事件
您的认为方式可能是:
事件
至于有限集合的声明,,不同的定义型的值并不相同,看做是有限集合没啥问题吧。
by tangrunxi @ 2022-12-09 11:09:49
@凌木缘tzwerw 不是你搁这就放这么一句你来干嘛的。你要反驳可以随便说,不违反规则就行,我都可以接受,你这一句话搁这一摆是逗我玩呢?
by l_ucas_NB @ 2022-12-09 11:25:20
by __MEMZ__ @ 2022-12-09 11:25:52
试试这个
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,m=0,x=0,z;
float a[100],s,p,c,t;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("\n%f",&a[i]);
if(a[m]<a[i])m=i;
if(a[x]>a[i])x=i;
}
for(j=i;j<=n;j++)
{
if(j!=x&&j!=m)s+=a[j];
}
p=s/(n-2);
s=0;
for(z=1;z<=n;z++)
{
if(z!=x&&z!=m)
c=fabs(a[z]-p);
if(t<c)t=c;
}
printf("%.2f %.2f",p,t);
}
by __MEMZ__ @ 2022-12-09 11:26:23
虽然答案是错的,但是输入没有问题
by tangrunxi @ 2022-12-09 11:26:39
@l_ucas_NB 不至于不至于,除了这帖子有个xxs以外其他的讨论都还好吧(