用C语言求10个数中最接近平均值的数,要求第一行显示这10个数,第二行显示最接近的数

for(i=0;i<10;i++)scanf("%d",&array[i])
{
for(i=0;i<10;i++)
{
printy("%d",array[i])
}
for(i=0;i<10;i++)
{s=s+array[i];
k=s/10; 先计算出平均数
}
for(i=0;i<10;i++)
f=array[i]-k
for(c=i+1;c<10;c++)
j=array[c]-k 这里我的想法是用10个数减去平均数K然后用冒泡法排序进行比较,选出最小,最接近零的数,这样就达到目的了,但是这里好像会出现负数,怎么求绝对值?后面的弄不来了,才学C语言两天,只会stdio.h里面的库函数,如果要用其它的库函数麻烦给说下函数的功能,

回答楼主如下:

绝对值可以用fabs,但是不用这样麻烦,可以简单的判断一下是否为负,如果是,乘以-1取其相反数就行啊 :)

我写的程序如下,调试完毕,请楼主参考~希望有用~~

#include "stdio.h"
#include "stdlib.h"

void main()
{
int i;
int number[10], pos = 0;
int total = 0;
double average, mindelta, delta;

for(i=0; i<10; i++)
{
printf("please input the number of (%d) : ", i+1);
scanf("%d", &(number[i]));

total += number[i];
}

average = (double) total;
average /= 10.0;

mindelta = average - number[0];
if(mindelta < 0)
mindelta *= -1;

for(i = 1; i < 10; i++)
{
delta = average - number[i];
if(delta < 0)
delta *= -1;

if(delta < mindelta)
{
pos = i;
mindelta = delta;
}
}

printf("The average value is %.2f, and the %d one (%d) is the nearest.\n",
average, pos+1, number[pos]);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-06
#include<stdio.h>
main()
{
int i,s=0,k,min,min1=65525,min2=65525,array[10];
for(i=0;i<10;i++) scanf("%d",&array[i]);
for(i=0;i<10;i++) printf("%d ",array[i]);
for(i=0;i<10;i++) {s=s+array[i];};
k=s/10; // 先计算出平均数
for(i=0;i<10;i++)
{
if(array[i]>k)
{
array[i]=array[i]-k;
if(min1>array[i]) min1=array[i];
}
else
{
array[i]=k-array[i];
if(min2>array[i]) min2=array[i];
};
}
if(min1<min2)min=min1+k;
else min=k-min2;
printf("\n%d\n",min);
}
已测试可以运行,不过当两个数同样接近平均值时输出的是小的那个,只用了stdio.h.本回答被提问者采纳
第2个回答  2011-04-06
for(i=0;i<10;i++)
scanf("%d",&array[i])
for(i=0;i<10;i++)
printf("%d",array[i])
for(i=0;i<10;i++)
{s=s+array[i];
k=s/10; 先计算出平均数
}
for(i=0;i<10;i++)
{if ( array[i]>k )
array[i] =array[i]-k;
else
array[i]=array[i]-k;
}
min= array[0];
for(c=1;c<10;c++)
if(min>array[c])
min=array[c];
printf(''%d\n'',min);
第3个回答  2011-04-06
加个#include<math.h>
绝对值就是abs( 一个变量 );
都用不到楼上的子函数一片一片的很复杂
第4个回答  2011-04-06
大家帮忙看看我提问的问题,谢谢了
相似回答