在Fibonacci序列中使用switch语句

时间:2017-02-27 20:14:05

标签: c

我正在编写一个程序,使用递归计算给定整数的斐波纳契数。我创造了自己的功能'斐波那契'并使程序在循环中运行,如代码中所示。

该程序希望我使用switch语句来操作菜单(菜单是用户可以选择查找fibonacci或退出程序的两个选项的菜单),我仍然坚持如何使用switch语句为了使用菜单。

这是我到目前为止编写的代码

 #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);

1 个答案:

答案 0 :(得分:0)

来自Kernighan和Ritchie的“C编程语言”:

  

“switch语句是一个多方决策,用于测试表达式是否匹配多个常量整数值之一,并相应地进行分支。”

所以看起来应该类似于:

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

正如其中一条评论所暗示的那样,要么在开始时初始化局部变量,要么检查getchar()或scanf()调用的返回值,因为未初始化变量的值是不确定的。

如果你刚刚开始学习C,我建议你阅读我提到的那本书。它相对较短,有很多有用的例子。