c语言:从键盘输入10个整数,存入数组a中,计算a中数据的平均值v,再在a中找出与v最接近的数及其下标。

提示:最接近v的数可能>v也可能<v,若有多个这样的数,只需要找出任意一个。

第1个回答  推荐于2016-03-21
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "math.h"
void main()
{
int a[10],i,j,min;
float b[10],sum=0,average;
printf("请输入10个整数:");
for (i=0; i<10; i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
average=sum/10;
printf("\n平均数为:%f",average);
for (i=0; i<10; i++)
b[i]=fabs((a[i]-average));
min = 0;
for (j=1; j<10; j++)
{
if (b[j] < b[min])
{
min = j;
}
}
printf("\n与平均数最相近的是数是:%d",a[min]);
printf("\n它是第%d个数",min);
}本回答被提问者采纳
第2个回答  2009-10-09
#include<stdio.h>
#define N 10
main(){
int i,j,a[N],SUM=0;
int n1,n2,n,temp;
double ave=0;
printf("input 10 numbers:");
for(i=0;i<N;i++){
printf("\nNO.%d:",i+1);
scanf("%d",&a[i]);
SUM+=a[i];
}

for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}
while(N*a[i]>SUM) i--;
n1=N*a[i+1]-SUM;
n2=SUM-N*a[i];
n=n1>n2?i:(i+1);
ave=(double)SUM/N;
printf("\naverage is %f;\n最接近的数字是:%d",ave,n);
getch();
}
相似回答