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

他の 2 つの関数にも変数は必要ありません。結果を直接返すだけです。

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 に答える