【发布时间】:2021-09-08 14:39:41
【问题描述】:
这是我正在使用的当前代码:
#include<stdio.h>
int main()
{
//1
int NUM[] = {1,2,3,4,5,6,7,8,9,10};
int i,j,k;
int len = sizeof NUM / sizeof * NUM;
//3
int ODD[len];
int EVEN[len];
//4
j = 0;
k = 0;
//5
int sum = 0;
int average;
for(i = 0; i<10 ; i++){
//5
if(NUM[i]%2 == 0){
EVEN[j] = NUM[i];
j++;
}else{
ODD[k] = NUM[i];
k++;
}
}
//6
printf("Even numbers : ");
for(i = 0;i<j; i++){
printf("%d ",EVEN[i]);
}
printf("\nOdd numbers : ");
for(i = 0;i<k; i++){
printf("%d ",ODD[i]);
}
printf("\nFrequency of EVEN array is :");
for(i = 0;i<j; i++){
sum = sum + EVEN[i];
average = sum / j;
printf("%d ",average);
}
printf("\n");
}
输出:
Even numbers : 2 4 6 8 10
Odd numbers : 1 3 5 7 9
Frequency of EVEN array is :0 1 2 4 6
我要做的是将生成的 EVEN[i] 数组乘以 0.02,然后找到该新数组的均值/平均值并将其反转。在公式中,它将是 1 /mean(EVEN[i]*=0.02)。我坚持使用提到的操作来操作 EVEN[i] 数组。
编辑 1: 我的平均代码:
double Arr[i];
for(i=0;i<j;i++){
Arr[i] = EVEN[i]*0.02;
printf("%f ", Arr[i]);
}
printf("\nAverage of EVEN array is :");
size_t n = sizeof(Arr)/ sizeof (Arr[0]);
for(i = 0;i<j; i++){
sum = sum + Arr[i];
}
average = sum / n;
// printf("%d ",n);
printf("%f ",average);
return 0;
}
输出:
Average of EVEN array is :0.000000
不知道为什么显示为 0。
【问题讨论】:
-
看起来不像 C!当您将它们声明为
int ODD[len];时,C 不支持动态数组大小 -
@ShipluMokaddim:这是自 C99 以来的 新 C 功能,称为 VLA :)
-
你需要
double EVEN[]而不是int -
@pmg: "new" :-) 那个时代的新生儿现在正在编写自己的编程语言。
-
我一定是老了。 C99中的99已经22岁了!
标签: arrays c average element multiplication