【问题标题】:i cant find geometric average in c [closed]我在c中找不到几何平均值[关闭]
【发布时间】:2018-01-26 21:12:27
【问题描述】:
#include <stdio.h>
#include <locale.h>
#include <conio.h>
#include <string.h>
#include <math.h>

int main()
{

 int array[5];
 int x;
 int max;
 int y;
 float k;

 printf("Enter capacity of array")
 scanf("%d",&y);

 for(x=0;x<y;x++)
    {
     printf("Enter the numbers:");  
     scanf("%d",&array[x]);
     max*=array[x]; 
    }

  k=pow(max,(1/y) );

  printf("%d\n",max); 
  printf(" %f",k);

 getch();
 }

大家好,我想求几何平均值,但我总是得到 k=1 我知道这是简单的代码,但我看不到问题,谁能帮助我?

【问题讨论】:

  • max*=array[x]; 中,变量max 未初始化,因此结果将是不确定的。除了任何算法问题,它应该是int max = 1;
  • 阅读 C 中的整数除法。
  • 学习使用你的平台/工具链调试器

标签: c math average


【解决方案1】:

对于int y,表达式1/y在大多数情况下等于0...

更准确地说,在所有情况下,除了y 为 -1 或 0 或 +1 时。

因此,您可能希望首先将其更改为 1.0/y...

【讨论】:

  • P.S.:变量 max 甚至没有在你的代码中初始化,所以我猜你还有一大堆其他问题......
【解决方案2】:

看看这个。

#include <stdio.h>
#include <math.h>
int main()
{
    double array[5];
    int max = 1, y;
    printf("Enter Capacity of Array:\n");
    scanf("%d", &y);
    for (int i = 0;i < y;i++)
    {
        printf("Enter the %d Number:\n",i+1);
        scanf("%lf", &array[i]);
        max *= array[i];
    }
    printf("Multiplication Of Array = %d\n\n", max);
    printf("Geomteric Mean = %0.2lf\n", pow(max, (1.0/y)));
    getch();
}

【讨论】:

  • 那个数组[5] 会是个大问题....
  • 怎么样?你能解释一下吗
  • 如果他们要输入 6 个项目怎么办?你已经溢出了数组。
  • 我只是举例说明了他如何做到这一点..仅此而已。他正在编程,那么他应该知道如果他输入的数字超过 5 个,它将显示垃圾输出。
【解决方案3】:
#include <stdio.h>
#include <conio.h>
#include <math.h>

int main()
{
int x;
int max = 1;
int y;
float k;

printf("Enter capacity of array");
scanf("%d",&y);
int array[y];

for(x=0;x<y;x++)
    {
    printf("Enter the %d number:",x+1);  
    scanf("%d",&array[x]);
    max*=array[x]; 
    }

k=pow(max,(1.0/y) );

printf("%d\n",max); 
printf("%f",k);
getch();

}

希望这会有所帮助

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多