输出斐波那契数与 getchar

output Fibonacci number with getchar?

本文关键字:getchar 输出      更新时间:2023-10-16

我今天有这个作业到期,但我不太明白这个问题。编写一个输出斐波那契数的程序。我知道这部分我有这个,它可以让您输入一个数字,它将创建一个该长度的 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()

波那契数将是它前面的两个元素的总和。

因此:

 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。

尝试使用

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

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

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

如果他们的意思是,从字面上看,当你按下一个键的那一刻(顺便说一下,你不能输入一个键),斐波那契数应该出现,那么这个问题就是给你的。

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

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

== 更正 ==

实际上,如果程序正在读取文件而不是从标准输入中读取,则只需要我键入的代码段。所以,这个作业现在听起来更令人困惑。