我今天有这项任务,但我不太明白这个问题。 编写一个输出斐波纳契数的程序。这部分我理解我有这个让你输入一个数字,它会创建一个这个长度的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;
答案 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 ==
实际上,如果程序正在读取文件而不是标准输入,那么您只需要输入的代码。所以,这项任务现在听起来更加令人困惑。