C语言问题!!!求助: 输入一组数据,和一个数,求出这个数和数据中的每个数的差的绝对值最小的数

1.输入一组数据,和一个数,求出这组数种和这个数差的绝对值最小的数x1,把绝对值赋给y【0】;
2.然后用去掉x1后的数据代替一组数据,用x1代替一个数,
3.回到第一步,这组数只剩一个数据。
比如输入
1 9 11 19
10
输出
1 2 8 18
//从10开始,10-9或10-11的绝对值最小,为1,y[0]=1;
数据变为 1 9 19
11
从11开始,11-9最小为2,y[1] = 2;
数据变为 1 19
11
.........最后y[] = {1,2,8,18}

程序如下,调试OK!希望可以帮助你
#include<stdio.h>
#include<math.h>
void main()
{
int a[10],c[10],d[10];
int b,num,i,j,m;
printf("请输入数组的个数,<10\n");//这边是输入你的数组有几个数的 输入4
scanf("%d",&num);
for(i=0;i<num;i++)
{
printf("请输入数组a[%d]的值",i);
scanf("%d",&a[i]); //这里接收数组的值1 9 11 19 一个一个输入
}
printf("请输入对比数");
scanf("%d",&b); //这里输入10
for(m=0;m<num;m++)//以下是循环运算
{
j=0;
c[0]=abs(a[0]-b);
for(i=1;i<num-m;i++)
{
c[i]=abs(a[i]-b);
if(c[i]<c[j])
j=i;
}
d[m]=c[j];
b=a[j];
for(i=j;i<num-m;i++)
a[i]=a[i+1];
}
for(i=0;i<num;i++)
{
printf("数组d[%d]的值为%d\n",i,d[i]);//输出
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-15
好吧~就是下面这个~