gpt4 book ai didi

c - 接收到数组的浮点指针 malloc 数组

转载 作者:太空宇宙 更新时间:2023-11-04 05:49:25 24 4
gpt4 key购买 nike

我正在编写一段代码,它要求我使用 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;
}

我用来检查我的数组是否正确接收输入的第一个 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

最佳答案

一些更正的问题:

1)

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

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

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

2)

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

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

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

此类问题已在其他几个打印位置得到纠正。

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] );

更正的程序:

#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;
}

输出:

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

关于c - 接收到数组的浮点指针 malloc 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47745378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com