2017-02-27 6 views
0

現在、再帰を使用して与えられた整数のフィボナッチ数を計算するプログラムを作成中です。私自身の関数 'fibonacci'を作成し、コード内に見られるようにプログラムをループ上で実行させました。フィボナッチシーケンスでswitch文を使用する

私はswitch文を使ってメニューを操作したいと思っています(このメニューは、フィボナッチを見つけるか、プログラムを終了するかの2つのオプションがあります)、スイッチの使い方について固執しています文を使用してメニューを使用します。

ここで私はカーニハンとリッチーによる「プログラミング言語C」から、これまで

#include <stdio.h> 

int fibonacci(int num); 

int main(int argc, char const *argv[]) { 
int choice; 
int num; 
int sequence; 

printf("1) Calculate Fibonacci\n"); 
printf("2) Exit\n"); 
scanf("%d", &choice); 

if (choice == 1) 
{ 
    do 
    { 
    printf("Input integer n :\n"); 
    scanf("%d", &num); 

    if (num < 0) 
    { 
     printf("n should be a positive integer (n >= 1). Retry\n"); 
    } 
    } while (num < 0); 
} 

if (choice == 1 && num > 0) 
{ 
    printf("Fibonacci sequence of %d terms\n", num); 
+2

'switch' on' choice'です。 –

+1

'switch'文を使わずにコードが正常に動作することをお勧めします。 'scanf'からの戻り値をチェックして、入力があるかどうかを確認しません。代わりに、 'scanf'が失敗したときに不確定な未初期化変数' choice'と 'num'をチェックします。 –

答えて

0

を書いたコードです:

「switch文がするかどうかをテストするマルチウェイ決定であるが、式は固定整数値のいずれかと一致し、それに応じて分岐します。

だから、それは次のようになります。

while ((choice = getchar())!= EOF){ 
    switch (choice){ 
     case '1': 
      // calculate Fibonacci sequence 
      break; 
     case '2': 
      return 0; 
    } 
} 

、いずれかの初めに、ローカル変数を初期化したり、getchar関数()やscanf関数の戻り値をチェックすることを示唆しているコメントの1(AS)初期化されていない変数の値は不定であるため、呼び出しが行われます。

Cの学習を始めたばかりの方は、私が言及した本を読むことをお勧めします。比較的短く、参考になる例がたくさんあります。

+0

私は確かにそうです。この疑問を私に説明してくれてありがとう –

+0

@HelloWorld質問がもうなければ答えを受け入れてください –

関連する問題