读书人

生手求帮助

发布时间: 2012-08-08 14:32:45 作者: rapoo

新手求帮助
随机产生n个50~100之间的整数,输出其中与平均值最接近的元素的值及下标。
介个的C代码怎么写啊

[解决办法]

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <math.h>int main(int argc, char** argv){    int i = 0;    int n = 0;    int* numbers;    int sum = 0.0;    double average = 0.0;    int temp = 0.0;    double difference = 100.0;    int position = 0;        printf("请输入要产生的随机数的个数:\n");    scanf("%d", &n);    numbers = (int*)malloc(n * sizeof(int));    srand((unsigned)time(NULL));    for(i = 0; i < n; ++i)    {        *(numbers + i) = 50 + rand() % 51;        sum += *(numbers + i);    }    average = (double)sum / (double)n;    printf("平均值为:%lf\n", average);    for(i = 0; i < n; ++i)    {        temp = abs(average - *(numbers + i));        if(temp < difference)        {            difference = temp;            position = i;        }    }    printf("最接近平均值数字是:%d\n", *(numbers + position));    printf("其下标是:%d\n", position);    return 0;}
[解决办法]
#include<stdio.h>
#include<time.h>
#include"conio.h"
#include<stdlib.h>

int main()
{
int n=10,sum=0;
srand((unsigned)time(NULL));

int a[10];
for(int i=0;i<n;i++)
{
a[i]=50+rand()%51;
sum+=a[i];
printf("%d\n",a[i]);
}
printf("sum=%d\n",sum);


double ave=((double)sum)/(double)n;
printf("ave=%f\n",ave);
double p=0,zuijiejinshu=0;
for(int k=0;k<n;k++)
{
double q,s ;
if(a[k]<=ave)
q=ave-a[k];
else
q=a[k]-ave;

if(q<=s)
zuijiejinshu=a[k];
s=q;

}
printf("%f",zuijiejinshu);
}






读书人网 >C语言

热点推荐