#include<stdio.h>
int main()
{
int a[50],t,i,first,second,j,sum=0,last=0,max,min;
scanf("%d",&t);
if(t<2)
printf("0");
else
{
for(i=0;i<t;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<t;i++)
{
for(j=i+1;j<t;j++)
{
if(a[j]<a[i])
min=a[j];
a[j]=a[i];
a[i]=min;
}
}//排序
for(i=0;i<t-1;i++)
{
first=a[i];
for(j=i+1;j<i+2;j++)
{
second=a[j];
if(second>first)
{
sum=second-first;
}
else
{
sum=first-second;
}
}
if(last>sum)
{
max=last;
}
else
{
max=sum;
}
last=sum;
}
printf("%d\n",max);
}
return 0;
}
不能只判断和上一个结果和上一个哪个大,需要和max比较。
改成这样就对了
#include<stdio.h>
int main()
{
int a[50],t,i,first,second,j,sum=0,last=0,max,min;
scanf("%d",&t);
if(t<2)
printf("0");
else
{
for(i=0;i<t;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<t;i++)
{
for(j=i+1;j<t;j++)
{
if(a[j]<a[i])
min=a[j];
a[j]=a[i];
a[i]=min;
}
}//排序
for(i=0;i<t-1;i++)
{
first=a[i];
for(j=i+1;j<i+2;j++)
{
second=a[j];
if(second>first)
{
sum=second-first;
}
else
{
sum=first-second;
}
}
/*if(last>sum)
{
max=last;
}
else
{
max=sum;
}
last=sum;*/
if (max > sum) {
max = sum;
}
}
printf("%d\n",max);
}
return 0;
}
建议max、min、last、first、second换变量名,都是关键字
sorry没看到
可以赋一个极小值,比如limits.h里的INT_MIN,或者-2147364847,或者0x800000000
okk,感谢