【问题标题】:How to divide all elements in an array by the same value?如何将数组中的所有元素除以相同的值?
【发布时间】:2020-10-28 19:57:29
【问题描述】:

这是我的代码。由于某种我无法弄清楚的原因,我没有得到正确的输出。 这是我得到的输出:

Before:
5.500000 6.500000 7.750000 8.000000 9.600000 10.360000
After:
1.100000 0.260000 0.062000 0.012800 0.003072 0.000663
#include <stdio.h>
#include <stdlib.h>

void divby5(float arr[], int size)
{
for (size = 0; size < 6; size++)
    arr[size] /= 5;
}

int main()
{
    float array[] = {5.5, 6.5, 7.75, 8, 9.6, 10.36};
    int i;
    printf("Before:\n");
    for (i = 0; i < 6; i++) {
        printf("%f ", array[i]); 
    }
    printf("\n");
    printf("After:\n");
    for (i = 0; i < 6; i++) {
        divby5(array, 6);
        printf("%f ", array[i]);

    }
    return 0;
}

【问题讨论】:

  • 你可能想要移动divby5(array, 6); 之前 for

标签: arrays c function


【解决方案1】:

这是您的直接问题:

for (i = 0; i < 6; i++) {
    divby5(array, 6);
    printf("%f ", array[i]);
}

基本上发生的事情是将每个元素除以 5,然后打印第一个元素,然后再次将每个元素除以 5,然后打印第二个元素,然后将每个元素除以 5再次等。

divby5 调用拉出循环:

divby5(array, 6);
for (i = 0; i < 6; i++)
  printf( "%f ", array[i] );

编辑

这是一个问题:

void divby5(float arr[], int size)
{
  for (size = 0; size < 6; size++)
     arr[size] /= 5;
}

size 参数告诉您数组中有多少个元素 - 您将这些信息丢弃并假设永远只有 6 个元素。相反,你应该把它写成

void divby5(float arr[], int size)
{
  for (int i = 0; i < size; i++ )
    arr[i] /= 5;
}

这样,这个函数可以用于任意大小的数组,而不仅仅是6。

【讨论】:

    【解决方案2】:

    从 for 循环中删除 divby5(array, 6); 并将其粘贴到 for 循环之前。
    在这种情况下,它将所有数字除以 n 次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      相关资源
      最近更新 更多