C语言新手,为什么不运行啊

B2095 白细胞计数

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;

您的 xm 都没有给初始值,那么它们会是一个随机值,如果超过 100 了,就会发生数组越界,所以不运行了。


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对于在本地 正确性 的影响。


| 下一页