1

ここでCを学ぶと、関数プロトタイプの使用方法についてかなり混乱しています。

私は主に関数をmainに呼び出すのに問題があります。これはメモリ内にあるものをすべて印刷するだけなので、ここで何かが台無しになっていると確信しています。

お手伝いありがとう。

#include <stdio.h>


double source_volt(double vs);


int main()
{
    double source_volt(double vs);
    double vs;
    printf("%lf", vs);
    return 0;
}


double source_volt(double vs)
{

    int valid = 0;
    do
    {
        printf("Enter source voltage Vs in volts: ");
        scanf("%lf", &vs);

        if (vs < 0 || vs > 100)
        {
            valid = 0;
            printf("Please enter a number between 0 and 100.\n");
        }
        else
            valid = 1;
    }while(!valid);
    return vs;
}
4

2 に答える 2

3

これはあなたのために働いていないものです:

int main()
{
    double source_volt(double vs); //You already declared the function, 
                                   //you dont need the doubles
    double vs;
    printf("%lf", vs);
    return 0;
}

その代わり:

int main()
{
    double vs;
    vs = double source_volt(vs); //The double keyword is gone
    printf("%lf", vs);
    return 0;
}

しかし、実際には、ソースボルトでの議論はまったく必要ありません。

その関数を次のように書き直すことができます。

double source_volt(void)
{
    double vs;
    int valid = 0;
    do
    {
        printf("Enter source voltage Vs in volts: ");
        scanf("%lf", &vs);

        if (vs < 0 || vs > 100)
        {
            valid = 0;
            printf("Please enter a number between 0 and 100.\n");
        }
        else
            valid = 1;
    }while(!valid);
    return vs;
}
于 2012-05-08T21:43:01.353 に答える
2

main内の行double source_volt(double vs);は、実際に関数を再宣言しています。そしてvs、メインでは初期化せずに使用されています。

定義されている関数source_voltは、次のように呼び出されます。

double vs;
vs = source_volt( vs );

ただし、doubleを関数に渡しても何も得られないことも指摘しておきます。でローカル変数を宣言しsource_voltて返すと、同じ結果が得られます。

于 2012-05-08T21:43:29.730 に答える