1

Cの学習を始めたばかりなので、なぜこれが起こっているのかわかりません。

#include <stdio.h>

int square(int x);

int main(int argc, const char * argv[])
{
    printf("Enter a number");
    int userNum;
    scanf("%d", &userNum);
    int result = square(userNum);
    printf("The result is %d", result);

}

int square(int x){
    int result = x*x;
    return result;
}

It would ask for a number but then nothing would happen after I input. If I were to take the scanf out and put square(10) or something, the code will run and finish.

4

2 に答える 2

3

gccと...の両方を使用して期待どおりにコンパイルおよび実行され、clangより明確にするために (おそらく他のテキストが答えを見るのを妨げているため)、出力先に新しい行を追加しますstdout

int main( void ) {
    printf("Enter a number: ");

    int userNum;

    scanf("%d", &userNum);

    int result = square(userNum);

    printf("\nThe result is: %d\n", result);

    return 0;
}

端末でテストしている場合 (および入力をパイプしない場合) は、scanf(%dプレースホルダーを使用して) 数字ではない次の文字まで整数を読み取ることを思い出してください。したがって、キーボードで 10 を入力してリターン (またはエンター) する必要があります。それ以外の場合は、プログラムに入力ファイルをパイプします。

10

... 次のコマンドを使用します。

./a.out < input.txt
于 2013-08-13T01:42:17.663 に答える
0

メイン関数は、戻り値の型が " int " であると言っていますが、値を返していません。

main 関数の最後の右中括弧の直前にステートメント return 0 を追加するだけです。

それはうまくいくはずです。ここに同じプログラムがあり、正常に動作します。

http://ideone.com/H3Izqh

#include <stdio.h>

int square(int x);

int main(int argc, const char * argv[])
{
    printf("Enter a number");
    int userNum;
    scanf("%d", &userNum);
    int result = square(userNum);
    printf("\nThe result is %d", result);
    return 0;   //NOTICE THIS STATEMENT
}

int square(int x){
    int result = x*x;
    return result;
}
于 2013-08-13T04:58:42.913 に答える