C语言距离的解决方法

img

img


这个是出了什么问题呢?#include<stdio.h>
#include<math.h>
int main()
{
int *p,ret,i=0,a[50],n,max,min,x,r1,r2;
scanf("%d",&n);//按要求扫描。
p=a;//将初始位置给予指针。
for(i=0;i<n;i++){
scanf("%d",&p[i]);
}
scanf("%d",&x);
max=p[0];//起先默认最大值为p[0].
min=p[0];//起先默认最小值为p[0].
for(i=0;i<n;i++){
if(x>=p[i]){//从这些数组找比x小的一堆数中找其中最大的。
if(max<p[i]){
max=p[i];
}
}
if(x<p[i]){//从这些数组找比x大的一堆数中找其中最小的。
if(min>p[i]){
min=p[i];
}
}
}
r1=max-x;//将找到的x两边值比较谁离x近。
r2=x-min;
if(r1>r2){//谁最近就输出。
printf("%d",min);
}
else
{
printf("%d\n",max);
}
return 0;
}

为什么出错了呢?


#include<stdio.h>
#include<math.h>
int main()
{
    int *p,ret,i=0,a[50],n,num,num1 ,x;
    scanf("%d",&n);//按要求扫描。 
    p=a;//将初始位置给予指针。 
    for(i=0;i<n;i++)
    {
        scanf("%d",&p[i]); 
    }
    scanf("%d",&x);
    num=abs(x-*p);
    num1=*p;
    for(i=1;i<n;i++)
    {
       if(num>abs(x-*(p+i)))
       {
           num=abs(x-*(p+i));
           num1=*(p+i);
       }
    }
        printf("%d\n",num1);
    
    return 0;
}

拜托你再进一步,把代码放进 ‘代码块’,然后整理好缩进。