新手求帮助
随机产生n个50~100之间的整数,输出其中与平均值最接近的元素的值及下标。
介个的C代码怎么写啊
[解决办法]
#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);
}