【发布时间】:2010-11-09 16:02:38
【问题描述】:
我需要设置数组的大小。之后,我开始输入数字来挖掘这个数组。在此过程中,我计算总和以便稍后计算平均值。
现在我有一个数组和平均值,我需要找到与平均值差异最小的元素。
点赞:array size = 3input = 1input = 2input = 3
average = 2
计数
abs( 1 - 2 ) = 1abs( 2 - 2 ) = 0abs( 3 - 2 ) = 1
因此,最小差异具有值为2 的元素。在程序结束时,我需要从数组及其索引中取出该元素。
到目前为止,我想出了:
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char **argv )
{
int n = 0, i = 0;
double average = 0;
int sum = 0;
double tmp = 0;
double min = 0;
int index = 0;
int *a;
double *b;
printf("Amount of elements = ");
scanf("%d", &n);
if( 0 == n )
{
return 0;
}
if( n < 1 || n > 10 )
{
return 0;
}
a = ( int* )malloc( sizeof( *a ) * n );
b = ( double* )malloc( sizeof( *b ) * n );
while( i < n )
{
printf("Input number: ");
scanf("%d", &a[i]);
sum += a[i];
i++;
}
average = ( double )( sum / n );
printf("Average = %.3lf\n", average);
for( i = 0; i < n; i++ )
{
tmp = abs( ( double )( a[ i ] ) - average );
b[ i ] = tmp;
}
/* for( i = 0; i < n; i++ )
{
} */
free( a );
free( b );
return 0;
}
更新:我很抱歉。问题是如何在不让这个简单的程序变得更复杂的情况下完成最后一部分。
谢谢大家的帮助。
【问题讨论】: