-1
double volume(double l,double w,double h);  
double area(double l,double w,double h);  

int main() {  
    double l,w,h,v,a`;  
    volume (3.0,1.5,2.0);  
    area(3.0,1.5,2.0);  
    printf("The Volume is %lf cubic meters and the area is %lf square meters.\n", v,a);  
    return 0;
}  

double volume(double l,double w,double h) {  
    double v;  
    v = l*w*h;  
    return v;
}  

double area(double l,double w,double h) {  
    double a;  
    a = (2*l*w) + (2*w*h) + (2*l*h);  
    return a;
}  

体积是2091994552961492532068352.000000立方米,面积是637485042878638687518720.000000平方米。

我目前正在获得上述输出(这显然是错误的,并且是垃圾值),我想知道我哪里出错了。我猜这是一个指针问题。如果您可以向我解释指针的基础知识,我将不胜感激。提前致谢。

4

4 回答 4

5

这根本与指针无关。您甚至没有在代码中使用任何指针。

您只是不分配返回值,因此打印未初始化变量的值。

这是固定代码:

int main() {  
    double v, a; 
    v = volume(3.0, 1.5, 2.0);  
    a = area(3.0, 1.5, 2.0);  
    printf("The Volume is %lf cubic meters and the area is %lf square meters.\n", v, a);  
    return 0;
}  

您也不需要其他两个函数中的变量 - 只需直接返回结果:

double volume(double l,double w,double h) {  
    return l*w*h;  
}  

double area(double l,double w,double h) {  
    return (2*l*w) + (2*w*h) + (2*l*h);  
}  
于 2012-05-03T20:31:56.840 回答
2

v并且a是未初始化的变量,它们可以包含任何值。我想你的意思是:

v = volume (3.0,1.5,2.0);
a = area(3.0,1.5,2.0);

它与指针无关。

于 2012-05-03T20:31:47.873 回答
1

您没有将返回值分配给局部变量。

v=volume (3.0,1.5,2.0);  
a=area(3.0,1.5,2.0);  
于 2012-05-03T20:32:02.697 回答
0

这就是为什么你应该初始化你声明的每个变量!

double volume(double l,double w,double h);  
    double area(double l,double w,double h);  

int main() {  
    double l,w,h,v,a`;  
    v = volume (3.0,1.5,2.0);  
    a = area(3.0,1.5,2.0);  
    printf("The Volume is %lf cubic meters and the area is %lf square meters.\n", v,a);  
    return 0;
}  

double volume(double l,double w,double h) {  
    double v;  
    v = l*w*h;  
    return v;
}  

double area(double l,double w,double h) {  
    double a;  
    a = (2*l*w) + (2*w*h) + (2*l*h);  
    return a;
}  
于 2012-05-03T20:33:33.770 回答