浮点指针malloc数组接收到数组中

0 c arrays malloc

我正在编写一个代码,需要我使用 malloc 函数,将输入输入到数组中,确定并打印平均值以及每个数组值与平均值的关系。这是我的代码

#include <stdio.h>
#include <stdlib.h>

int main (){
  int i, n;
  float* numbers;
  float sum, average;
  sum = 0;
  printf("How many numbers? ");
  scanf("%d", &n);
  numbers = (int*)malloc(n * sizeof(int));
  printf("Enter %d decimal numbers\n", n);

for(i = 0; i < n; i++)
{

    scanf("%f", &numbers[i]);
    printf("%f\n", &numbers[i]);
    sum = sum + numbers[i];
}

printf("%f\n", &sum);
 average = sum / n;
 printf("The average was %f\n", &average);
 for(i = 0; i < n; i++)
    {
    if (numbers[i] < average)
        printf("%f is less than the average\n" , &average);
    else if (numbers[i] > average)
        printf("%f is less than the average\n" , &average);
    else
        printf("%f is average\n" , &average);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我用来检查我的数组是否正确接收输入的第一个 for 循环中的 print 语句,正如我的输出所示,它没有正确接收输入,我的问题是为什么我的数组没有接收到值?

How many numbers? 4
Enter 4 decimal numbers
4
0.000000
4
0.000000
4
0.000000
4
0.000000
0.000000
The average was 0.000000
0.000000 is average
0.000000 is average
0.000000 is average
0.000000 is average
Run Code Online (Sandbox Code Playgroud)

sg7*_*sg7 5

修正了一些问题:

1)

numbers = (int*)malloc(n * sizeof(int)); 
Run Code Online (Sandbox Code Playgroud)

float. int 的内存分配已替换为不需要的 Cast分配。

numbers = malloc(n * sizeof(float));
Run Code Online (Sandbox Code Playgroud)

2)

 printf("%f\n", &numbers[i]);
Run Code Online (Sandbox Code Playgroud)

目的不是打印指向它的指针,number[i]而是打印它number[i]本身。

printf("%f\n", numbers[i]);
Run Code Online (Sandbox Code Playgroud)

其他一些印刷地点的此类问题已得到纠正。

3)最终打印已更正,逻辑上程序要求打印而numbers[i]不是average

if (numbers[i] < average)
        printf("%f is less than the average\n" , numbers[i] );
    else if (numbers[i] > average)
        printf("%f is more than the average\n" , numbers[i] );
Run Code Online (Sandbox Code Playgroud)

修正后的程序:

#include <stdio.h>
#include <stdlib.h>

int main (){
  int i,n;

  float* numbers;
  float sum, average;
  sum = 0;

  printf("How many numbers? ");
  scanf("%d", &n);

  numbers = malloc(n * sizeof(float));

  printf("Enter %d decimal numbers:\n", n);

  for(i = 0; i < n; i++)
  {
    scanf("%f", &numbers[i]);

    printf("%f\n", numbers[i]);

    sum = sum + numbers[i];
  }

  printf("%f\n", sum);

  average = sum / n;
  printf("The average was %f\n", average);

  for(i = 0; i < n; i++)
  {
    if (numbers[i] < average)
        printf("%f is less than the average\n" , numbers[i] );
    else if (numbers[i] > average)
        printf("%f is more than the average\n" , numbers[i] );
    else
        printf("%f is average\n" , average);
  }

  return 0;
}   
Run Code Online (Sandbox Code Playgroud)

输出:

How many numbers? Enter 4 decimal numbers:
2
10
5
8
2.000000
10.000000
5.000000
8.000000
25.000000
The average was 6.250000
2.000000 is less than the average
10.000000 is more than the average
5.000000 is less than the average
8.000000 is more than the average
Run Code Online (Sandbox Code Playgroud)

  • 您应该解释您更改的内容以及原因,而不是发布仅代码的答案 (2认同)