【问题标题】:output Fibonacci number with getchar?用getchar输出斐波那契数?
【发布时间】:2016-07-06 21:20:06
【问题描述】:

我今天有这个作业要交,但我不太明白这个问题。 编写一个输出斐波那契数列的程序。这部分我知道我有这个,它可以让你输入一个数字,它会创建一个该长度的 fubonacci 序列。

typedef unsigned long long ull;
int main() {
int N;
cout << "Enter the N : ";
cin >> N;
ull f0 = 0, f1 = 1;
ull f = f1;
cout << "The Sequence of Fibonacci Numbers : " << endl;
cout << f0 << " ";
cout << f1 << " ";

for (int i = 1; i < N; i++) {
cout << f << " ";
f0 = f1;
f1 = f;
f = f0 + f1;
}
cout << endl;
return 0;
}

我不明白这是作业的这一部分……你们中的任何人都能理解这一点吗?

“使用 while 循环和两个或三个整数变量,让您的程序在每次用户输入键时向屏幕输出一个新的斐波那契数(使用 getchar()!)。”

【问题讨论】:

  • 你感到困惑并不奇怪。那个废话,对不起代码,不是为了阅读而写的。
  • 听起来您需要在 for 循环中战略性地放置一个 cin.get()。你可以问你的教授,为什么你要使用getchar()
  • 您在打印0 1 1 ... 吗?不应该是1 1 2 ...吗?
  • 而不是用户输入N,你应该开始打印斐波那契数,一次1个。然后等待用户输入内容并打印下一个数字,依此类推。

标签: c++ fibonacci getchar


【解决方案1】:

斐波那契数将是它之前的 2 个元素的总和。

因此:

 int main(){
      char c = 'a';
      int curr=0, next=1;
      while (c != 'q'){
           c = getchar(); //This just pauses and waits for user input.  Exits if user hits q.
           cout << curr << endl;
           next = curr + next;
           curr = next - curr;
      }
 }

您应该考虑的是在这种情况下如何避免使用临时变量(这就是他说 2 或 3 个变量的原因)。请注意,我设置在 curr + next 旁边。然后我需要将 curr 设置为等于 next 的旧值,它已经消失了——但它并没有真正消失,它只是添加了 curr。

【讨论】:

  • 回答一个问题,但不是 OP 提出的问题。 getchar 怎么样?为什么 OP 需要它以及一个 while 循环和几个整数?
  • 对不起,我不明白你的意思。他的问题是“你们中的任何人都能够理解这一点吗?”关于“使用while循环和两个或三个整数变量,让您的程序在每次用户输入键时向屏幕输出一个新的斐波那契数(使用getchar()!)。”。你认为他的参考意义是什么?编辑:他特别需要使用 getchar() 的原因仅仅是因为教授决定用它来完成循环,对吗?
  • 问题:OP应该如何编写这个程序?你编写了程序。这是一个很好的程序。很好很清楚,不需要太多解释。我对它没有任何问题,除了 OP 现在将复制和粘贴它并且什么都学不到。
【解决方案2】:

尝试使用

c=getchar();
if(c!='/n')
  getchar();

在将进行斐波那契计算的while循环的开头。第二个 getchar() 用于处理换行符,否则会导致输入两个字符,因此即使用户只输入一个键/字符,也会打印两个斐波那契数。

【讨论】:

    【解决方案3】:

    给你这个作业的人要么不知道 C++ 是如何工作的,要么不知道英语是如何工作的。

    如果他们的意思是在你按下一个键的那一刻(顺便说一下,你不能输入一个键),斐波那契数应该出现,那么this question 是给你的。

    如果他们的意思是在按 Enter 后(也就是刷新输入的时候)数字应该出现的次数与字符的数量一样多(包括空格),那么:

    while(getchar() != EOF) //print next fibonacci number
    

    == 更正 ==

    实际上,如果程序正在读取文件而不是从标准输入中读取,您只需要我输入的那段代码。所以,这个作业现在听起来更加混乱了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-15
      • 2013-03-04
      • 2015-06-05
      • 2014-05-23
      • 2014-05-03
      • 1970-01-01
      相关资源
      最近更新 更多