3

任意の数を選択して、それ自体を任意の数の累乗に結び付けることができるプログラムを作成しました。コードは、特定の部分に到達するまで問題なく動作します。そこで文字を入力して、コードの次の部分に移動する必要があります。これが私が意味することです:

#include <stdio.h>

int power (int x, int y);

int
power (int x, int y)
{
    int i, b;

    i = 1;
    scanf ("%d", &x);
    scanf ("%d", &y);
    b = x;

    for (i = 1; i < y; i++) {
        x *= b;
    }
    return x;
}

int
main ()
{
    int base, i;

    printf ("Type the base number:  ");
    scanf ("%d", &base);

    printf ("Type the power:  ");
    scanf ("%d", &i);

    int final = power (base, i);

    printf (" The power is %d ", final);

    return 0;
}

したがって、int final=power(base,i) まではすべてスムーズに実行されますが、答えを出力するコードの次の部分は実際には出力されません。それが印刷される唯一の方法は、キーボードの任意の文字を入力してからリターンキーを押すことです. このグリッチを修正するための提案は、私はcにかなり慣れていません。

4

3 に答える 3

3

power関数にはscanfs が含まれています。ユーザーの入力を待っています。

scanf("%d",&x);
scanf("%d",&y);

xそれは本質的に、y入力した数字で塗りつぶすことを意味します。

scanf ドキュメント

于 2013-08-01T21:07:56.617 に答える
-1

関数パワーのコードでは、「scanf」を2回呼び出し、これらの呼び出しと関数に渡された引数を上書きします。そこにある「scanf」呼び出しを削除します。

このようにコードを変更すると、すべてが明確になります。

int power(int x, int y)
{
        int i,b;
        i=1;

        printf("before scanf no 1\n");
        scanf("%d",&x);
        printf("before scanf no 2\n");
        scanf("%d",&y);
        b=x;

        for(i=1;i<y;i++)
        {
                x*=b;

        }
        return x;
}
于 2013-08-01T21:16:35.507 に答える