0

貪欲なアルゴリズムを作成しようとしていますが、次のエラーが発生します。

greedy2.c:27:1: error: control reaches end of non-void function
      [-Werror,-Wreturn-type]
}
^
1 error generated.

このコードで:

int man(int argc, char* argv[])
{

  float amount;
  do
    {
      printf("Input dollar amount owed:\n");
      amount = GetFloat();
    }
  while (amount <= 0);    
  int coins = 0;
  while (amount >= 0.25);
  {
    amount = amount - 0.25;
    coins++;
  }
  printf("Number of coins to use: %d\n", coins);

}

中括弧の何が問題なのですか?どうすれば修正できますか?

4

4 に答える 4

4

中括弧に問題はありません。問題は、メインを int.. を返すと宣言したことですが、何も返していません。

コンパイラ フラグを指定してコンパイルすると、-Wall何かを返すと定義した関数から何かを返さないと、コンパイラがエラーを出します。

追加するだけです:

  return 0; // before the last bracket

また、その int main(int argc, char* argv[]){..ではないint man(int argc, char* argv[]){

于 2013-10-29T21:51:31.807 に答える
3

質問に簡単に答えるには、次を追加します。

return 0;

の終了前にmain()

名前にも誤字があります。それはおそらくmain、ではありませんman

より長い答えを得るためにmain、整数 ( int)を返すように定義しreturnましたが、最後にステートメントがないため、何も返されません。

于 2013-10-29T21:51:33.223 に答える
1

関数でこれを行っていると思いますmain()。関数名にタイプミスがあります。戻り値の型は関数から何かをする必要main()があるので。関数の最後にint言います。return 0; //Successmain()

于 2013-10-29T21:52:01.653 に答える
1

唯一の問題は単純なタイプミスであり、そうでmain()はありませんman()

これは main 関数の最後でも正しい方法return 0ですが、コードが機能しない理由を尋ねましたが、それは理由ではありません。私は常に C プログラムを実行するべきではありませんが、めったに実行することはありませんreturn 0。また、カスタム関数GetFloatが現在のコードと同じディレクトリにあることを確認してください。そうしないと、エラーが発生し、それも機能することを確認してください。

それがあなたの意図であれば、引き続き int man() を実行できますが、それでも int main 関数が必要であり、次のように man 関数を呼び出す必要があります。

int main()
{
man();
return 0; //This isn't crucial, code will still run
}
于 2013-10-29T21:59:18.480 に答える