#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
int i,f[a],n=0,max=0;
for(i=0;i<a;i++)
{
scanf("%d",&f[i]);
}
for(i=0;i<a;i++)
{
if(f[i+1]-f[i]==1)
{
n++;
}
else
{
n=0;
}
if(n>max)
max=n;
}
printf("%d",max+1);
return 0;
}
你可以看下我这个程序,输出n的值,这样就可以看得到n值的变化
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
int i,f[a],n=0,max=0;
for(i=0;i<a;i++)
{
scanf("%d",&f[i]);
}
for(i=0;i<a;i++)
{
if(f[i+1]-f[i]==1)
{
n++;
}
else
{
n=0;
}
printf("%d",n);//输出n 的值
if(n>max)
max=n;
}
printf("%d",max+1);
return 0;
}
你没想错,不连号以后n为0了,但是每次循环后移都要比较一下n和max,代码的逻辑也没有问题。你描述的比较模糊,不明白你哪里不清楚
n 是在for循环外面定义的,不是在佛瑞里面定义的,当f[i+1]-f[i]==1时,n的值会连续增加,因此最后只为5