用getchar输出Fibonacci数?

时间:2016-07-06 21:20:07

标签: c++ fibonacci getchar

我今天有这项任务,但我不太明白这个问题。 编写一个输出斐波纳契数的程序。这部分我理解我有这个让你输入一个数字,它会创建一个这个长度的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;
}

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

  

&#34;使用while循环和两个或三个整数变量,让程序在每次用户输入密钥时向屏幕输出一个新的Fibonacci数字(使用getchar()!)。&#34;

3 个答案:

答案 0 :(得分:0)

斐波纳契数是它之前的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。

答案 1 :(得分:-1)

尝试使用

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

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

答案 2 :(得分:-2)

无论谁给你这个作业,要么不知道C ++是如何运作的,也不知道英语是如何运作的。

如果他们在按键的那一刻就意味着这一点(顺便说一句,你不能输入一个键),那么斐波纳契数应该出现,然后this question就是给你的

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

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

== CORRECTION ==

实际上,如果程序正在读取文件而不是标准输入,那么您只需要输入的代码。所以,这项任务现在听起来更加令人困惑。