繁体   English   中英

为什么我的程序返回一个内存地址?

[英]Why does my program return a memory address?

我写了一个叫做averageFloat的程序,该程序应该接受一个数字的扫描输入。 这允许用户输入多个浮点输入,然后函数将这些输入取平均值。

但是,当我编译并运行程序时,它确实接受了我的输入,但返回了-1610612736。

我已经尝试过更改scanf的存储,我添加了一个指针,并包含了scanf将在main函数和averageFloat函数中调用的全局变量。

#include <stdio.h>

float averageFloat(int a);

int y;
float z; 

int main()
{
    int n;
    printf("Please input a number of floats you want to include "); 
    n = scanf("%d", &y); 
    averageFloat(n);

    return 0;
}

float averageFloat(int a){

    for(int i = 0; i < a; i++){
        printf("Please enter the float variables you want your program to average");
        scanf("%f", &z); 
        z += z;
    }
    printf("the average float is %d", z/a);
    return z / a; 
}

我希望这能得到我的输入n,比方说n = 5。

我希望能够输入5个浮点数,例如0.5、0.2、0.3、0.1和1.5,然后除以n

感谢您的阅读。

当您执行scanf("%f", &z); 您正在破坏z任何值。 您也没有检查scanf是否成功。

您应该遵循以下步骤:

float zz= 0.0;
scanf("%f", &zz); 
z += zz;

此外,完成后,您可以执行以下操作:

printf("the average float is %d", (int) z/a);
return z / a;

要么:

printf("the average float is %f", z/a);
return z / a; 

第一个截断为int%d ),第二个截断为float

您还应该检查a不为零。

您还应该使用:

averageFloat(y);

您的代码中有几个问题:

  • 使用scanf写入z变量,这也是您的求和变量。 基本上,每次阅读输入内容时,您都将覆盖总数

  • 将十进制数扫描到浮点变量中将导致意外结果。 需要更改scanf("%d",&z); scanf("%f",&z);

  • printf语句需要一个整数,并且您正在传递一个指向浮点数的指针。 因此需要更改printf("the average float is %d", z/a); printf("the average float is %f", z/a);

  • 变量y需要传递到averageFloat函数,而不是前一行中scanf函数的返回值。

首先,变量不应该是全局的。 其次,添加到z然后阅读。 您可能要调用函数averageFloat(y)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM