1

たとえば、num1 に 2 を入力し、num2 に 3 を入力すると、2 番目の数値を入力するとすぐに 8 が出力されると予想されます。しかし、プログラムはもう 1 つの整数を入力することを期待しており、242 のような乱数を入力しただけで 8 が出力されます。つまり、結果には影響しません。私の質問は、なぜ 3 番目の入力があるのですか? ご協力ありがとうございました!

#include "stdafx.h"

int Power (int num1, int num2);

int main ()
{
    int a, b;
    puts ("Enter two numbers, a and b:\n");  
    scanf ("%i\n", &a);
    scanf ("%i\n", &b);
    printf ("%i\n", Power(a, b));
    return 0;
}

int Power (int num1, int num2)
{
    int sum=1;
    for (int i=1; i<=num2; i++){
        sum= sum*num1;
    }
    return sum;
}
4

3 に答える 3

3

newlines:\nをフォーマット文字列から削除するscanfか、単一のを使用しますscanf。例:

scanf("%i%i", &a, &b);

または:

scanf ("%i", &a);
scanf ("%i", &b);
于 2012-06-22T18:18:09.763 に答える
1

scanf()は必要ありません"\n"

scanf ("%i", &a);
scanf ("%i", &b);
于 2012-06-22T18:17:42.517 に答える
1

への呼び出しでフォーマット文字列から '\n' を削除する必要がありますscanf

于 2012-06-22T18:17:56.657 に答える