C错误导致函数常量返回值

时间:2014-10-28 00:21:52

标签: c

当我呼叫getinfo()时,我得到一个带有1位数值的常数值8,带有2位数值的9,带有3位数值的10。等等。在函数中,值按预期打印,但是当尝试读取main方法中的值时,值如上所述。

有关为何发生这种情况的任何想法?

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <math.h>


int main(){
    float radius = 0;
    float height = 0;
    float cylvolume = 0;
    float spherevolume = 0;

    displaymyinfo();

    radius = getinfo();
    printf("\n r = %f", radius);

    height = getinfo();
    printf("\n h = %f", height);



    cylvolume = compute_cylinder_volume(radius, height);
    spherevolume = compute_sphere_volume(radius);


    printf("h = %f", height);

    printf("\n A cylinder with radius %f and height %f = %f cubic inches", radius, height, cylvolume);
    printf("\n Volume of sphere with radius: %f is %f cubic inches", radius, spherevolume);

    _getch();
    return 0;

}
int displaymyinfo(){
    printf("*********************\n");
    printf("*Info was here  *\n");
    printf("*and here*\n");
    printf("*even here     *\n");
    printf("*********************\n");
    return 0;
}

float getinfo(){
    float y = 0;
    do{
        printf("\n Enter a number: ");
        scanf("%f", &y);
    } while (y <= 0);

    printf("%f", y);
    return (y);
}

float compute_cylinder_volume(float r,float h){
    float vol = 0.0;
    vol = 3.14 * r * r * h;
    return vol;
}
float compute_sphere_volume(float rad){
    float vol = 0.0;
    vol = 4.0 / 3.0 * 3.14 * rad * rad * rad;
    return vol;
}

1 个答案:

答案 0 :(得分:2)

该行

    radius = getinfo();

在定义函数getinfo()之前出现。 C,作为一种有用的语言,将假定您打算定义一个返回整数的函数。你定义它以便稍后返回一个浮点数的事实不会阻止它出现这种信念。

添加

float getinfo();

高于main()的某个地方(或将main()移到底部)。