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 tangrunxi @ 2022-12-09 10:25:51
@wuxiangtianbei
scanf("%f\n",&a[i]);
没有这种写法。\n
只能是在输出的时候有。改为scanf("%f",&a[i]);
即可。然后,
if(a[m]<a[i])m=i;
if(a[x]>a[i])x=i;
您的
by VividCycle @ 2022-12-09 10:34:21
@tangrunxi
scanf("%f\n",&a[i]);
没有这种写法。\n
只能是在输出的时候有。
?谁说的。\n 只是一个转义字符,跟输入输出没有关系。
by tangrunxi @ 2022-12-09 10:37:01
@lovelyseele 给你俩代码,分别在本地试试样例。
#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("%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);
}
#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("%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 tangrunxi @ 2022-12-09 10:37:50
当然答案肯定不对,只是看看能否正常输出完成。
by VividCycle @ 2022-12-09 10:38:21
@tangrunxi 这跟我所说的问题有什么关联吗
by tangrunxi @ 2022-12-09 10:39:34
@lovelyseele 你先试试。。。第一个代码你输入完样例会发现他还会让你再输入一行。
by VividCycle @ 2022-12-09 10:40:31
@tangrunxi 我当然知道啊。。。但是你还是没有解释为什么你认为
\n
只能是在输出的时候有。
by tangrunxi @ 2022-12-09 10:41:53
@lovelyseele 我不是解释过了吗。你写在输入当中输入就有问题了,本来输入6行,加了\n之后要输入7行。输入都不对了,答案怎么可能对。
by VividCycle @ 2022-12-09 10:44:35
@tangrunxi 绷住了。
那你那句话是不是表明,string s="\n"
也是不存在的写法。
斜杠 n 是个字符串转义符,跟输入输出有个屁的关系。
by tangrunxi @ 2022-12-09 10:48:45
@lovelyseele 我们的讨论中心点是什么。是string s="\n";
吗?我们是在讨论 scanf 中写\n对于在本地 正确性 的影响。